Exemplo n.º 1
0
        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;
 }