public void it_uses_composite_pattern() { // Arrange var root = new DirectoryItem("development"); var proj1 = new DirectoryItem("project1"); var proj2 = new DirectoryItem("project2"); root.Add(proj1); root.Add(proj2); proj1.Add(new FileItem("p1f1.txt", 2100)); proj1.Add(new FileItem("p1f2.txt", 3100)); var subDir1 = new DirectoryItem("sub-dir1"); subDir1.Add(new FileItem("p1f3.txt", 4100)); subDir1.Add(new FileItem("p1f4.txt", 5100)); proj1.Add(subDir1); proj2.Add(new FileItem("p2f1.txt", 6100)); proj2.Add(new FileItem("p2f2.txt", 7100)); // Act _testOutputHelper.WriteLine($"Total size (proj2) : {proj2.GetSizeInKb()}"); _testOutputHelper.WriteLine($"Total size (proj1) : {proj1.GetSizeInKb()}"); _testOutputHelper.WriteLine($"Total size (root) : {root.GetSizeInKb()}"); }
public DirectoryItem AddDirectory(string directoryName) { var dir = new DirectoryItem(directoryName); currentDirectory.Add(dir); currentDirectory = dir; return(dir); }
public DirectoryItem SetCurrentDirectory(string toDirectory) { var dirStack = new Stack <DirectoryItem>(); dirStack.Push(Root); while (dirStack.Any()) { var current = dirStack.Pop(); if (current.Name == toDirectory) { currentDirectory = current; return(current); } foreach (var item in current.Items.OfType <DirectoryItem>()) { dirStack.Push(item); } } throw new InvalidOperationException($"Director name '{toDirectory} not found"); }
public FileSystemBuilder(string rootDirectory) { Root = new DirectoryItem(rootDirectory); currentDirectory = Root; }