Example #1
0
        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"));
        }
Example #2
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
             */
        }
Example #6
0
        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);
 }
Example #11
0
 /// <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));
 }