public void ResolveShortestTrip_ShouldReturnExpectedDistanceBasedOnTheRoute(string from, string to, int expectedDistance)
        {
            // Act
            var trip = TripService.FindShortest(Railway, Railway.GetTownByName(from), Railway.GetTownByName(to));

            // Assert
            Assert.Equal(expectedDistance, trip.TotalDistance);
        }
        public void Search_ShouldReturnExpectedMaxTrips_WithDistanceLessThanMaxDistance(string from, string to, int maxDistance, int expectedTrips)
        {
            // Act
            var trips = TripService.Search(Railway.GetTownByName(from), Railway.GetTownByName(to), trip => trip.TotalDistance >= maxDistance);

            // Assert
            Assert.Equal(expectedTrips, trips.Count());
        }
        public void Search_ShouldReturnExpectedMaxTrips_WithExactStops(string from, string to, int stops, int expectedTrips)
        {
            // Act
            var trips = TripService
                        .Search(Railway.GetTownByName(from), Railway.GetTownByName(to), trip => trip.Stops > stops, trip => trip.Stops == stops);

            // Assert
            Assert.Equal(expectedTrips, trips.Count());
        }
        public void ResolveDistance_WhenRouteDoesNotExists_ShouldThrowInvalidRouteException()
        {
            // Arrange
            var path = new Path();

            path.AddStop(Railway.GetTownByName("A"));
            path.AddStop(Railway.GetTownByName("E"));
            path.AddStop(Railway.GetTownByName("D"));

            // Act and assert
            Assert.Throws <InvalidRouteException>(() => TripService.ResolveDistance(path));
        }
        public void ResolveDistance_ShouldReturnDistanceBetweenABC(int expectedDistance, params string[] towns)
        {
            // Arrange
            var path = new Path();

            foreach (var town in towns)
            {
                path.AddStop(Railway.GetTownByName(town));
            }

            // Act
            var actualDistance = TripService.ResolveDistance(path);

            // Assert
            Assert.Equal(expectedDistance, actualDistance);
        }
 public void ResolveShortestTrip_WhenRouteDoesNotExist_ShouldThrowInvalidRouteException()
 {
     // Act and Assert
     Assert.Throws <InvalidRouteException>(() => TripService.FindShortest(Railway,
                                                                          Railway.GetTownByName("C"), Railway.GetTownByName("A")));
 }
 public void Search_WhenStopConditionIsNull_ShouldThrowArgumentNullException()
 {
     // Act and Assert
     Assert.Throws <ArgumentNullException>(() =>
                                           TripService.Search(Railway.GetTownByName("A"), Railway.GetTownByName("B"), null));
 }