public void Children_AddFileTo2LevelFoldersAndThenRemoveTheSubLevelFolder_TheChildrenAreUpdated()
    {
      var rootFolder = new FolderElement("root");
      var rootFile = AddNewFile(rootFolder, "rootFile", 100);

      var leafLevel1Folder = new FolderElement("Leaf_Level_1");
      var leafLevel2Folder = new FolderElement("Leaf_Level_2");
      rootFolder.Add(leafLevel1Folder);
      leafLevel1Folder.Add(leafLevel2Folder);

      AddNewFile(leafLevel2Folder, "leaf2", 1000);

      // act
      rootFolder.Remove(leafLevel1Folder);

      Assert.AreEqual(1, rootFolder.Children.Count);
      Assert.AreSame(rootFile, rootFolder.Children[0]);
    }
    public void Remove_AddFileTo2LevelFoldersAndThenRemoveTheSubLevelFolder_TheRootFolderSizeIsCorrect()
    {
      var rootFolder = new FolderElement("root");
      AddNewFile(rootFolder, "rootFile", 100);

      var leafLevel1Folder = new FolderElement("Leaf_Level_1");
      var leafLevel2Folder = new FolderElement("Leaf_Level_2");
      rootFolder.Add(leafLevel1Folder);
      leafLevel1Folder.Add(leafLevel2Folder);

      AddNewFile(leafLevel2Folder, "leaf2", 1000);

      // act
      rootFolder.Remove(leafLevel1Folder);

      Assert.AreEqual(100, rootFolder.Size);
    }