示例#1
0
        public void should_get_message_when_parking_bot_to_parking_car()
        {
            var parkingLots = new List <ParkingLot>();
            var parkingLotA = new ParkingLot(20);
            var parkingLotB = new ParkingLot(20);

            parkingLots.Add(parkingLotA);
            parkingLots.Add(parkingLotB);
            for (int i = 0; i < 20; i++)
            {
                parkingLotA.Park(new Car());
            }

            for (int i = 0; i < 20; i++)
            {
                parkingLotB.Park(new Car());
            }

            var parkingBot = new ParkingBot(parkingLots);


            var exception = Assert.Throws <Exception>(() => parkingBot.Park(new Car()));

            Assert.Equal("ParkingLot is full", exception.Message);
        }
示例#2
0
        public void should_return_ticket_when_make_park_bot_park_a_car_given_parking_lot_has_only_one_space()
        {
            var parkingLot = new ParkingLot(1);
            var bot        = new ParkingBot(new List <ParkingLot> {
                parkingLot
            });
            var ticket = bot.Park(new Car());

            Assert.NotNull(ticket);
        }
示例#3
0
        public void should_throw_NoSpaceException_when_make_park_bot_park_a_car_given_parking_lot_no_space()
        {
            var parkingLot = new ParkingLot(0);
            var bot        = new ParkingBot(new List <ParkingLot> {
                parkingLot
            });
            var exception = Assert.Throws <NoSpaceException>(() => bot.Park(new Car()));

            Assert.Equal("no space", exception.Message);
        }
        void should_return_a_ticket_when_given_a_car_to_parking_bot()
        {
            var parkingBoy = new ParkingBot(new List <ParkingLot>
            {
                new ParkingLot(parkingLotSize)
            });
            var ticket = parkingBoy.Park(new Car());

            Assert.NotNull(ticket);
        }
示例#5
0
        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 parkingBoy = new ParkingBot(list);

            var ticket = parkingBoy.Park(new Car());

            Assert.NotNull(ticket);
        }
        void should_get_a_car_when_give_ticket_given_by_parking_bot()
        {
            var parkingBoy = new ParkingBot(new List <ParkingLot>
            {
                _parkingLot
            });
            var car    = new Car();
            var ticket = parkingBoy.Park(car);
            var getCar = _parkingLot.GetCar(ticket);

            Assert.Same(car, getCar);
        }
示例#7
0
        public void should_return_ticket_from_packing_bot_when_let_boy_to_packing_car()
        {
            var parkingLots = new List <ParkingLot>();
            var parkingLot  = new ParkingLot(20);

            parkingLots.Add(parkingLot);

            var parkingBot = new ParkingBot(parkingLots);
            var ticket     = parkingBot.Park(new Car());

            Assert.NotNull(ticket);
        }
        void should_return_same_ordered_list_when_given_ordered_list_to_parking_bot()
        {
            var parkingLot1        = new ParkingLot(parkingLotSize);
            var parkingLot2        = new ParkingLot(parkingLotSize);
            var managedParkingLots = new List <ParkingLot>
            {
                parkingLot1,
                parkingLot2
            };
            var parkingBoy = new ParkingBot(managedParkingLots);

            Assert.Equal(parkingLot2, parkingBoy.ManagedParkingLots[1]);
            Assert.Equal(parkingLot1, parkingBoy.ManagedParkingLots[0]);
        }
示例#9
0
        public void should_return_when_user_pick_a_car_given_the_ticket_is_created_by_bot()
        {
            var parkingLot1 = new ParkingLot(1);
            var parkingLot2 = new ParkingLot(1);
            var car         = new Car();
            var bot         = new ParkingBot(new List <ParkingLot> {
                parkingLot1, parkingLot2
            });
            var ticket = bot.Park(car);

            Assert.Equal(car, parkingLot1.Pick(ticket));
            var exception = Assert.Throws <InvalidTicketException>(() => parkingLot2.Pick(ticket));

            Assert.Equal("invalid ticket", exception.Message);
        }
示例#10
0
        public void should_park_car_to_A_when_parking_bot_to_parking_car()
        {
            var parkingLots = new List <ParkingLot>();
            var parkingLotA = new ParkingLot(20);
            var parkingLotB = new ParkingLot(20);

            parkingLots.Add(parkingLotA);
            parkingLots.Add(parkingLotB);

            var parkingBot = new ParkingBot(parkingLots);

            parkingBot.Park(new Car());

            Assert.Single(parkingLotA.ticketToCars);
        }
示例#11
0
        public void should_keep_order_when_make_park_bot_park_a_car_given_bot_own_two_parking_lot_first_parking_lot_has_two_spaces()
        {
            var firsLot   = new ParkingLot(2);
            var secondLot = new ParkingLot(0);
            var lots      = new List <ParkingLot>
            {
                firsLot, secondLot
            };
            var bot = new ParkingBot(lots);

            bot.Park(new Car());
            bot.Park(new Car());

            Assert.Equal(2, firsLot.CurrentCount());
            Assert.Equal(0, secondLot.CurrentCount());
        }
