public void HierarchyIsCorrectlyFormed() { DummyFolder root = DummyFolder.CreateRoot(@"D:\zoo\foo"); DummyFolder bar = root.AddSubDirectory("bar"); bar.AddProjectWithDirectory("baz"); bar.AddProjectWithDirectory("baz1"); bar.AddProjectWithDirectory("baz2"); root.AddProjectWithDirectory("bar1"); List <SlnProject> projects = root.GetAllProjects(); SlnHierarchy hierarchy = new SlnHierarchy(projects); hierarchy.Folders.Select(i => i.FullPath).OrderBy(s => s) .ShouldBe(root.GetAllFolders().Select(f => f.FullPath).OrderBy(s => s)); foreach (SlnProject project in projects) { hierarchy .Folders .First(i => i.FullPath.Equals(Path.GetDirectoryName(project.FullPath))) .Projects.ShouldHaveSingleItem() .ShouldBe(project); } }
public void HierarchyWithCollapsedFoldersIsCorrectlyFormed() { DummyFolder root = DummyFolder.CreateRoot(@"D:\zoo\foo"); DummyFolder bar = root.AddSubDirectory("bar"); DummyFolder qux = bar.AddSubDirectory("qux"); SlnProject baz = qux.AddProjectWithDirectory("baz"); SlnProject baz1 = qux.AddProjectWithDirectory("baz1"); SlnProject baz2 = qux.AddProjectWithDirectory("baz2"); SlnProject bar1 = root.AddProjectWithDirectory("bar1"); SlnProject baz3 = root .AddSubDirectory("foo1") .AddSubDirectory("foo2") .AddProjectWithDirectory("baz3"); DummyFolder rootExpected = DummyFolder.CreateRoot(@"D:\zoo\foo"); DummyFolder barQuxExpected = rootExpected.AddSubDirectory($"bar {SlnHierarchy.Separator} qux"); barQuxExpected.Projects.Add(baz); barQuxExpected.Projects.Add(baz1); barQuxExpected.Projects.Add(baz2); rootExpected.Projects.Add(bar1); rootExpected.AddSubDirectory($"foo1 {SlnHierarchy.Separator} foo2 {SlnHierarchy.Separator} baz3").Projects.Add(baz3); SlnHierarchy hierarchy = new SlnHierarchy(root.GetAllProjects(), collapseFolders: true); SlnFolder[] resultFolders = hierarchy.Folders.OrderBy(f => f.FullPath).ToArray(); DummyFolder[] expectedFolders = rootExpected.GetAllFolders().OrderBy(f => f.FullPath).ToArray(); resultFolders.Length.ShouldBe(expectedFolders.Length); for (int i = 0; i < resultFolders.Length; i++) { SlnFolder resultFolder = resultFolders[i]; DummyFolder expectedFolder = expectedFolders[i]; resultFolder.Name.ShouldBe(expectedFolder.Name); // Verify that expected and results projects match resultFolder.Projects.Count.ShouldBe(expectedFolder.Projects.Count); resultFolder.Projects.ShouldAllBe(p => expectedFolder.Projects.Contains(p)); // Verify that expected and results child folders match resultFolder.Folders.Count.ShouldBe(expectedFolder.Folders.Count); resultFolder.Folders.ShouldAllBe(p => expectedFolder.Folders.Exists(f => f.Name == p.Name)); } }