public void TestTopSortNoCycle() { var graph = new Dictionary <Dep, List <Dep> > { { new Dep("A/full-build"), new List <Dep> { new Dep("B/full-build"), new Dep("C/client") } }, { new Dep("B/full-build"), new List <Dep> { new Dep("D/full-build"), new Dep("E/full-build") } }, { new Dep("C/full-build"), new List <Dep> { new Dep("D/full-build") } }, { new Dep("C/client"), new List <Dep> { new Dep("D/client") } }, { new Dep("D/full-build"), new List <Dep> { new Dep("E/full-build") } }, { new Dep("D/client"), new List <Dep>() }, { new Dep("E/full-build"), new List <Dep>() } }; Assert.AreEqual(new[] { new Dep("E/full-build"), new Dep("D/full-build"), new Dep("B/full-build"), new Dep("D/client"), new Dep("C/client"), new Dep("A/full-build") }, BuildPreparer.GetTopologicallySortedGraph(graph, "A", "full-build").ToArray()); }
public void TestBuildOrderCycle() { var graph = new Dictionary <Dep, List <Dep> > { { new Dep("A/full-build"), new List <Dep> { new Dep("B/full-build") } }, { new Dep("B/full-build"), new List <Dep> { new Dep("C/full-build") } }, { new Dep("C/full-build"), new List <Dep> { new Dep("D/full-build") } }, { new Dep("D/full-build"), new List <Dep> { new Dep("A/full-build") } } }; Assert.Throws <CementException>(() => BuildPreparer.GetTopologicallySortedGraph(graph, "A", "full-build")); }