public void TestWhenInputStringIsValidThenReturnMatrix() { string input = "Graph: aB1, BC2, CA3"; int[,] expected = new int[3, 3]; expected[0, 0] = 0; expected[0, 1] = 1; expected[0, 2] = int.MaxValue; expected[1, 0] = int.MaxValue; expected[1, 1] = 0; expected[1, 2] = 2; expected[2, 0] = 3; expected[2, 1] = int.MaxValue; expected[2, 2] = 0; Assert.That(expected, Is.EquivalentTo(_inputConverter.ConvertToMatrix(input))); }
public int GetShortestPathWithCycleTest(string input, int source, int destination) { DijkstrasShortestPathMatrixImpl obj = new DijkstrasShortestPathMatrixImpl(); int actual = obj.GetShortestPathDistance(_converter.ConvertToMatrix(input), source, destination); return(actual); }
public string TestGetDistance(string matrixRepresentation, int[] route) { int result = _matrixDistanceCalculator.GetDistance(_inputConverter.ConvertToMatrix(matrixRepresentation), route.ToList()); string returnVal = result.ToString(); if (result == -1) { returnVal = "NO SUCH ROUTE"; } return(returnVal); }
public void Run() { try { List <string> input = _reader.GetInputByLine(); int[,] routes = _inputConverter.ConvertToMatrix(input[0]); ITrainSchedules ts = new TrainSchedules(routes, new DijkstrasShortestPathMatrixImpl(), new MatrixDistanceCalculator(), new MatrixRouteCounter(routes), new MatrixPathUpToMaxCounter()); for (int i = 1; i < input.Count; i++) { string[] lineItems = input[i].Split(' '); Enum.Query query; bool success = System.Enum.TryParse(lineItems[0], out query); if (!success) { Console.WriteLine("Problem reading query type."); continue; } switch (query) { case Enum.Query.Distance: int result = ts.GetDistance(new List <char>(lineItems[1].ToCharArray())); Console.WriteLine(result == -1 ? "NO SUCH ROUTE" : result.ToString()); break; case Enum.Query.NumberOfTripsMax: Console.WriteLine(ts.GetRoutesCountUpToMax(lineItems[1][0], lineItems[1][1], int.Parse(lineItems[2]))); break; case Enum.Query.NumberOfTripsExact: Console.WriteLine(ts.GetRoutesCountExact(lineItems[1][0], lineItems[1][1], int.Parse(lineItems[2]))); break; case Enum.Query.LengthOfShortestRoute: Console.WriteLine(ts.GetShortestPathDistance(lineItems[1][0], lineItems[1][1])); break; case Enum.Query.NumberOfRoutesUpToMaxDistance: Console.WriteLine(ts.GetNumberOfPathsWithMaxLength(lineItems[1][0], lineItems[1][1], int.Parse(lineItems[2]))); break; default: Console.WriteLine("Invalid query type."); break; } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public int TestGetNumberOfPaths(string matrixRepresentation, int source, int destination, int maxLength) { return(_counter.GetNumberOfPaths(_inputConverter.ConvertToMatrix(matrixRepresentation), source, destination, maxLength)); }