static void Main(string[] args) { // Get Flights var flightBuilder = new FlightBuilder(); var flightList = new ResultSet(flightBuilder.GetFlights()); // Display List of Flights - not normally needed, for comparison with Filtered list Console.WriteLine("~ Initial Flight List ~"); flightList.WriteToConsole(); // Could ask User for filters like Departure Date here // Build Filters var filterBuilder = new FilterBuilder(); // Was intending to use a new prototype interface to clone the Basic default // filter but ran out of time // Filter Flights flightList.ApplyFilters(filterBuilder.GetFilterSet("Basic")); // Display Final List of Flights Console.WriteLine("~ Filter Results ~"); flightList.WriteToConsole(); Console.WriteLine("Press any key to exit"); Console.ReadLine(); }
public void Check_FlightHasValidDates() { FlightProvider flightBuilder = new FlightBuilder(); IEnumerable <Flight> flights = flightBuilder.GetFlights(FlightFilters.IsValid); Assert.DoesNotContain(flights, (f => f.Segments.Any(seg => seg.DepartureDate > seg.ArrivalDate))); }
public void Check_IsCurrentFlight() { FlightProvider flightBuilder = new FlightBuilder(); IEnumerable <Flight> flights = flightBuilder.GetFlights(FlightFilters.IsCurrent); Assert.DoesNotContain(flights, (f => f.Segments.Any(seg => seg.DepartureDate < DateTime.Now))); }
public void Check_IsGroundTimeLessThan2HoursFlight() { FlightProvider flightBuilder = new FlightBuilder(); IEnumerable <Flight> flights = flightBuilder.GetFlights(FlightFilters.IsGroundTimeLessThan2Hours); Assert.DoesNotContain(flights, FlightFilters.HasOverlappingSegments); Assert.DoesNotContain(flights, (flight => flight.GetTotalTravelTime().Subtract(flight.GetFlightTime()) > TimeSpan.FromHours(2))); }
static void Main(string[] args) { FlightBuilder fb = new FlightBuilder(); IList <Flight> flights = fb.GetFlights(); PrintFlights(flights); DepartBeforeCurrentDateTime(DateTime.Now, flights); SegmentsWithArrivalEarlierThanDepartureDate(flights); DepartureOver2HoursAfterArrival(flights); }
public void Check_FlightSegmentsAreOrdered() { FlightProvider flightBuilder = new FlightBuilder(); IEnumerable <Flight> flights = flightBuilder.GetFlights(); foreach (Flight f in flights) { for (int i = 1; i < f.Segments.Count; i++) { Assert.False(f.Segments[i].DepartureDate < f.Segments[i - 1].DepartureDate, "Unordered Segments found in flights"); } } }
private void button2_Click(object sender, EventArgs e) { FlightBuilder fb = new FlightBuilder(); var flights = fb.GetFlights(); //Have a segment with an arrival date before the departure date. var arrivalBefore = flights .SelectMany(s => s.Segments .Where(i => DateTime.Compare(i.ArrivalDate, i.DepartureDate) < 0)); foreach (var f in arrivalBefore) { Console.WriteLine("Arrival Date: " + f.ArrivalDate.ToString() + " departure date: " + f.DepartureDate.ToString()); } FlightGridView.DataSource = arrivalBefore.ToList(); }
private void button3_Click(object sender, EventArgs e) { FlightBuilder fb = new FlightBuilder(); var flights = fb.GetFlights(); //3.Spend more than 2 hours on the ground. i.e those with a total gap of over two hours between the //arrival date of one segment and the departure date of the next. var gapGround = flights .Where(s => (s.Segments.Count >= 2)) .Where(FilterFlights); foreach (var f in gapGround) { //Console.WriteLine("Arrival Date: " + f.Segments.ToString() + " departure date: " + f.Segments.ToString()); } FlightGridView.DataSource = gapGround.SelectMany(s => s.Segments).ToList(); }
private void button1_Click(object sender, EventArgs e) { FlightBuilder fb = new FlightBuilder(); var flights = fb.GetFlights(); //Depart before the current date/time. var departBefore = flights .SelectMany(s => s.Segments .Where(i => DateTime.Compare(i.DepartureDate, DateTime.Now) < 0)); foreach (var f in departBefore) { Console.WriteLine("Arrival Date: " + f.ArrivalDate.ToString() + " departure date: " + f.DepartureDate.ToString()); } FlightGridView.DataSource = departBefore.ToList(); }
public void Check_FlightSegmentsAreOrderedForced() { FlightProvider flightBuilder = new FlightBuilder(); flightBuilder.ShouldOrderSegments = false; IEnumerable <Flight> flights = flightBuilder.GetFlights(); bool ordered = true; foreach (Flight f in flights) { for (int i = 1; i < f.Segments.Count; i++) { if (f.Segments[i].DepartureDate < f.Segments[i - 1].DepartureDate) { ordered = false; break; } } } Assert.True(ordered, "Unordered Segments have been reordered in flights"); }
//segment with an arrival date before the departure date public static void SegmentsWithArrivalEarlierThanDepartureDate(IList <Flight> flights) { FlightBuilder fb = new FlightBuilder(); List <string> message = new List <string>(); int counter = 1; foreach (Flight flight in flights) { message.Add(string.Format("Flight {0}", counter++)); message.Add(" Arrival Date\tDeparture Date"); foreach (Segment s in flight.Segments) { if (s.ArrivalDate.CompareTo(s.DepartureDate) < 0) { message.Add(string.Format("{0}\t{1}", s.ArrivalDate, s.DepartureDate)); } } } File.Delete(SegmentsWithArrivalDepartureDatefile); File.WriteAllLines(SegmentsWithArrivalDepartureDatefile, message); }
public static void DepartureOver2HoursAfterArrival(IList <Flight> flights) { FlightBuilder fb = new FlightBuilder(); List <string> message = new List <string>(); int counter = 1; foreach (Flight flight in flights) { message.Add(string.Format("Flight {0}", counter++)); message.Add(" Arrival Date\tDeparture Date"); foreach (Segment s in flight.Segments) { TimeSpan ts = s.DepartureDate.Subtract(s.ArrivalDate); if (ts.TotalDays > 1 || ts.TotalHours > 2) { message.Add(string.Format("{0}\t{1}", s.ArrivalDate, s.DepartureDate)); } } } File.Delete(DepartureOver2HoursAfterArrivalfile); File.WriteAllLines(DepartureOver2HoursAfterArrivalfile, message); }
public IList <Flight> GetFlights() { FlightBuilder fb = new FlightBuilder(); return(fb.GetFlights()); }
private static IList <Flight> GetAllFlights(FlightBuilder flightBuilder) { return(flightBuilder.GetFlights()); }