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);
        }
Exemple #4
0
        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));
 }