public void ResolveDependencyOrder_Test3() { Project ProjectA = new Project("a"); Project ProjectB = new Project("b"); Project ProjectC = new Project("c"); ProjectA.AddDependencyProjects(ProjectB); ProjectA.AddDependencyProjects(ProjectC); HashSet <Project> AllProjects = new HashSet <Project>(); AllProjects.Add(ProjectA); AllProjects.Add(ProjectB); AllProjects.Add(ProjectC); string[] expectedResult = new string[] { "b", "c", "a" }; ResolveDependencyOrder resolveDependency = new ResolveDependencyOrder(); HashSet <Project> StartUpProjects = resolveDependency.GetStartUpProjects(AllProjects); foreach (Project project in StartUpProjects) { resolveDependency.ResolveDependency(project); } var actualResult = resolveDependency.ex_seq_Projects.ToArray(); Assert.Equal(expectedResult.Length, actualResult.Length); for (int i = 0; i < actualResult.Length; i++) { Assert.Equal(expectedResult[i], actualResult[i].Name); } }
public void ResolveDependencyOrder_Test6() { Project ProjectA = new Project("a"); Project ProjectB = new Project("b"); Project ProjectC = new Project("c"); Project ProjectD = new Project("d"); Project ProjectE = new Project("e"); ProjectA.AddDependencyProjects(ProjectB); ProjectA.AddDependencyProjects(ProjectD); ProjectC.AddDependencyProjects(ProjectD); ProjectB.AddDependencyProjects(ProjectC); ProjectB.AddDependencyProjects(ProjectE); ProjectD.AddDependencyProjects(ProjectB); HashSet <Project> AllProjects = new HashSet <Project>(); AllProjects.Add(ProjectA); AllProjects.Add(ProjectB); AllProjects.Add(ProjectC); AllProjects.Add(ProjectD); AllProjects.Add(ProjectE); ResolveDependencyOrder resolveDependency = new ResolveDependencyOrder(); HashSet <Project> StartUpProjects = resolveDependency.GetStartUpProjects(AllProjects); var exception = Record.Exception(() => resolveDependency.ResolveDependency(StartUpProjects.FirstOrDefault())); Assert.NotNull(exception); Assert.IsType <Exception>(exception); Assert.Equal($"Circular reference detected: d -> b !!!", exception.Message); }
public void ResolveDependencyOrder_Test10() { Project ProjectA = new Project("a"); Project ProjectB = new Project("b"); Project ProjectC = new Project("c"); Project ProjectD = new Project("d"); Project ProjectE = new Project("e"); Project ProjectF = new Project("f"); Project ProjectG = new Project("g"); Project ProjectH = new Project("h"); Project ProjectI = new Project("i"); Project ProjectJ = new Project("j"); ProjectA.AddDependencyProjects(ProjectB); ProjectA.AddDependencyProjects(ProjectD); ProjectA.AddDependencyProjects(ProjectF); ProjectC.AddDependencyProjects(ProjectD); ProjectB.AddDependencyProjects(ProjectC); ProjectB.AddDependencyProjects(ProjectE); ProjectF.AddDependencyProjects(ProjectE); ProjectF.AddDependencyProjects(ProjectH); ProjectH.AddDependencyProjects(ProjectE); ProjectH.AddDependencyProjects(ProjectJ); ProjectI.AddDependencyProjects(ProjectH); ProjectI.AddDependencyProjects(ProjectJ); ProjectG.AddDependencyProjects(ProjectH); ProjectG.AddDependencyProjects(ProjectF); HashSet <Project> AllProjects = new HashSet <Project>(); AllProjects.Add(ProjectA); AllProjects.Add(ProjectB); AllProjects.Add(ProjectC); AllProjects.Add(ProjectD); AllProjects.Add(ProjectE); AllProjects.Add(ProjectF); AllProjects.Add(ProjectG); AllProjects.Add(ProjectH); AllProjects.Add(ProjectI); string[] expectedResult = new string[] { "d", "c", "e", "b", "j", "h", "f", "a", "g", "i" }; ResolveDependencyOrder resolveDependency = new ResolveDependencyOrder(); HashSet <Project> StartUpProjects = resolveDependency.GetStartUpProjects(AllProjects); foreach (Project project in StartUpProjects) { resolveDependency.ResolveDependency(project); } var actualResult = resolveDependency.ex_seq_Projects.ToArray(); Assert.Equal(expectedResult.Length, actualResult.Length); for (int i = 0; i < actualResult.Length; i++) { Assert.Equal(expectedResult[i], actualResult[i].Name); } }
public void ResolveDependencyOrder_Test2() { Project ProjectA = new Project("a"); Project ProjectB = new Project("b"); Project ProjectC = new Project("c"); ProjectA.AddDependencyProjects(ProjectB); ProjectB.AddDependencyProjects(ProjectC); ProjectC.AddDependencyProjects(ProjectA); HashSet <Project> AllProjects = new HashSet <Project>(); AllProjects.Add(ProjectA); AllProjects.Add(ProjectB); AllProjects.Add(ProjectC); ResolveDependencyOrder resolveDependency = new ResolveDependencyOrder(); var exception = Record.Exception(() => resolveDependency.GetStartUpProjects(AllProjects)); Assert.NotNull(exception); Assert.IsType <Exception>(exception); Assert.Equal($"No Start Up Project Exists !!!", exception.Message); }