public void WeightedGraph_Smoke_Test() { var graph = new WeightedGraph <int, int>(); graph.AddVertex(1); graph.AddVertex(2); graph.AddVertex(3); graph.AddVertex(4); graph.AddVertex(5); graph.AddEdge(1, 2, 1); graph.AddEdge(2, 3, 2); graph.AddEdge(3, 4, 4); graph.AddEdge(4, 5, 5); graph.AddEdge(4, 1, 1); graph.AddEdge(3, 5, 0); Assert.AreEqual(3, graph.GetAllEdges(4).Count); Assert.AreEqual(2, graph.GetAllEdges(5).Count); Assert.AreEqual(5, graph.VerticesCount); Assert.IsTrue(graph.HasEdge(1, 2)); graph.RemoveEdge(1, 2); Assert.IsFalse(graph.HasEdge(1, 2)); graph.RemoveEdge(2, 3); graph.RemoveEdge(3, 4); graph.RemoveEdge(4, 5); graph.RemoveEdge(4, 1); Assert.IsTrue(graph.HasEdge(3, 5)); graph.RemoveEdge(3, 5); Assert.IsFalse(graph.HasEdge(3, 5)); graph.RemoveVertex(1); graph.RemoveVertex(2); graph.RemoveVertex(3); graph.RemoveVertex(4); graph.RemoveVertex(5); Assert.AreEqual(0, graph.VerticesCount); }
public void Prims_Smoke_Test() { var graph = new WeightedGraph <char, int>(); graph.AddVertex('S'); graph.AddVertex('A'); graph.AddVertex('B'); graph.AddVertex('C'); graph.AddVertex('D'); graph.AddVertex('T'); graph.AddEdge('S', 'A', 8); graph.AddEdge('S', 'C', 10); graph.AddEdge('A', 'B', 10); graph.AddEdge('A', 'C', 1); graph.AddEdge('A', 'D', 8); graph.AddEdge('B', 'T', 4); graph.AddEdge('C', 'D', 1); graph.AddEdge('D', 'B', 1); graph.AddEdge('D', 'T', 10); var algo = new Prims <char, int>(); var result = algo.FindMinimumSpanningTree(graph); Assert.AreEqual(graph.VerticesCount - 1, result.Count); }
public void FloydWarshall_Smoke_Test() { var graph = new WeightedGraph <char, int>(); graph.AddVertex('S'); graph.AddVertex('A'); graph.AddVertex('B'); graph.AddVertex('C'); graph.AddVertex('D'); graph.AddVertex('T'); graph.AddEdge('S', 'A', 8); graph.AddEdge('S', 'C', 10); graph.AddEdge('A', 'B', 10); graph.AddEdge('A', 'C', 1); graph.AddEdge('A', 'D', 8); graph.AddEdge('B', 'T', 4); graph.AddEdge('C', 'D', 1); graph.AddEdge('D', 'B', 1); graph.AddEdge('D', 'T', 10); var algo = new FloydWarshallShortestPath <char, int>(new FloydWarshallShortestPathOperators()); var result = algo.GetAllPairShortestPaths(graph); var testCase = result.First(x => x.Source == 'S' && x.Destination == 'T'); Assert.AreEqual(15, testCase.Distance); var expectedPath = new char[] { 'S', 'A', 'C', 'D', 'B', 'T' }; for (int i = 0; i < expectedPath.Length; i++) { Assert.AreEqual(expectedPath[i], testCase.Path[i]); } testCase = result.First(x => x.Source == 'T' && x.Destination == 'S'); Assert.AreEqual(15, testCase.Distance); expectedPath = new char[] { 'T', 'B', 'D', 'C', 'A', 'S' }; for (int i = 0; i < expectedPath.Length; i++) { Assert.AreEqual(expectedPath[i], testCase.Path[i]); } }