コード例 #1
0
        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());
        }
コード例 #2
0
        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"));
        }