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); } }