static Random random = new Random();
static string[] cities = new string[] { "Amsterdam", "Barcelona", "Paris", "Prague", "London", "Rome", "Oslo", "Moscow" };
public static void Main()
var flights = GenerateTestData(10, new DateTime(2018, 1, 1), DateTime.Today, 12, 90);
static Flight[] GenerateTestData(int numberOfFlights, DateTime flightsFromDate, DateTime flightsToDate, int flightMaxHours, int maxDelayMinutes)
throw new ArgumentException("Number of flights has to be more than 0.");
throw new ArgumentException("Flight has to take at least one hour.");
throw new ArgumentException("Max delay has to be positive.");
if (flightsToDate.AddHours(flightMaxHours) < flightsFromDate)
throw new ArgumentException("Date of the flight arrival has to be after the date of its departure including flight max hours.");
var flights = new Flight[numberOfFlights];
int daysInRange = (flightsToDate - flightsFromDate).Days;
var carriers = (Carrier[]) Enum.GetValues(typeof(Carrier));
for (int i = 0; i < numberOfFlights; i++)
var flightDuration = random.Next(1, flightMaxHours + 1);
var randomDayOffset = random.Next(0, daysInRange);
var randomHour = random.Next(0, 23);
var randomDelay = random.Next(0, maxDelayMinutes);
var randomCarrierNumber = random.Next(0, carriers.Length);
var carrier = carriers[randomCarrierNumber];
var randomOrigin = cities[i % cities.Length];
var randomDestination = cities[random.Next(0, cities.Length)];
var randomDepartureDate = flightsFromDate.AddDays(randomDayOffset).AddHours(randomHour);
var departed = randomDepartureDate.AddMinutes(randomDelay);
var randomArrivalDate = randomDepartureDate.AddHours(flightDuration);
var arrived = randomArrivalDate.AddMinutes(randomDelay);
flights[i] = new Flight(carrier, randomOrigin, randomDestination, carrier.ToString()[0] + i.ToString(), randomDepartureDate, departed, randomArrivalDate, arrived);
public Carrier Carrier { get; set; }
public string Origin { get; set; }
public string Destination { get; set; }
public string Code { get; set; }
public DateTime ScheduledDeparture { get; set; }
public DateTime Departed { get; set; }
public DateTime ScheduledArrival { get; set; }
public DateTime Arrived { get; set; }
public Flight(Carrier carrier, string origin, string destination, string code, DateTime scheduledDeparture, DateTime departed, DateTime scheduledArrival, DateTime arrived)
Destination = destination;
ScheduledDeparture = scheduledDeparture;
ScheduledArrival = scheduledArrival;
public override string ToString()
return string.Format("{0} {1} {2} {3} {4} {5} {6} {7}", Carrier, Origin, Destination, Code, ScheduledDeparture, Departed, ScheduledArrival, Arrived);