示例#12
0
        public void should_not_park_a_car_into_a_parking_lot_which_has_no_space()
        {
            var parkingLot = new ParkingLot(_capacity);

            for (var i = 0; i < 20; i++)
            {
                parkingLot.Park(new Car());
            }
            var list = new List <ParkingLot> {
                parkingLot
            };
            var parkingBoy = new ParkingBot(list);


            Assert.Throws <Exception>(() => parkingBoy.Park(new Car()));
        }
示例#13
0
        void should_return_error_message_when_given_a_car_to_parking_bot_while_parking_lots_are_full()
        {
            var parkingBoy = new ParkingBot(new List <ParkingLot>
            {
                new ParkingLot(parkingLotSize),
                new ParkingLot(parkingLotSize)
            });

            for (var i = 0; i < parkingLotSize * 2; i++)
            {
                parkingBoy.Park(new Car());
            }

            var error = Assert.Throws <Exception>(() => parkingBoy.Park(new Car()));

            Assert.Equal("Parking lots are full!", error.Message);
        }
示例#14
0
        public void should_park_into_first_parking_lot_when_have_two_available_parking_lots()
        {
            var parkingLotA  = new ParkingLot(_capacity);
            var parkingLotB  = new ParkingLot(_capacity);
            var preNumOfCarA = parkingLotA.GetAvailableSpotNumber();
            var preNumOfCarB = parkingLotB.GetAvailableSpotNumber();
            var car          = new Car();
            var list         = new List <ParkingLot>()
            {
                parkingLotA, parkingLotB
            };
            var parkingBoy = new ParkingBot(list);

            parkingBoy.Park(car);

            Assert.Equal(preNumOfCarA - 1, parkingLotA.GetAvailableSpotNumber());
            Assert.Equal(preNumOfCarB, parkingLotB.GetAvailableSpotNumber());
        }
示例#15
0
        public void should_return_exception_when_have_two_parking_lots_and_both_of_them_are_full()
        {
            var parkingLotA = new ParkingLot(_capacity);
            var parkingLotB = new ParkingLot(_capacity);

            for (var i = 0; i < 20; i++)
            {
                parkingLotA.Park(new Car());
                parkingLotB.Park(new Car());
            }
            var car  = new Car();
            var list = new List <ParkingLot>()
            {
                parkingLotA, parkingLotB
            };
            var parkingBoy = new ParkingBot(list);

            Assert.Throws <Exception>(() => parkingBoy.Park(car));
        }
示例#16
0
        void should_return_error_message_when_given_a_car_to_parking_bot_while_parking_lots_managed_by_him_are_full()
        {
            var notManagedParkingLot = new ParkingLot(parkingLotSize);
            var managedParkingLot    = new ParkingLot(parkingLotSize);
            var parkingBoy           = new ParkingBot(new List <ParkingLot>
            {
                managedParkingLot
            });

            for (var i = 0; i < parkingLotSize; i++)
            {
                parkingBoy.Park(new Car());
            }

            Assert.NotNull(notManagedParkingLot.Park(new Car()));
            var error = Assert.Throws <Exception>(() => parkingBoy.Park(new Car()));

            Assert.Equal("Parking lots are full!", error.Message);
        }
示例#17
0
        public void should_park_car_to_B_when_parking_bot_to_parking_car()
        {
            var parkingLots = new List <ParkingLot>();
            var parkingLotA = new ParkingLot(20);
            var parkingLotB = new ParkingLot(20);

            parkingLots.Add(parkingLotA);
            parkingLots.Add(parkingLotB);
            for (int i = 0; i < 20; i++)
            {
                parkingLotA.Park(new Car());
            }

            var parkingBot = new ParkingBot(parkingLots);

            parkingBot.Park(new Car());

            Assert.Equal(20, parkingLotA.ticketToCars.Count);
            Assert.Single(parkingLotB.ticketToCars);
        }
示例#18
0
        void should_park_car_at_first_empty_space_when_give_to_parking_bot()
        {
            var parkingLot1 = new ParkingLot(parkingLotSize);
            var parkingLot2 = new ParkingLot(parkingLotSize);
            var parkingBoy  = new ParkingBot(new List <ParkingLot>
            {
                parkingLot1,
                parkingLot2
            });

            for (var i = 0; i < parkingLotSize; i++)
            {
                parkingLot1.Park(new Car());
            }

            var car    = new Car();
            var ticket = parkingBoy.Park(car);

            Assert.NotNull(ticket);
            Assert.Throws <Exception>(() => parkingLot1.GetCar(ticket));
            Assert.Equal(car, parkingLot2.GetCar(ticket));
        }
示例#19
0
        public void should_park_into_second_parking_lot_when_have_two_parking_lots_and_second_is_available()
        {
            var parkingLotA = new ParkingLot(_capacity);
            var parkingLotB = new ParkingLot(_capacity);

            for (var i = 0; i < 20; i++)
            {
                parkingLotA.Park(new Car());
            }
            var preNumOfCarA = parkingLotA.GetAvailableSpotNumber();
            var preNumOfCarB = parkingLotB.GetAvailableSpotNumber();
            var car          = new Car();
            var list         = new List <ParkingLot>()
            {
                parkingLotA, parkingLotB
            };
            var parkingBoy = new ParkingBot(list);

            parkingBoy.Park(car);

            Assert.Equal(preNumOfCarA, parkingLotA.GetAvailableSpotNumber());
            Assert.Equal(preNumOfCarB - 1, parkingLotB.GetAvailableSpotNumber());
        }