コード例 #1
0
        public void Graph_with_one_edge() {
            g.Insert(new Edge {v = 0, w = 1});
            var sut = new ReverseTopologicalSort(g);

            Assert.That(sut.Order(0), Is.EqualTo(1));
            Assert.That(sut.Order(1), Is.EqualTo(0));

            Assert.That(sut.Relabel(0), Is.EqualTo(1));
            Assert.That(sut.Relabel(1), Is.EqualTo(0));
        }
コード例 #2
0
        public void Empty_graph() {
            var sut = new ReverseTopologicalSort(g);

            Assert.That(sut.Order(0), Is.EqualTo(0));
            Assert.That(sut.Order(1), Is.EqualTo(1));
            Assert.That(sut.Order(2), Is.EqualTo(2));

            Assert.That(sut.Relabel(0), Is.EqualTo(0));
            Assert.That(sut.Relabel(1), Is.EqualTo(1));
            Assert.That(sut.Relabel(2), Is.EqualTo(2));
        }
コード例 #3
0
        public void Graph_with_two_edges_from_same_vertex() {
            g.Insert(new Edge {v = 0, w = 1});
            g.Insert(new Edge {v = 0, w = 2});
            var sut = new ReverseTopologicalSort(g);

            Assert.That(sut.Order(0), Is.EqualTo(1));
            Assert.That(sut.Order(1), Is.EqualTo(2));
            Assert.That(sut.Order(2), Is.EqualTo(0));

            Assert.That(sut.Relabel(0), Is.EqualTo(2));
            Assert.That(sut.Relabel(1), Is.EqualTo(0));
            Assert.That(sut.Relabel(2), Is.EqualTo(1));
        }
コード例 #4
0
        public void Diamond_graph() {
            g.Insert(new Edge {v = 0, w = 1});
            g.Insert(new Edge {v = 0, w = 2});
            g.Insert(new Edge {v = 1, w = 3});
            g.Insert(new Edge {v = 2, w = 3});
            var sut = new ReverseTopologicalSort(g);

            Assert.That(sut.Order(0), Is.EqualTo(3));
            Assert.That(sut.Order(1), Is.EqualTo(1));
            Assert.That(sut.Order(2), Is.EqualTo(2));
            Assert.That(sut.Order(3), Is.EqualTo(0));

            Assert.That(sut.Relabel(0), Is.EqualTo(3));
            Assert.That(sut.Relabel(1), Is.EqualTo(1));
            Assert.That(sut.Relabel(2), Is.EqualTo(2));
            Assert.That(sut.Relabel(3), Is.EqualTo(0));
        }
コード例 #5
0
        public void Graph_with_cycle() {
            g.Insert(new Edge {v = 0, w = 1});
            g.Insert(new Edge {v = 1, w = 2});
            g.Insert(new Edge {v = 2, w = 0});
            var sut = new ReverseTopologicalSort(g);

            Assert.That(sut.Order(0), Is.EqualTo(2));
            Assert.That(sut.Order(1), Is.EqualTo(1));
            Assert.That(sut.Order(2), Is.EqualTo(0));

            Assert.That(sut.Relabel(0), Is.EqualTo(2));
            Assert.That(sut.Relabel(1), Is.EqualTo(1));
            Assert.That(sut.Relabel(2), Is.EqualTo(0));
        }