public void SmartParkingBoy_Should_park_cars_to_more_space_parkingLot_with_cars(int parkingCapacity1, int parkingCapacity2, int parkingCapacity3) { //given var parkingLots = new List <ParkingLot>() { { new ParkingLot(parkingCapacity1) }, { new ParkingLot(parkingCapacity2) }, { new ParkingLot(parkingCapacity3) } }; var smartParkingBoy = new SmartParkingBoy(); var parkingBoy = new ParkingBoy(); //when for (int i = 0; i < 2; i++) { parkingBoy.Park(i.ToString(), parkingLots[1]); parkingBoy.Park(i.ToString(), parkingLots[2]); } var numberPlate = "XX2345"; var parkingTicket = smartParkingBoy.Park(numberPlate, parkingLots); var expectParkingLot = parkingLots[2]; //then Assert.NotEmpty(parkingTicket); Assert.Contains <string>("XX2345", expectParkingLot.ParkingCarsList); }
void should_show_parking_lots_and_parking_boys_parking_info() { List <Car> cars = CreateCars(10); ParkingLot ParkingLot1 = CreateParkingLots(3, cars.GetRange(0, 2)); ParkingLot ParkingLot2 = CreateParkingLots(3, cars.GetRange(2, 1)); ParkingLot ParkingLot3 = CreateParkingLots(3, cars.GetRange(3, 2)); ParkingLot ParkingLot4 = CreateParkingLots(3, cars.GetRange(5, 3)); ParkingLot ParkingLot5 = CreateParkingLots(3, cars.GetRange(8, 2)); var parkingBoy = new ParkingBoy(new List <ParkingLot> { ParkingLot1, ParkingLot2 }); var superParkingBoy = new SuperParkingBoy(new List <ParkingLot> { ParkingLot3 }); var smartParkingBoy = new SmartParkingBoy(new List <ParkingLot> { ParkingLot4 }); var manager = new Manager(new List <IPickerParker> { parkingBoy, ParkingLot5, superParkingBoy, smartParkingBoy }); string des = manager.Description(""); const string expectedDes = "Manager 10 15\n\t ParkingBoy 3 6\n\t\t ParkingLot 2 3\n\t\t ParkingLot 1 3\n\t ParkingLot 2 3\n\t SuperBoy 2 3\n\t\t ParkingLot 2 3\n\t SmartBoy 3 3\n\t\t ParkingLot 3 3\n"; Assert.Equal(expectedDes, des); }
public void Should_Manager_Can_Tell_Boy_To_Fetch(string plateNumber, string parkingTicket) { //Given var manager = new ParkingManager("Chris"); var employee = new ParkingBoy("Jack"); var employee2 = new SmartParkingBoy("Joy"); manager.HireBoy(employee); manager.HireBoy(employee2); string parkMessage = string.Empty; string fectchMessage = string.Empty; var fetchedCar = new Car(plateNumber); var ticket = parkingTicket; var parkingLots = new List <CarLot <string, Car> >() { new CarLot <string, Car>(), }; manager.ManagerPark(fetchedCar, parkingLots, out parkMessage); Car expected = fetchedCar; //When var result = manager.ManagerFetch(ticket, parkingLots, out fectchMessage); //Then Assert.IsType <Car>(result); Assert.Equal(expected, result); }
public void should_park_into_second_parking_lot_when_have_two_parking_lots_and_both_are_available_the_second_have_more_spot() { var parkingLotA = new ParkingLot(_capacity); var parkingLotB = new ParkingLot(_capacity); for (var i = 0; i < _capacity - 1; i++) { parkingLotA.Park(new Car()); } for (var i = 0; i < _capacity - 2; i++) { parkingLotB.Park(new Car()); } var preNumOfCarA = parkingLotA.GetAvailableSpotNumber(); var preNumOfCarB = parkingLotB.GetAvailableSpotNumber(); var car = new Car(); var list = new List <ParkingLot>() { parkingLotA, parkingLotB }; var smartParkingBoy = new SmartParkingBoy(list); smartParkingBoy.Park(car); Assert.Equal(preNumOfCarA, parkingLotA.GetAvailableSpotNumber()); Assert.Equal(preNumOfCarB - 1, parkingLotB.GetAvailableSpotNumber()); }
void should_save_to_the_previous_parking_lot_when_parking_lot_left_space_is_equal() { var parkingLotA = new ParkingLot(20); var parkingLotB = new ParkingLot(20); var parkingLotC = new ParkingLot(20); var parkingBoy = new SmartParkingBoy(new List <ParkingLot> { parkingLotA, parkingLotB, parkingLotC }); for (int i = 0; i < 15; i++) { parkingLotA.Park(new Car()); } for (int i = 0; i < 10; i++) { parkingLotB.Park(new Car()); } for (int i = 0; i < 10; i++) { parkingLotC.Park(new Car()); } parkingBoy.Park(new Car()); Assert.Equal(5, parkingLotA.GetAvailableSpace()); Assert.Equal(9, parkingLotB.GetAvailableSpace()); Assert.Equal(10, parkingLotC.GetAvailableSpace()); }
public void Should_Manager_Can_Tell_Boy_To_Park(string plateNumber, string parkingTicket) { //Given var manager = new ParkingManager("Chris"); var employee = new ParkingBoy("Jack"); var employee2 = new SmartParkingBoy("Joy"); manager.HireBoy(employee); manager.HireBoy(employee2); string parkMessage = string.Empty; var car = new Car(plateNumber); var parkingLots = new List <CarLot <string, Car> >() { LotInitialize.FillLotWithCars(10, 20), LotInitialize.FillLotWithCars(8, 30), }; string expected = parkingTicket; //When var result = manager.ManagerPark(car, parkingLots, out parkMessage); //Then Assert.IsType <string>(result); Assert.Equal(expected, result); }
public void should_report_when_manager_manages_one_parking_lot_and_different_parking_boys() { var parkingLot = new ParkingLotBuilder() .WithCapacity(100) .WithOccupiedParkingSpace(10) .Create(); var parkingBoy = new ParkingBoy(new ParkingLotBuilder().WithCapacity(200).WithOccupiedParkingSpace(20).Create()); var smartParkingBoy = new SmartParkingBoy(new ParkingLotBuilder().WithCapacity(300).WithOccupiedParkingSpace(30).Create()); var superParkingBoy = new SuperParkingBoy( new ParkingLotBuilder().WithCapacity(400).WithOccupiedParkingSpace(40).Create()); var parkingManager = new ParkingManager(parkingBoy, smartParkingBoy, superParkingBoy, parkingLot); var parkingDirector = new ParkingDirector(parkingManager); var actualReportText = parkingDirector.ParkingReport.ToString("markdown"); actualReportText.Should().StartWith( "# M 100 1000" + NewLine + "* P 10 100"); actualReportText.Should().Contain("## B 20 200" + NewLine + "* P 20 200"); actualReportText.Should().Contain("## B 30 300" + NewLine + "* P 30 300"); actualReportText.Should().Contain("## B 40 400" + NewLine + "* P 40 400"); }
public void Should_SmartParkingBoy_Park_The_Car_To_The_Parkinglot_With_More_Empty_Positions(int currentLoadforPark1, int currentLoadforPark2) { //Given var boy = new SmartParkingBoy("Jack"); var car = new Car("RJ_45675415"); string message = string.Empty; var parkingLots = new List <CarLot <string, Car> >() { LotInitialize.FillLotWithCars(currentLoadforPark1), LotInitialize.FillLotWithCars(currentLoadforPark2), }; string expectedTicket = "SuperPark: RJ_45675415"; int minimumIndex = 0; for (int index = 0; index < parkingLots.Count; index++) { if (parkingLots[index].Count == Math.Min(currentLoadforPark1, currentLoadforPark2)) { minimumIndex = index; break; } } int expectedLoad = Math.Min(currentLoadforPark1, currentLoadforPark2) + 1; //When string actualTicket = boy.Park(car, parkingLots, out message); var actualLoad = parkingLots[minimumIndex].Count; //Then Assert.Equal(expectedTicket, actualTicket); Assert.Equal(expectedLoad, actualLoad); }
given_parking_boy_and_smart_parking_boy_then_smart_boy_can_not_manage_parking_boy() { var parkingLot = new OOParkingLot(1); var parkingBoy = new ParkingBoy(parkingLot); var smartParkingBoy = new SmartParkingBoy(parkingBoy as IParkingLot); smartParkingBoy.Park(new Car("car")); }
public void should_not_pick_car_when_the_car_is_not_in_parking_lot() { var smartParkingBoy = new SmartParkingBoy(new ParkingLot(1)); var token = Guid.NewGuid().ToString(); smartParkingBoy.Invoking(p => p.Pick(token)) .ShouldThrow <CarNotFoundException>() .WithMessage("Cannot find the car."); }
public void given_a_parking_manager_with_a_super_parking_boy_with_two_parking_lot_and_a_smart_boy_with_a_parking_lot_managed_by_a_parking_director_then_the_director_could_print_right_report() { var superParkingBoy = new SuperParkingBoy(new OOParkingLot(1), new OOParkingLot(1)); var smartParkingBoy = new SmartParkingBoy(new OOParkingLot(1)); var parkingDirector = new ParkingDirector(new ParkingManager(smartParkingBoy, superParkingBoy)); var report = parkingDirector.OutPutByStrategy(); Assert.AreEqual("M 3 0\r\n\tB1 1 0\r\n\t\tP 1 0\r\n\tB2 2 0\r\n\t\tP 1 0\r\n\t\tP 1 0", report); }
void should_can_pick_the_car_when_parking_boy_park_a_car() { var parkingBoy = new SmartParkingBoy(new ParkingLot(10)); var car = new Car(); var token = parkingBoy.Park(car); var pickedCar = parkingBoy.Pick(token); Assert.Same(car, pickedCar); }
void should_report_when_manager_manages_one_smart_parking_boy() { var parkingLot = ParkingLotBuilder.Build(2, 1); var parkingBoy = new SmartParkingBoy(parkingLot); var parkingManager = new ParkingManager(parkingBoy); Assert.Equal("M 1 2" + NewLine + " B 1 2" + NewLine + " P 1 2", parkingManager.Report.ToString()); }
public void park_the_car_in_the_second_lot_and_return_a_ticket_when_park_a_vehicle_and_both_the_second_and_the_third_lot_have_most_empty_slots() { var parkingLots = new ParkingLot[3] { new ParkingLot(1), new ParkingLot(2), new ParkingLot(2) }; var smartParkingBoy = new SmartParkingBoy(parkingLots); var fromParkingBoy = smartParkingBoy.Park(new Vehicle()); Assert.IsType <Ticket>(fromParkingBoy); Assert.Same(parkingLots[1], fromParkingBoy.ParkingLot); }
public void should_park_a_car_into_a_parking_lot_which_has_space_and_get_a_ticket() { var list = new List <ParkingLot> { new ParkingLot(_capacity) }; var smartParkingBoy = new SmartParkingBoy(list); var ticket = smartParkingBoy.Park(new Car()); Assert.NotNull(ticket); }
public void given_two_parkingLot_with_same_space_and_a_smart_parking_boy_when_smart_boy_park_a_car_then_the_car_in_the_first_parkingLot() { var firstParkinglot = new OOParkingLot(1); var secondParkinglot = new OOParkingLot(1); var smartParkingBoy = new SmartParkingBoy(firstParkinglot, secondParkinglot); var car = new Car("car"); var carId = smartParkingBoy.Park(car); Assert.AreSame(car, firstParkinglot.Pick(carId)); }
public void should_pick_the_same_car_after_parked_it() { var parkingLot = new ParkingLot(1); var smartParkingBoy = new SmartParkingBoy(parkingLot); var car = new Car(); var token = smartParkingBoy.Park(car); var pickedCar = smartParkingBoy.Pick(token); pickedCar.Should().BeSameAs(car); }
public void given_a_parking_lot_and_a_smart_parking_boy_which_managed_by_parking_manager_when_parking_boy_park_a_car_then_manager_could_pick_the_car() { var parkinglot = new OOParkingLot(1); var smartParkingBoy = new SmartParkingBoy(parkinglot); var manager = new ParkingManager(smartParkingBoy); var car = new Car("car"); var carId = smartParkingBoy.Park(car); Assert.AreSame(car, manager.Pick(carId)); }
void should_park_car_to_the_parking_lot_which_has_the_larget_space_count() { var parkingLot = new ParkingLot(10); var parkingBoy = new SmartParkingBoy(new ParkingLot(5), parkingLot, new ParkingLot(3)); var car = new Car(); var token = parkingBoy.Park(car); var pickedCar = parkingLot.Pick(token); Assert.Same(car, pickedCar); }
public void should_throw_exception_when_parking_boy_get_car_given_a_valid_ticket_and_two_parking_lot_and_parking_lot_A_is_managed_by_parking_boy() { var parkinglotA = new ParkingLot(_capacity); var parkinglotB = new ParkingLot(_capacity); var boy = new SmartParkingBoy(new List <ParkingLot> { parkinglotA }); var car = new Car(); var ticket = parkinglotB.Park(car); Assert.Throws <NotFoundException>(() => boy.GetCar(ticket)); }
public void should_park_car_when_manages_smart_parking_boy() { var parkingLot = new ParkingLot(1); var smartParkingBoy = new SmartParkingBoy(parkingLot); var parkingManager = new ParkingManager(smartParkingBoy); var car = new Car(); var token = parkingManager.Park(car); var pickedCar = parkingManager.Pick(token); pickedCar.Should().BeSameAs(car); }
public void Should_return_my_car_when_i_use_my_ticket() { var boy = new SmartParkingBoy(new List <Lot> { new Lot(1) }); const string carId = "川A 123456"; var ticket = new Ticket(boy.Park(new Car(carId))); var car = boy.Take(ticket); Assert.Equal(carId, car.Id); }
public void Should_get_ticket_when_parking_boy_park_a_car() { var boy = new SmartParkingBoy(new List <Lot> { new Lot(1) }); const string carId = "川A 123456"; var car = new Car(carId); var ticket = boy.Park(car); Assert.NotNull(ticket); }
public void should_not_park_car_when_all_managed_parking_lots_are_full() { var parkingLot = new ParkingLotBuilder() .WithCapacity(1) .WithOccupiedParkingSpace(1) .Create(); var smartParkingBoy = new SmartParkingBoy(parkingLot); smartParkingBoy.Invoking(p => p.Park(new Car())) .ShouldThrow <ParkingFailedException>() .WithMessage("Cannot park at this moment."); }
public void should_throw_exception_when_parking_boy_get_car_given_an_invalid_ticket_and_a_parking_lot() { var parkinglot = new ParkingLot(_capacity); var boy = new SmartParkingBoy(new List <ParkingLot> { parkinglot }); var car = new Car(); boy.Park(car); Assert.Throws <NotFoundException>(() => boy.GetCar(new object())); }
public void Should_throw_error_when_smart_boy_try_to_park_a_car_into_2_full_lots() { var lot1 = new Lot(0); var lot2 = new Lot(0); var boy = new SmartParkingBoy(new List <Lot> { lot1, lot2 }); const string carId = "川A 123456"; var car = new Car(carId); Assert.Throws <NoEnoughSpotException>(() => boy.Park(car)); }
public void should_be_able_to_pick_car_by_smart_parking_boy() { var car = new Car(); var parkingLot = new ParkingLot(1); var parkingBoy = new SmartParkingBoy(new List <ParkingLot>() { parkingLot }); var ticket = parkingLot.Park(car); Assert.Equal(car, parkingBoy.Pick(ticket)); }
public void should_be_able_to_park_car_when_there_is_multi_parking_lot_with_same_avaliable_space() { var parkingLot1 = new ParkingLot(1); var parkingLot2 = new ParkingLot(1); var smartParkingBoy = new SmartParkingBoy(new List <ParkingLot> { parkingLot1, parkingLot2 }); var car = new Car(); var ticket = smartParkingBoy.Park(car); Assert.Equal(car, parkingLot1.Pick(ticket) ?? parkingLot2.Pick(ticket)); }
public void Should_Return_False_Given_Parking_Lot_Not_Exist_When_Remove_ParkingLot() { //given var parkingLot = new ParkingLot(); var parkingBoy = new SmartParkingBoy(new List <ParkingLot>() { }); //when var result = parkingBoy.RemoveParkingLot(parkingLot); //then Assert.False(result); }
public void Should_get_ticket_from_lot_2_when_smart_boy_park_and_park_2_is_more_empty_than_lot_1() { var lot1 = new Lot(1); var lot2 = new Lot(2); var boy = new SmartParkingBoy(new List <Lot> { lot1, lot2 }); const string carId = "川A 123456"; var car = new Car(carId); var ticket = boy.Park(car); Assert.Equal(lot2.Id, ticket.LotId); }