public void AddedChild_HasParentAndRootAsParent() { VFSDirectory parent = new VFSDirectory(); VFSDirectory child = new VFSDirectory(); parent.AddDirectory(child); Assert.ReferenceEquals(parent.Root, child.Root); Assert.ReferenceEquals(parent, child.Parent); }
public static void UpdateVFS() { FATDirectoryEntry *root = (FATDirectoryEntry *)(uint)Heap.alloc((uint)(sizeof(FATDirectoryEntry) * 16)); byte *name = (byte *)Heap.alloc(15); filesystem_root_node.host.host.ReadBlock(filesystem_root_node.address, 1, (byte *)(uint)root); rootDir = new VFSDirectory(); rootDir.address = filesystem_root_node.address; rootDir.name = (byte *)Heap.alloc(15); Utils.memcpy(rootDir.name, name, 15); if (!Utils.isChar(rootDir.name[0])) { rootDir.name[0] = filesystem_root_node.host.mountPoint; rootDir.name[1] = 0; } Console.WriteLine(rootDir.name); for (int d = 2; d < 16; d++) { Utils.memcpy(name, (byte *)(root) + (sizeof(FATDirectoryEntry) * d), 8); Utils.memset(name + 8, 0, 7); Utils.strDepad(name, 8); if (Utils.isChar(name[0]) && Utils.strContains(name, "~") == -1 && Utils.strLen(name) > 0) { uint firstFileCluster = (uint)((root[d].firstClusterHi << 16) | root[d].firstClusterLow); if (root[d].getEntryType == EntryType.Directory) { VFSDirectory dir = new VFSDirectory(); dir.parent = rootDir; dir.address = firstFileCluster; dir.name = (byte *)Heap.alloc(15); Utils.memcpy(dir.name, name, 15); rootDir.directories.Add(dir); UpdateVFSEnumerateDirectory(filesystem_root_node.address + firstFileCluster - 2, dir); Console.WriteLine("Found a directory"); } else if (root[d].getEntryType == EntryType.File) { VFSFile fil = new VFSFile(); fil.address = firstFileCluster; fil.name = (byte *)Heap.alloc(15); fil.size = (int)root[d].size; Utils.memcpy(fil.name, name, 15); rootDir.files.Add(fil); Console.WriteLine("Found a file"); } } } Heap.free(name); Heap.free((byte *)(uint)root); }
public void AddDirectory_WhichAlreadyExists() { VFSDirectory parent = new VFSDirectory(); VFSDirectory child1 = new VFSDirectory() { Name = "child" }; VFSDirectory child2 = new VFSDirectory() { Name = "child" }; parent.AddDirectory(child1); parent.AddDirectory(child2); }
public void NewDirectory_ShouldBeRoot() { VFSDirectory newDirectory = new VFSDirectory(); Assert.ReferenceEquals(newDirectory, newDirectory.Root); }