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); }
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" }); }