public void ShouldThrowError_WhenGivenNullNodeCollection()
            {
                // Arrange
                var dijkstraService = CreateService();
                var request         = new FindShortestPathRequest {
                    Nodes = null, StartNodeId = "A", EndNodeId = "B"
                };

                // Act
                Func <List <string> > result = () => dijkstraService.FindShortestPath(request);

                // Assert
                result.Should().Throw <UserReportableException>().WithMessage(BellErrorMessageKeys.VALIDATION_ERRORS);
            }
            public void ShouldThrowError_WhenEndNodeIdIsNotInNodeCollection()
            {
                // Arrange
                var nodes           = GenerateUndirectedGraphNodes();
                var dijkstraService = CreateService();
                var request         = new FindShortestPathRequest {
                    Nodes = nodes, StartNodeId = "A", EndNodeId = "NOT_THERE"
                };

                // Act
                Func <List <string> > result1 = () => dijkstraService.FindShortestPath(request);

                // Assert
                result1.Should().Throw <UserReportableException>().WithMessage(ErrorMessageKeys.ERROR_NODE_ID_NOT_FOUND_IN_COLLECTION);
            }
예제 #3
0
        public List <string> FindShortestPath(FindShortestPathRequest request)
        {
            _findShortestPathRequestValidator.ValidateAndThrowErrors(request);

            // Check to see if start node id exists in collection
            // The end node id is checked  in the FindShortestPaths() method
            if (!request.Nodes.Exists(n => n.Id == request.StartNodeId))
            {
                throw new UserReportableException(ErrorMessageKeys.ERROR_NODE_ID_NOT_FOUND_IN_COLLECTION, request.StartNodeId);
            }

            var fastestPathTable = FindShortestPaths(new FindShortestPathsRequest {
                Nodes = request.Nodes, PrimaryNodeId = request.EndNodeId
            });

            return(FindPath(fastestPathTable, request.StartNodeId, request.EndNodeId));
        }
            public void ShouldGenerateSingleNodePath_WhenGivenSameNodeIds()
            {
                // Arrange
                var nodes           = GenerateUndirectedGraphNodes();
                var dijkstraService = CreateService();
                var request         = new FindShortestPathRequest {
                    Nodes = nodes, StartNodeId = "C", EndNodeId = "C"
                };

                // Act
                var result = dijkstraService.FindShortestPath(request);

                // Assert
                result.Should().BeEquivalentTo(new List <string> {
                    "C"
                });
            }