public void Profit_Surplus_Is_Negative_But_Airline_Employees_Exceed_Minimum_Percentage()
        {
            var madridToPrague = new FlightRoute("Madrid", "Prague")
            {
                BaseCost                 = 80,
                BasePrice                = 150,
                LoyaltyPointsGained      = 10,
                MinimumTakeOffPercentage = 0.3
            };

            var scheduledFlight = new ScheduledFlight(madridToPrague);

            scheduledFlight.SetAircraftForRoute(new Plane {
                Id = 124, Name = "Vader Darth-87", NumberOfSeats = 10
            });

            scheduledFlight.Passengers.Add(new Passenger {
                Type = PassengerType.AirlineEmployee, Name = "John", Age = 32, AllowedBags = 1
            });
            scheduledFlight.Passengers.Add(new Passenger {
                Type = PassengerType.AirlineEmployee, Name = "Jen", Age = 28, AllowedBags = 1
            });
            scheduledFlight.Passengers.Add(new Passenger {
                Type = PassengerType.AirlineEmployee, Name = "Tom", Age = 47, AllowedBags = 1
            });
            scheduledFlight.Passengers.Add(new Passenger {
                Type = PassengerType.LoyaltyMember, Name = "Mike", Age = 26, LoyaltyPoints = 1500, IsUsingLoyaltyPoints = true, AllowedBags = 2
            });
            scheduledFlight.Passengers.Add(new Passenger {
                Type = PassengerType.LoyaltyMember, Name = "Pan", Age = 56, LoyaltyPoints = 500, IsUsingLoyaltyPoints = false, AllowedBags = 2
            });
            scheduledFlight.Passengers.Add(new Passenger {
                Type = PassengerType.AirlineEmployee, Name = "Natalie", Age = 30, AllowedBags = 1
            });
            scheduledFlight.Passengers.Add(new Passenger {
                Type = PassengerType.Discounted, Name = "Chris", Age = 38, AllowedBags = 0
            });

            var costOfFlight = scheduledFlight.Passengers.Count * madridToPrague.BaseCost;

            var totalPriceForGeneral = scheduledFlight.Passengers.Where(p => p.Type == PassengerType.General).Count() * madridToPrague.BasePrice;
            var totalPriceForNonUsingLoyaltyPoints = scheduledFlight.Passengers.Where(p => p.Type == PassengerType.LoyaltyMember && p.IsUsingLoyaltyPoints == false).Count() * madridToPrague.BasePrice;
            var totalPriceForDiscounted            = (scheduledFlight.Passengers.Where(p => p.Type == PassengerType.Discounted).Count() * madridToPrague.BasePrice) / 2;

            var profitFromFlight = (totalPriceForGeneral + totalPriceForNonUsingLoyaltyPoints + totalPriceForDiscounted) - costOfFlight;

            var seatsTaken = scheduledFlight.Passengers.Count();

            Assert.True(scheduledFlight.CheckProfitSurplus(profitFromFlight));
        }