public void CalculateRightDistanceForFourNodes() { var vertex1 = new Vertex(1); var vertex2 = new Vertex(2); var vertex3 = new Vertex(3); var vertex4 = new Vertex(4); vertex1.Edges.Add(new Edge { To = vertex2, Length = 3 }); vertex1.Edges.Add(new Edge { To = vertex3, Length = 4 }); vertex1.Edges.Add(new Edge { To = vertex4, Length = 1 }); vertex2.Edges.Add(new Edge { To = vertex4, Length = 5 }); vertex4.Edges.Add(new Edge { To = vertex3, Length = 2 }); var graph = new List<Vertex> { vertex1, vertex2, vertex3, vertex4 }; var expected = new List<ShortestPath> { new ShortestPath { From = vertex1, To = vertex1, Length = 0 }, new ShortestPath { From = vertex1, To = vertex2, Length = 3 }, new ShortestPath { From = vertex1, To = vertex3, Length = 3 }, new ShortestPath { From = vertex1, To = vertex4, Length = 1 }, }; List<ShortestPath> actual = this.algorithm.FindShortestPaths(graph, sourceVertexId: 1); AssertionHelper.AssertAreEqual(expected, actual); }
public void ParseTwoNodeInput() { var input = PrepareInput(@"1 2,5"); var vertex1 = new Vertex(1); var vertex2 = new Vertex(2); vertex1.Edges.Add(new Edge { To = vertex2, Length = 5 }); var expected = new List<Vertex> { vertex1, vertex2 }; List<Vertex> actual = this.graphParser.Parse(input); AssertionHelper.AssertAreEqual(expected, actual); }
public void CalculateRightDistanceForThreeNodesOneNodeUnreacheble() { var vertex1 = new Vertex(1); var vertex2 = new Vertex(2); var vertex3 = new Vertex(3); vertex1.Edges.Add(new Edge { To = vertex2, Length = 5 }); var graph = new List<Vertex> { vertex1, vertex2, vertex3 }; var expected = new List<ShortestPath> { new ShortestPath { From = vertex1, To = vertex1, Length = 0 }, new ShortestPath { From = vertex1, To = vertex2, Length = 5 }, new ShortestPath { From = vertex1, To = vertex3, Length = Algorithm.Infinity }, }; List<ShortestPath> actual = this.algorithm.FindShortestPaths(graph, sourceVertexId: 1); AssertionHelper.AssertAreEqual(expected, actual); }
public void ParseFourNodeInput() { var input = PrepareInput( @"1 2,5 2 3,6 4 3,4 2,7"); var vertex1 = new Vertex(1); var vertex2 = new Vertex(2); var vertex3 = new Vertex(3); var vertex4 = new Vertex(4); vertex1.Edges.Add(new Edge { To = vertex2, Length = 5 }); vertex2.Edges.Add(new Edge { To = vertex3, Length = 6 }); vertex4.Edges.Add(new Edge { To = vertex3, Length = 4 }); vertex4.Edges.Add(new Edge { To = vertex2, Length = 7 }); var expected = new List<Vertex> { vertex1, vertex2, vertex3, vertex4 }; List<Vertex> actual = this.graphParser.Parse(input); AssertionHelper.AssertAreEqual(expected, actual); }
public void FilterDestinationVertices() { var expected = "3,1"; var vertex1 = new Vertex(1); var vertex2 = new Vertex(2); var vertex3 = new Vertex(3); var vertex4 = new Vertex(4); var shortestPaths = new List<ShortestPath> { new ShortestPath { From = vertex1, To = vertex1, Length = 0 }, new ShortestPath { From = vertex1, To = vertex2, Length = 3 }, new ShortestPath { From = vertex1, To = vertex3, Length = 3 }, new ShortestPath { From = vertex1, To = vertex4, Length = 1 }, }; var destinationVerticesIds = new List<int> { 2, 4 }; var actual = OutputFormatter.Format(shortestPaths, destinationVerticesIds); Assert.AreEqual(expected, actual); }