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"); }
void should_can_pick_the_car_when_manage_parking_lots_and_parking_boys_and_park_a_car() { var lotNoSpace = new ParkingLot(0); var lotHasSpace = new ParkingLot(2); var boy = new SuperParkingBoy(lotHasSpace); var superBoy = new SuperParkingBoy(lotHasSpace); var smartBoy = new SuperParkingBoy(lotNoSpace); var manager = new ParkingManager(lotNoSpace, boy, smartBoy, superBoy); var car = new Car(); var token = manager.Park(car); Assert.Same(car, manager.Pick(token)); token = manager.Park(car); Assert.Same(car, boy.Pick(token)); token = manager.Park(car); Assert.Same(car, superBoy.Pick(token)); token = manager.Park(car); Assert.Same(car, lotHasSpace.Pick(token)); token = manager.Park(car); Assert.Throws <NotFoundException>(() => smartBoy.Pick(token)); token = manager.Park(car); Assert.Throws <NotFoundException>(() => lotNoSpace.Pick(token)); }
public void should_park_to_parking_lot_with_higher_vacancy_rate( int parkingLot0Capacity, int parkingLot0OccupiedParkingSpace, int parkingLot1Capacity, int parkingLot1OccupiedParkingSpace, int chosenParkingLotIndex) { var parkingLot0 = new ParkingLotBuilder() .WithCapacity(parkingLot0Capacity) .WithOccupiedParkingSpace(parkingLot0OccupiedParkingSpace) .Create(); var parkingLot1 = new ParkingLotBuilder() .WithCapacity(parkingLot1Capacity) .WithOccupiedParkingSpace(parkingLot1OccupiedParkingSpace) .Create(); var parkingLots = new[] { parkingLot0, parkingLot1 }; var superParkingBoy = new SuperParkingBoy(parkingLots); var car = new Car(); var token = superParkingBoy.Park(car); var pickedCar = parkingLots[chosenParkingLotIndex].Pick(token); pickedCar.Should().BeSameAs(car); }
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); }
given_parking_boy_and_super_parking_boy_then_super_boy_can_not_manage_parking_boy() { var parkingLot = new OOParkingLot(1); var parkingBoy = new ParkingBoy(parkingLot); var superBoy = new SuperParkingBoy(parkingBoy as IParkingLot); superBoy.Park(new Car("car")); }
public void should_not_pick_car_when_the_car_is_not_in_parking_lot() { var superParkingBoy = new SuperParkingBoy(new ParkingLot(1)); var token = Guid.NewGuid().ToString(); superParkingBoy.Invoking(p => p.Pick(token)) .ShouldThrow <CarNotFoundException>() .WithMessage("Cannot find the car."); }
public void should_stopped_to_park() { Park park = new Park(1); Car car = new Car("JP123"); SuperParkingBoy boy = new SuperParkingBoy(park); boy.StopCar(car); Assert.Same(car, park.PickUpCar(car.CarNumber)); }
public void should_pick_up_car_from_park() { Park park = new Park(1); Car car = new Car("JP123"); SuperParkingBoy boy = new SuperParkingBoy(park); boy.StopCar(car); Assert.Same(car, boy.PickUpCar(car.CarNumber)); }
public void should_not_pick_correct_car_while_no_parking() { var parkingLotWithHighVacancyRate = CreateParkingLotAndParkSomeCar(4, 1); var parkingLotWithLowVacancyRate = CreateParkingLotAndParkSomeCar(3, 1); var superParkingBoy = new SuperParkingBoy(new[] { parkingLotWithHighVacancyRate, parkingLotWithLowVacancyRate }); const int illegalCarToken = 0; Assert.Same(null, superParkingBoy.Pick(illegalCarToken)); }
void should_can_pick_the_car_when_parking_boy_park_a_car() { var parkingBoy = new SuperParkingBoy(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_super_parking_boy() { var parkingLot = ParkingLotBuilder.Build(2, 1); var parkingBoy = new SuperParkingBoy(parkingLot); var parkingManager = new ParkingManager(parkingBoy); Assert.Equal("M 1 2" + NewLine + " B 1 2" + NewLine + " P 1 2", parkingManager.Report.ToString()); }
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); }
public void given_a_parkingLot_and_a_super_parking_boy_when_super_boy_park_a_car_then_the_car_in_the_parkingLot() { var firstParkinglot = new OOParkingLot(1); var superParkingBoy = new SuperParkingBoy(firstParkinglot); var car = new Car("car"); var carId = superParkingBoy.Park(car); Assert.AreSame(car, firstParkinglot.Pick(carId)); }
public void should_not_stop_when_park_have_zero_position() { Park park = new Park(0); SuperParkingBoy boy = new SuperParkingBoy(park); Car car = new Car("JP456"); boy.StopCar(car); Assert.Same(null, park.PickUpCar(car.CarNumber)); }
public void should_not_pick_up_car_when_repeat_pick_up() { Park park = new Park(1); Car car = new Car("JP123"); SuperParkingBoy boy = new SuperParkingBoy(park); boy.StopCar(car); boy.PickUpCar(car.CarNumber); Assert.Same(null, boy.PickUpCar(car.CarNumber)); }
public void should_pick_the_same_car_after_parked_it() { var parkingLot = new ParkingLot(1); var superParkingBoy = new SuperParkingBoy(parkingLot); var car = new Car(); var token = superParkingBoy.Park(car); var pickedCar = superParkingBoy.Pick(token); pickedCar.Should().BeSameAs(car); }
public void should_pick_up_car_from_first_park_when_two_parks_have_same_empty_rate() { Park firstPark = new Park(1); Park secondPark = new Park(1); Car car = new Car("JP123"); SuperParkingBoy boy = new SuperParkingBoy(firstPark, secondPark); boy.StopCar(car); Assert.Same(car, firstPark.PickUpCar(car.CarNumber)); }
public void should_park_one_car_to_parking_lot_which_have_high_vacancy_rate_and_less_parking_space() { var parkingLotWithHighRate = CreateParkingLotAndParkSomeCar(3, 1); var parkingLotWithLowRate = CreateParkingLotAndParkSomeCar(6, 3); var superParkingBoy = new SuperParkingBoy(new[] { parkingLotWithHighRate, parkingLotWithLowRate }); var car = new Car(); var carToken = superParkingBoy.Park(car); Assert.Same(car, parkingLotWithHighRate.Pick(carToken)); }
public void should_park_one_car_to_one_of_parking_lots_while_all_have_same_vacancy_rate() { var parkingLot = CreateParkingLotAndParkSomeCar(2, 1); var parkingLotWithSameRate = CreateParkingLotAndParkSomeCar(2, 1); var superParkingBoy = new SuperParkingBoy(new[] { parkingLot, parkingLotWithSameRate }); var car = new Car(); var carToken = superParkingBoy.Park(car); Assert.Same(car, CarParkingInOneOfParkingLots(new[] { parkingLot.Pick(carToken), parkingLotWithSameRate.Pick(carToken) })); }
public void should_pick_correct_car() { var parkingLotWithHighVacancyRate = CreateParkingLotAndParkSomeCar(5, 1); var parkingLotWithLowVacancyRate = CreateParkingLotAndParkSomeCar(3, 1); var superParkingBoy = new SuperParkingBoy(new[] { parkingLotWithHighVacancyRate, parkingLotWithLowVacancyRate }); var car = new Car(); var carToken = parkingLotWithHighVacancyRate.Park(car); Assert.Same(car, superParkingBoy.Pick(carToken)); }
public void given_a_parking_lot_and_a_super_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 superParkingBoy = new SuperParkingBoy(parkinglot); var manager = new ParkingManager(superParkingBoy); var car = new Car("car"); var carId = superParkingBoy.Park(car); Assert.AreSame(car, manager.Pick(carId)); }
public void should_park_car_when_there_is_one_parking_lot() { var parkingLot = new ParkingLot(1); var superParkingBoy = new SuperParkingBoy(new List <ParkingLot> { parkingLot }); var car = new Car(); var ticket = superParkingBoy.Park(car); Assert.Equal(car, parkingLot.Pick(ticket)); }
public void should_not_park_car_when_all_managed_parking_lots_are_full() { var parkingLot = new ParkingLotBuilder() .WithCapacity(1) .WithOccupiedParkingSpace(1) .Create(); var superParkingBoy = new SuperParkingBoy(parkingLot); superParkingBoy.Invoking(p => p.Park(new Car())) .ShouldThrow <ParkingFailedException>() .WithMessage("Cannot park at this moment."); }
public void should_park_car_when_manages_super_parking_boy() { var parkingLot = new ParkingLot(1); var parkingBoy = new SuperParkingBoy(parkingLot); var parkingManager = new ParkingManager(parkingBoy); var car = new Car(); var token = parkingManager.Park(car); var pickedCar = parkingManager.Pick(token); pickedCar.Should().BeSameAs(car); }
public void should_be_able_to_pick_car() { var car = new Car(); var parkingLot = new ParkingLot(1); var parkingBoy = new SuperParkingBoy(new List <ParkingLot>() { parkingLot }); var ticket = parkingLot.Park(car); Assert.Equal(car, parkingBoy.Pick(ticket)); }
public void should_pick_up_from_more_empty_rate_park_when_two_parks_have_different_empty_rate() { Park lessEmptyRatePark = new Park(2); Park moreEmptyRatePark = new Park(1); lessEmptyRatePark.StopCar(new Car("JP123")); SuperParkingBoy boy = new SuperParkingBoy(lessEmptyRatePark, moreEmptyRatePark); Car car = new Car("JP456"); boy.StopCar(car); Assert.Same(car, moreEmptyRatePark.PickUpCar(car.CarNumber)); }
public void should_be_able_to_park_car_if_parking_lots_has_same_free_space_rate() { var parkingLot1 = new ParkingLot(1); var parkingLot2 = new ParkingLot(1); var superParkingBoy = new SuperParkingBoy(new List <ParkingLot> { parkingLot1, parkingLot2 }); var car = new Car(); var ticket = superParkingBoy.Park(car); Assert.Equal(car, superParkingBoy.Pick(ticket)); }
public void should_decrease_free_space_rate_when_park_car() { var parkingLot = new ParkingLot(2); var superParkingBoy = new SuperParkingBoy(new List <ParkingLot> { parkingLot }); var freeSpaceRateBeforePark = parkingLot.FreeSpaceRate; superParkingBoy.Park(new Car()); var freeSpaceRateAfterPark = parkingLot.FreeSpaceRate; Assert.True(freeSpaceRateBeforePark > freeSpaceRateAfterPark); }
given_a_smart_boy_with_empty_parking_lot_and_a_super_boy_with_one_space_parking_lot_both_managed_by_parking_manager_when_parking_manager_park_the_car_then_super_boy_could_pick_the_car () { var emptyParkinglot = new OOParkingLot(0); var parkinglot = new OOParkingLot(1); var smartBoy = new SmartParkingBoy(emptyParkinglot); var superBoy = new SuperParkingBoy(parkinglot); var manager = new ParkingManager(smartBoy, superBoy); var car = new Car("car"); var carId = manager.Park(car); Assert.AreSame(car, superBoy.Pick(carId)); }
public void should_pick_car_from_parking_lot_2_if_the_car_is_in_parking_lot_2() { var parkingLot1 = new ParkingLot(1); var parkingLot2 = new ParkingLot(1); var parkingBoy = new SuperParkingBoy(new List <ParkingLot>() { parkingLot1, parkingLot2 }); var car = new Car(); var ticket = parkingLot2.Park(car); Assert.Equal(car, parkingBoy.Pick(ticket)); }
public void should_increase_free_space_rate_when_pick_car() { var parkingLot = new ParkingLot(2); var superParkingBoy = new SuperParkingBoy(new List <ParkingLot> { parkingLot }); var ticket = superParkingBoy.Park(new Car()); var freeSpaceRateBeforePick = parkingLot.FreeSpaceRate; superParkingBoy.Pick(ticket); var freeSpaceRateAfterPick = parkingLot.FreeSpaceRate; Assert.True(freeSpaceRateBeforePick < freeSpaceRateAfterPick); }
public void should_not_park_car_when_parking_lot_is_0_free_space_rate() { var parkingLot = new ParkingLot(1); parkingLot.Park(new Car()); var superParkingBoy = new SuperParkingBoy(new List <ParkingLot> { parkingLot }); var car = new Car(); var ticket = superParkingBoy.Park(car); Assert.Null(parkingLot.Pick(ticket)); }
public void should_report_when_manager_manages_one_super_parking_boy() { var parkingLot = new ParkingLotBuilder() .WithCapacity(2) .WithOccupiedParkingSpace(1) .Create(); var parkingBoy = new SuperParkingBoy(parkingLot); var parkingManager = new ParkingManager(parkingBoy); var parkingDirector = new ParkingDirector(parkingManager); parkingDirector.ParkingReport.ToString("markdown").Should().Be( "# M 1 2" + NewLine + "## B 1 2" + NewLine + "* P 1 2"); }
void should_park_car_to_the_parking_lot_which_has_the_larget_space_percent() { var lotPercent50 = new ParkingLot(2); lotPercent50.Park(new Car()); var lotPercent100 = new ParkingLot(1); var parkingBoy = new SuperParkingBoy(lotPercent50, lotPercent100); var car = new Car(); var token = parkingBoy.Park(car); var pickedCar = lotPercent100.Pick(token); Assert.Same(car, pickedCar); }
void should_pick_the_car_from_parking_lots_when_park_a_car_by_super_parking_boy() { const string carId = "ABC123"; var car = new Car(carId); var parkingLot = new ParkingLot(); var superParkingBoy = new SuperParkingBoy(new List <ParkingLot> { parkingLot }); superParkingBoy.Park(car); Car pickedCar = parkingLot.Pick(carId); Assert.Same(car, pickedCar); }
public void should_park_one_car_to_parking_lot_which_have_high_vacancy_rate_first_test() { var parkingLotWithHighRate = CreateParkingLotAndParkSomeCar(4, 1); var parkingLotWithLowRate = CreateParkingLotAndParkSomeCar(3, 1); var superParkingBoy = new SuperParkingBoy(new List <ParkingLot> { parkingLotWithHighRate, parkingLotWithLowRate }); var car = new Car(); var carToken = superParkingBoy.Park(car); Assert.Same(car, parkingLotWithHighRate.Pick(carToken)); }