public void FlightValidationService_Should_Throw() { var now = DateTime.Now; var fvs = new FlightValidationService(); var correctOptions = new FlightValidationServiceOptions(new GroundTimeMoreThanValidator(TimeSpan.FromSeconds(1))); Assert.Throws <ArgumentNullException>("flights", () => fvs.Validate(null, correctOptions).FirstOrDefault()); var f = CreateFlights(5, i => Common.CreateFlight(now, TimeSpan.FromHours(i), TimeSpan.FromHours(i), TimeSpan.FromHours(i + 5), TimeSpan.FromHours(i + 6))); Assert.Throws <ArgumentNullException>("options", () => fvs.Validate(f, null).FirstOrDefault()); Assert.Throws <ArgumentNullException>("options", () => fvs.Validate(f, new FlightValidationServiceOptions(null)).FirstOrDefault()); Assert.Throws <ArgumentNullException>("flights", () => fvs.Validate(f.Prepend(null), correctOptions).FirstOrDefault()); Assert.Throws <ArgumentNullException>("flights", () => fvs.Validate(f.Prepend(new Flight { Segments = null }), correctOptions).FirstOrDefault()); Assert.Throws <ArgumentNullException>("flights", () => fvs.Validate(f.Prepend(new Flight { Segments = new List <Segment> { new Segment(), null } }), correctOptions).FirstOrDefault()); }
public void No_Flights_With_Zero_Ground_Time_Shoul_Be_Valid() { var now = DateTime.Now; var fvs = new FlightValidationService(); var f = CreateFlights(5, i => Common.CreateFlight(now, TimeSpan.FromHours(i * 2), TimeSpan.FromHours((i + 1) * 2), TimeSpan.FromHours((i + 1) * 2), TimeSpan.FromHours((i + 2) * 2))); Assert.Empty(fvs.Validate(f, new FlightValidationServiceOptions(new GroundTimeMoreThanValidator(TimeSpan.FromSeconds(1))))); }
private static void Main(string[] args) { Console.WriteLine($"Текущее время: {DateTime.Now}"); var flights = new FlightBuilder().GetFlights(); var flightFormatter = new FlightFormatProvider(); var validatorService = new FlightValidationService(); WriteLineWithColors("Всего полетов:"); foreach (var f in flights) { Console.WriteLine(string.Format(flightFormatter, "{0}", f)); } WriteLineWithColors("Вылет до текущего момента времени:"); foreach (var f in validatorService.Validate(flights, new FlightValidationServiceOptions(new AnyDepartureTimeEarlierThanValidator(DateTime.Now)))) { Console.WriteLine(string.Format(flightFormatter, "{0}", f)); } WriteLineWithColors("Имеются сегменты с датой прилёта раньше даты вылета:"); foreach (var f in validatorService.Validate(flights, new FlightValidationServiceOptions(new AnyArrivalTimeEarlierThanDepartureValidator()))) { Console.WriteLine(string.Format(flightFormatter, "{0}", f)); } WriteLineWithColors("Общее время, проведённое на земле превышает два часа:"); try { foreach (var f in validatorService.Validate(flights, new FlightValidationServiceOptions(new GroundTimeMoreThanValidator(TimeSpan.FromHours(2))))) { Console.WriteLine(string.Format(flightFormatter, "{0}", f)); } } catch (ArgumentException ex) { WriteLineWithColors($"{ex.Message}", ConsoleColor.Red); } finally { WriteLineWithColors("Валидируем все полеты, имеющие не менее двух сегментов. Результат:"); foreach (var f in validatorService.Validate(flights.Where(c => c.Segments.Count > 1), new FlightValidationServiceOptions(new GroundTimeMoreThanValidator(TimeSpan.FromHours(2))))) { Console.WriteLine(string.Format(flightFormatter, "{0}", f)); } } }
public void No_Flights_With_Zero_Ground_Time_Shoul_Be_Valid_And_Departure_Time_Earlier_Than_Passed() { var now = DateTime.Now; var fvs = new FlightValidationService(); //ground time 0 var f = CreateFlights(5, i => Common.CreateFlight(now, TimeSpan.FromHours(i), TimeSpan.FromHours(i), TimeSpan.FromHours(i), TimeSpan.FromHours(i + 1))); var options = new FlightValidationServiceOptions(new GroundTimeMoreThanValidator(TimeSpan.FromHours(1)), new AnyDepartureTimeEarlierThanValidator(now)); Assert.Empty(fvs.Validate(f, options)); //ground time 5 f = CreateFlights(5, i => Common.CreateFlight(now, TimeSpan.FromHours(i), TimeSpan.FromHours(i), TimeSpan.FromHours(i + 5), TimeSpan.FromHours(i + 6))); options = new FlightValidationServiceOptions(new GroundTimeMoreThanValidator(TimeSpan.FromHours(1)), new AnyDepartureTimeEarlierThanValidator(now.AddHours(2))); Assert.Equal(2, fvs.Validate(f, options).Count()); }