public void AC1and2_Should_return_6cars_from_Lot1_5car_from_Lot2() { // given var manager = new Manager(); manager.AddParkingLot(new Parkinglot(10)); manager.AddParkingLot(new Parkinglot(10)); var smartBoy = new SmartBoy(1); manager.AddBoy(smartBoy); manager.DistributeParkingLots(smartBoy, manager.ParkingLots[0]); manager.DistributeParkingLots(smartBoy, manager.ParkingLots[1]); var car = new Car("BMW"); var count = 0; // when while (count < 11) { smartBoy.ParkCar(car); count++; } var expectedCarsCountFromLot1 = 6; var actualCarsCountFromLot1 = smartBoy.ParkingLots[0].CarsCount; var expectedCarsCountFromLot2 = 5; var actualCarsCountFromLot2 = smartBoy.ParkingLots[1].CarsCount; // then Assert.Equal(expectedCarsCountFromLot1, actualCarsCountFromLot1); Assert.Equal(expectedCarsCountFromLot2, actualCarsCountFromLot2); }
public void Should_return_error_message_when_all_lots_managed_are_full_for_parking_new_car() { var boy = new SmartBoy(); var lot1 = new Lot("loca1", 2); var lot2 = new Lot("loca2", 3); boy.Lots = new[] { lot1, lot2 }; string message; var messages = new List <string>(); foreach (var car in TestData.GetCars(lot1.Capacity + lot2.Capacity + 1)) { var ticket = boy.Park(car, out message); messages.Add(message); } Assert.True(messages.Where(message => messages.IndexOf(message) < (lot1.Capacity + lot2.Capacity)) .All(message => string.IsNullOrEmpty(message))); Assert.Equal("Not enough position.", messages.Last()); }
public void Should_park_new_car_only_to_lot_which_has_more_positions() { var boy = new SmartBoy(); var lot1 = new Lot("loca1", 2); var lot2 = new Lot("loca2", 3); boy.Lots = new[] { lot1, lot2 }; string message; var locations = new List <string>(); foreach (var car in TestData.GetCars(4)) { var ticket = boy.Park(car, out message); locations.Add(ticket.GetLotLocation()); Assert.Empty(message); } Assert.Equal(lot2.GetLocation(), locations[0]); Assert.Equal(lot2.GetLocation(), locations[1]); Assert.Equal(lot1.GetLocation(), locations[2]); Assert.Equal(lot2.GetLocation(), locations[3]); }