public void RouteDistanceTest() { // arrange string graphInfo = "AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7"; // act GraphModel graph = GraphBusiness.BuildGraph(graphInfo); // assert Assert.AreEqual(9, GraphBusiness.RouteDistance(graph, "A-B-C")); Assert.AreEqual(5, GraphBusiness.RouteDistance(graph, "A-D")); Assert.AreEqual(13, GraphBusiness.RouteDistance(graph, "A-D-C")); Assert.AreEqual(22, GraphBusiness.RouteDistance(graph, "A-E-B-C-D")); Assert.AreEqual(-1, GraphBusiness.RouteDistance(graph, "A-E-D")); }
public void CreateGraphTest() { // arrange string graphInfo = "AB6, AE4, BA6, BC2, BD4, CB3, CD1, CE7, DB8, EB5, ED7"; // act GraphModel graph = GraphBusiness.BuildGraph(graphInfo); // assert Assert.IsTrue(graph.Nodes.Count == 5); Assert.IsTrue(graph.Nodes.Find(n => n.Label.Equals('A')).edges.Count == 2); Assert.IsTrue(graph.Nodes.Find(n => n.Label.Equals('B')).edges.Count == 3); Assert.IsTrue(graph.Nodes.Find(n => n.Label.Equals('C')).edges.Count == 3); Assert.IsTrue(graph.Nodes.Find(n => n.Label.Equals('D')).edges.Count == 1); Assert.IsTrue(graph.Nodes.Find(n => n.Label.Equals('E')).edges.Count == 2); }
public void CreateGraphTest() { // arrange string graphInfo = "AB6, AE4, BA6, BC2, BD4, CB3, CD1, CE7, DB8, EB5, ED7"; // act Graph graphTest = GraphBusiness.CreateGraph(graphInfo); // assert Assert.IsTrue(graphTest.Nodes.Count == 5); Assert.IsTrue(graphTest.Nodes.Find(n => n.Name.Equals('A')).Connections.Count == 2); Assert.IsTrue(graphTest.Nodes.Find(n => n.Name.Equals('B')).Connections.Count == 3); Assert.IsTrue(graphTest.Nodes.Find(n => n.Name.Equals('C')).Connections.Count == 3); Assert.IsTrue(graphTest.Nodes.Find(n => n.Name.Equals('D')).Connections.Count == 1); Assert.IsTrue(graphTest.Nodes.Find(n => n.Name.Equals('E')).Connections.Count == 2); }
public void ComputeShortestRouteTest() { // arrange string graphInfo = "AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7"; // act GraphModel graph = GraphBusiness.BuildGraph(graphInfo); // assert GraphRouteAlgorithmReturn result = GraphBusiness.ComputeShortestRoute(graph, 'A', 'C'); Assert.AreEqual(9, result.Value); Assert.AreEqual("A-B-C", result.Path); result = GraphBusiness.ComputeShortestRoute(graph, 'B', 'B'); Assert.AreEqual(9, result.Value); Assert.AreEqual("B-C-E-B", result.Path); }
public void ComputeAllRoutesTest() { // arrange string graphInfo = "AB5, BC4, CD8, DC8, DE6, AD5, CE2, EB3, AE7"; // act GraphModel graph = GraphBusiness.BuildGraph(graphInfo); // assert List <GraphRouteAlgorithmReturn> result = GraphBusiness.ComputeAllRoutes(graph, 'C', 'C', 3); Assert.AreEqual(2, result.Count); Assert.IsNotNull(result.Find(f => f.Path.Equals("C-D-C"))); Assert.AreEqual(2, result.Find(f => f.Path.Equals("C-D-C")).Value); Assert.IsNotNull(result.Find(f => f.Path.Equals("C-E-B-C"))); Assert.AreEqual(3, result.Find(f => f.Path.Equals("C-E-B-C")).Value); result = GraphBusiness.ComputeAllRoutes(graph, 'A', 'C', 4); //Assert.AreEqual(6, result.Count); Assert.AreEqual(4, result.Count); Assert.IsNotNull(result.Find(f => f.Path.Equals("A-B-C"))); Assert.AreEqual(2, result.Find(f => f.Path.Equals("A-B-C")).Value); Assert.IsNotNull(result.Find(f => f.Path.Equals("A-D-E-B-C"))); Assert.AreEqual(4, result.Find(f => f.Path.Equals("A-D-E-B-C")).Value); Assert.IsNotNull(result.Find(f => f.Path.Equals("A-E-B-C"))); Assert.AreEqual(3, result.Find(f => f.Path.Equals("A-E-B-C")).Value); Assert.IsNotNull(result.Find(f => f.Path.Equals("A-B-C-D-C"))); Assert.AreEqual(4, result.Find(f => f.Path.Equals("A-B-C-D-C")).Value); /* * Assert.IsNotNull(result.Find(f => f.Path.Equals("A-D-C"))); * Assert.AreEqual(2, result.Find(f => f.Path.Equals("A-D-C")).Value); * * Assert.IsNotNull(result.Find(f => f.Path.Equals("A-D-C-D-C"))); * Assert.AreEqual(4, result.Find(f => f.Path.Equals("A-D-C-D-C")).Value); */ }
public void CreateGraphDuplicatedNodeConnectionExceptionTest() { // arrange string graphInfo = "AB6, AB6, A4, BA6, B2, BD4, CB3, CD1, CE7, DB8, EB5, ED7"; // act bool correctExcetion = false; try { GraphModel graph = GraphBusiness.BuildGraph(graphInfo); } catch (DuplicatedNodeConnectionException) { correctExcetion = true; } // assert Assert.IsTrue(correctExcetion); }
/// <summary> /// Computes the shortest path between two nodes. /// </summary> /// <param name="startNode">Initial node of a path.</param> /// <param name="endNode">End node of a path.</param> /// <returns>Object <code>GraphRouteAlgorithmReturn</code> that contains the path and the weight of distance computed.</returns> public GraphRouteAlgorithmReturn ShortestRoute(char startNode, char endNode) { return(GraphBusiness.ComputeShortestRoute(graph, startNode, endNode)); }
/// <summary> /// Computes the total weight of any route in a graph. /// </summary> /// <param name="route">Route to calculate weight. Format: 'A-B-C'</param> /// <returns>-1 if doesn't exists a route, total weight value if exists</returns> public int Distance(string route) { return(GraphBusiness.RouteDistance(graph, route)); }
/// <summary> /// Computes all routes between two nodes. /// </summary> /// <param name="startNode">Initial node of a path.</param> /// <param name="endNode">End node of a path.</param> /// <param name="maxStops">Maximum number of stops in a path.</param> /// <returns>List of <code>GraphRouteAlgorithmReturn</code> object that contains the paths and the weights of all routes found.</returns> public List <GraphRouteAlgorithmReturn> AllRoutes(char startNode, char endNode, int maxStops) { return(GraphBusiness.ComputeAllRoutes(graph, startNode, endNode, maxStops)); }
/// <summary> /// Builds a graph according provided informations. /// </summary> /// <param name="graphInfo">Informations about the Graph. Format 'AB9'</param> public void BuildGraph(string graphInfo) { graph = GraphBusiness.BuildGraph(graphInfo); }
/// <summary> /// Computes the number of routes between two nodes with a maximum distance. /// </summary> /// <param name="startNode">Initial node of a path.</param> /// <param name="endNode">End node of a path.</param> /// <param name="maxDistance">Maximum distance between nodes.</param> /// <returns>Number of routes with a maximum distance.</returns> public int AllRoutesMaxDistance(char startNode, char endNode, int maxDistance) { return(GraphBusiness.ComputeAllRoutesMaxDistance(graph, startNode, endNode, maxDistance)); }