示例#1
0
        public void should_be_able_to_pick_two_cars_when_parked_two_cars_to_a_not_full_parking_lot()
        {
            var parkingLot = new ParkingLot(2);

            var theFirstCar     = new Car();
            var theFirstTicket  = parkingLot.Park(theFirstCar);
            var theSecondCar    = new Car();
            var theSecondTicket = parkingLot.Park(theSecondCar);

            Assert.Same(theFirstCar, parkingLot.Pick(theFirstTicket));
            Assert.Same(theSecondCar, parkingLot.Pick(theSecondTicket));
        }
示例#2
0
        public void should_be_able_to_park_car_when_a_parking_lot_is_no_longer_full()
        {
            var parkingLot = new ParkingLot(1);
            var ticket     = parkingLot.Park(new Car());

            parkingLot.Pick(ticket);

            var anotherCar    = new Car();
            var anotherTicket = parkingLot.Park(anotherCar);

            Assert.Same(anotherCar, parkingLot.Pick(anotherTicket));
        }
示例#3
0
        public void should_fail_to_pick_the_same_car_when_a_car_is_no_longer_in_a_parking_lot()
        {
            var parkingLot = new ParkingLot(1);
            var ticket     = parkingLot.Park(new Car());

            parkingLot.Pick(ticket);

            Assert.Throws <NoCarException>(
                () =>
            {
                parkingLot.Pick(ticket);
            });
        }
示例#4
0
        public void should_be_able_to_park_and_pick_cars_to_a_not_full_parking_lot()
        {
            var parkingLot      = new ParkingLot(10);
            var theFirstCar     = new Car();
            var theFirstTicket  = parkingLot.Park(theFirstCar);
            var theSecondCar    = new Car();
            var theSecondTicket = parkingLot.Park(theSecondCar);

            Assert.Same(theFirstCar, parkingLot.Pick(theFirstTicket));

            var theThirdCar = new Car();

            parkingLot.Park(theThirdCar);

            Assert.Same(theSecondCar, parkingLot.Pick(theSecondTicket));
        }
示例#5
0
        public void should_be_able_to_pick_the_same_car_when_park_a_car_to_a_parking_lot()
        {
            var parkingLot = new ParkingLot(1);
            var car        = new Car();

            var ticket = parkingLot.Park(car);

            Assert.Same(car, parkingLot.Pick(ticket));
        }
示例#6
0
        public void should_be_able_to_pick_the_same_car_from_the_parking_lot_when_smart_parking_boy_park_the_car()
        {
            var parkingLot = new ParkingLot(1);
            var parkingBoy = ParkingBoy.Smart(parkingLot);
            var car        = new Car();

            var ticket = parkingBoy.Park(car);

            Assert.Same(car, parkingLot.Pick(ticket));
        }
示例#7
0
        public void should_be_able_to_pick_the_same_car_from_the_parking_lot_with_maximum_vacancy_count_and_no_relationship_with_the_parking_lot_order()
        {
            var parkingLotWithLessVacancyCount = new ParkingLot(1);
            var parkingLotWithMoreVacancyCount = new ParkingLot(2);
            var smartParkingBoy = ParkingBoy.Smart(parkingLotWithMoreVacancyCount, parkingLotWithLessVacancyCount);
            var car             = new Car();

            var ticket = smartParkingBoy.Park(car);

            Assert.Same(car, parkingLotWithMoreVacancyCount.Pick(ticket));
        }
示例#8
0
        public void should_be_able_to_pick_the_same_car_from_the_first_parking_lot_when_super_parking_boy_has_two_parking_lot_and_park_the_car()
        {
            var parkingLot1 = new ParkingLot(1);
            var parkingLot2 = new ParkingLot(1);
            var parkingBoy  = ParkingBoy.Super(parkingLot1, parkingLot2);
            var car         = new Car();

            var ticket = parkingBoy.Park(car);

            Assert.Same(car, parkingLot1.Pick(ticket));
        }
示例#9
0
        public void should_fail_to_pick_a_car_when_the_car_is_not_in_a_parking_lot()
        {
            var parkingLot = new ParkingLot(1);
            var ticketOfACarNotInParkingLot = 0;

            Assert.Throws <NoCarException>(
                () =>
            {
                parkingLot.Pick(ticketOfACarNotInParkingLot);
            });
        }
示例#10
0
        public void should_park_the_car_to_the_parking_lot_with_highest_vacancy_rate_and_no_relationship_with_the_parking_lot_order()
        {
            var parkingLotWithLowVacancyRate = new ParkingLot(4);

            parkingLotWithLowVacancyRate.Park(new Car());
            var parkingLotWithHighVacancyRate = new ParkingLot(2);
            var parkingBoy = ParkingBoy.Super(parkingLotWithLowVacancyRate, parkingLotWithHighVacancyRate);
            var car        = new Car();

            var ticket = parkingBoy.Park(car);

            Assert.Same(car, parkingLotWithHighVacancyRate.Pick(ticket));
        }
示例#11
0
        public void should_be_able_to_pick_the_same_car_from_the_second_parking_lot_when_parking_boy_has_two_parking_lot_with_first_one_full_and_park_the_car()
        {
            var parkingLot1 = new ParkingLot(1);

            parkingLot1.Park(new Car());
            var parkingLot2 = new ParkingLot(1);
            var parkingBoy  = ParkingBoy.Default(parkingLot1, parkingLot2);
            var car         = new Car();

            var ticket = parkingBoy.Park(car);

            Assert.Same(car, parkingLot2.Pick(ticket));
        }