public void Arrange()
 {
     this.tubeJourneyRequest = new TubeJourneyRequest(Constants.Embankment, Constants.Temple);
     this.routeResults = new List<RouteResult>
     {
         new RouteResult
         {
                 ConnectionMedium = ConnectionMedium.DistrictAndCircle.ToString(),
                 DistanceFromStart = 2,
                 FromStation = Constants.Embankment,
                 ToStation = Constants.Temple
         }
     };
     this.mockJourneyPlanner = new Mock<IJourneyPlanner>();
     this.mockStationValidator = new Mock<IStationValidator>();
     this.mockStationValidator.Setup(
         x => x.ValidateRequest(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(this.tubeJourneyRequest);
     this.journeyPlannerController = new JourneyPlannerController(mockJourneyPlanner.Object, mockStationValidator.Object);
 }
        public List<RouteResult> FindByShortestDistance(TubeJourneyRequest tubeJourneyRequest)
        {
            var bestRoute = new List<RouteResult>();
            //var viaCheck = !string.IsNullOrEmpty(tubeJourneyRequest.ViaStation);
            //var originalFinishStation = tubeJourneyRequest.FinishStation;

            if (tubeJourneyRequest.StartStation == tubeJourneyRequest.FinishStation)
            {
                return bestRoute;
            }

            this.routeCalculator = new ShortestDistanceCalculator();

            /*
            // if having to go via a station calculate first the best route to the via station (i.e. make via the finish station)
            // w
            // then make via station the start route and work from via station to original finish station
            if (viaCheck)
            {
                tubeJourneyRequest.FinishStation = tubeJourneyRequest.ViaStation;
                bestRoute = this.routeCalculator.CalculateRoute(this.tubeGraph,
                                                            tubeJourneyRequest.StartStation,
                                                            tubeJourneyRequest.FinishStation,
                                                            tubeJourneyRequest.ExcludingStation);
                tubeJourneyRequest.FinishStation = originalFinishStation;

                bestRoute.AddRange(this.routeCalculator.CalculateRoute(this.tubeGraph,
                                                            tubeJourneyRequest.ViaStation,
                                                            tubeJourneyRequest.FinishStation,
                                                            tubeJourneyRequest.ExcludingStation));
                return bestRoute;

            }
            */

            bestRoute = this.routeCalculator.CalculateRoute(this.tubeGraph,
                                                            tubeJourneyRequest.StartStation,
                                                            tubeJourneyRequest.FinishStation,
                                                            tubeJourneyRequest.ExcludingStation);

            return bestRoute;
        }
 public List<RouteResult> FindByFewestStations(TubeJourneyRequest tubeJourneyRequest)
 {
     throw new NotImplementedException();
 }
 public List<RouteResult> FindByFastestTime(TubeJourneyRequest tubeJourneyRequest)
 {
     throw new NotImplementedException();
 }