Exemplo n.º 1
0
        public void SmallGraph_ReverseTest()
        {
            var graph = new AdjacencyListGraph <int>();

            graph.AddEdge(1, 2);
            graph.AddEdge(1, 3);
            graph.AddEdge(1, 4);
            graph.AddEdge(2, 3);
            graph.AddEdge(3, 4);

            var reversedGraph = graph.Reverse();

            Assert.AreEqual(graph.VertexCount, reversedGraph.VertexCount);
            Assert.AreEqual(graph.EdgeCount, reversedGraph.EdgeCount);

            var pathIdx = 0;
            var paths   = new[] { new int[0], new[] { 1 }, new[] { 1, 2 }, new[] { 1, 3 } };

            for (int vertex = 1; vertex <= 4; vertex++)
            {
                var targetIdx = 0;
                var path      = paths[pathIdx++];
                foreach (var edge in reversedGraph.EdgesOf(vertex))
                {
                    Assert.AreEqual(path[targetIdx++], edge.Target);
                }
                Assert.AreEqual(path.Length, targetIdx);
            }
        }