class UnitTestCreateslotsMethod(TestCase):
    def setUp(self):
        self.dao = ParkingLotDao()
        self.assertEqual(self.dao.capacity, 0)
        self.assertEqual(len(self.dao.empty_slots_heap), 0)
        self.assertEqual(len(self.dao.slot_number_to_slot), 0)

    def test_with_valid_size(self):
        self.assertTrue(self.dao.create_slots(3))
        self.assertEqual(self.dao.capacity, 3)
        self.assertEqual(len(self.dao.empty_slots_heap), 3)
        self.assertEqual(len(self.dao.slot_number_to_slot), 3)

    def test_with_invalid_size(self):
        self.assertFalse(self.dao.create_slots(-3))
        self.assertEqual(self.dao.capacity, 0)
        self.assertEqual(len(self.dao.empty_slots_heap), 0)
        self.assertEqual(len(self.dao.slot_number_to_slot), 0)

        self.assertFalse(self.dao.create_slots(3.2))
        self.assertEqual(self.dao.capacity, 0)
        self.assertEqual(len(self.dao.empty_slots_heap), 0)
        self.assertEqual(len(self.dao.slot_number_to_slot), 0)

        self.assertFalse(self.dao.create_slots("3"))
        self.assertEqual(self.dao.capacity, 0)
        self.assertEqual(len(self.dao.empty_slots_heap), 0)
        self.assertEqual(len(self.dao.slot_number_to_slot), 0)
    def setUp(self):
        self.dao = ParkingLotDao()
        self.dao.create_slots(3)
        d1 = Driver(18)
        v1 = Vehicle("num1", d1)
        self.dao.park_vehicle_at_closest_empty_slot(v1)
        d2 = Driver(18)
        v2 = Vehicle("num2", d2)
        self.dao.park_vehicle_at_closest_empty_slot(v2)

        d3 = Driver(20)
        v3 = Vehicle("num3", d3)
        self.dao.park_vehicle_at_closest_empty_slot(v3)
Beispiel #3
0
    def setUp(self):
        self.dao = ParkingLotDao()
        self.service = ParkingLotService(self.dao)
        self.service.create_parking_lot_of_size(3)

        d1 = Driver(18)
        v1 = Vehicle("num1", d1)
        self.service.park_vehicle(v1)

        d2 = Driver(18)
        v2 = Vehicle("num2", d2)
        self.service.park_vehicle(v2)

        d3 = Driver(20)
        v3 = Vehicle("num3", d3)
        self.service.park_vehicle(v3)
 def setUp(self):
     self.dao = ParkingLotDao()
     self.assertEqual(self.dao.capacity, 0)
     self.assertEqual(len(self.dao.empty_slots_heap), 0)
     self.assertEqual(len(self.dao.slot_number_to_slot), 0)
class TestParkClosest(TestCase):
    def setUp(self):
        self.dao = ParkingLotDao()
        self.assertEqual(self.dao.capacity, 0)
        self.assertEqual(len(self.dao.empty_slots_heap), 0)
        self.assertEqual(len(self.dao.slot_number_to_slot), 0)

    def test_valid_vehicle_parking(self):
        self.assertTrue(self.dao.create_slots(3))
        self.assertEqual(self.dao.capacity, 3)
        self.assertEqual(len(self.dao.empty_slots_heap), 3)
        self.assertEqual(len(self.dao.slot_number_to_slot), 3)
        driver = Driver(22)
        vehicle1 = Vehicle("pb08-11-22-random", driver)
        parked_slot = self.dao.park_vehicle_at_closest_empty_slot(vehicle1)
        self.assertEqual(len(self.dao.empty_slots_heap), 2)
        self.assertEqual(parked_slot.number, 1)

        driver = Driver(23)
        vehicle1clone = Vehicle("pb08-11-22-random", driver)
        with self.assertRaises(DuplicateVehicleError):
            parked_slot = self.dao.park_vehicle_at_closest_empty_slot(
                vehicle1clone)
            self.assertEqual(len(self.dao.empty_slots_heap), 2)

        driver = Driver(23)
        vehicle2 = Vehicle("pb08-11-23-random", driver)
        parked_slot = self.dao.park_vehicle_at_closest_empty_slot(vehicle2)
        self.assertEqual(len(self.dao.empty_slots_heap), 1)
        self.assertEqual(parked_slot.number, 2)

        driver = Driver(23)
        vehicle3 = Vehicle("pb08-11-33-random", driver)
        parked_slot = self.dao.park_vehicle_at_closest_empty_slot(vehicle3)
        self.assertEqual(len(self.dao.empty_slots_heap), 0)
        self.assertEqual(parked_slot.number, 3)

        driver = Driver(23)
        vehicle4 = Vehicle("pb08-11-34-random", driver)
        with self.assertRaises(ParkingFullError):
            parked_slot = self.dao.park_vehicle_at_closest_empty_slot(vehicle4)
            self.assertEqual(len(self.dao.empty_slots_heap), 0)

    def test_with_not_created_parking_slot(self):
        with self.assertRaises(ParkingNotCreatedError):
            driver = Driver(18)
            v = Vehicle("rndomplate", driver)
            parked_slot = self.dao.park_vehicle_at_closest_empty_slot(v)

    def test_with_invalid_driver(self):
        self.assertTrue(self.dao.create_slots(3))
        with self.assertRaises(InvalidDriverError):
            driver = None
            v = Vehicle("rndomplate", driver)
            parked_slot = self.dao.park_vehicle_at_closest_empty_slot(v)
        with self.assertRaises(InvalidDriverError):
            driver = Driver(-23)
        with self.assertRaises(InvalidDriverError):
            driver = Driver(None)
            v = Vehicle("rndomplate", driver)
            parked_slot = self.dao.park_vehicle_at_closest_empty_slot(v)

    def test_with_none_vehicle(self):
        self.assertTrue(self.dao.create_slots(3))
        self.assertEqual(self.dao.capacity, 3)
        self.assertEqual(len(self.dao.empty_slots_heap), 3)
        self.assertEqual(len(self.dao.slot_number_to_slot), 3)
        with self.assertRaises(NoneVehicleError):
            parked_slot = self.dao.park_vehicle_at_closest_empty_slot(None)
        self.assertEqual(len(self.dao.empty_slots_heap), 3)

    def test_with_unpark(self):
        self.assertTrue(self.dao.create_slots(3))
        self.assertEqual(self.dao.capacity, 3)
        self.assertEqual(len(self.dao.empty_slots_heap), 3)
        self.assertEqual(len(self.dao.slot_number_to_slot), 3)
        driver = Driver(22)
        vehicle1 = Vehicle("pb08-11-22-random", driver)
        parked_slot = self.dao.park_vehicle_at_closest_empty_slot(vehicle1)
        self.assertEqual(len(self.dao.empty_slots_heap), 2)
        self.assertEqual(parked_slot.number, 1)

        driver = Driver(23)
        vehicle2 = Vehicle("pb08-11-23-random", driver)
        parked_slot = self.dao.park_vehicle_at_closest_empty_slot(vehicle2)
        self.assertEqual(len(self.dao.empty_slots_heap), 1)
        self.assertEqual(parked_slot.number, 2)

        driver = Driver(23)
        vehicle3 = Vehicle("pb08-11-33-random", driver)
        parked_slot = self.dao.park_vehicle_at_closest_empty_slot(vehicle3)
        self.assertEqual(len(self.dao.empty_slots_heap), 0)
        self.assertEqual(parked_slot.number, 3)

        driver = Driver(23)
        vehicle4 = Vehicle("pb08-11-34-random", driver)
        with self.assertRaises(ParkingFullError):
            parked_slot = self.dao.park_vehicle_at_closest_empty_slot(vehicle4)
            self.assertEqual(len(self.dao.empty_slots_heap), 0)
        self.dao.unpark_vehicle_at_slot_number(3)
        self.dao.unpark_vehicle_at_slot_number(1)
        parked_slot = self.dao.park_vehicle_at_closest_empty_slot(vehicle4)
        self.assertEqual(len(self.dao.empty_slots_heap), 1)
        self.assertEqual(parked_slot.number, 1)
class IntegrationTestGovtRegulationQueries(TestCase):
    def setUp(self):
        self.dao = ParkingLotDao()
        self.dao.create_slots(3)
        d1 = Driver(18)
        v1 = Vehicle("num1", d1)
        self.dao.park_vehicle_at_closest_empty_slot(v1)
        d2 = Driver(18)
        v2 = Vehicle("num2", d2)
        self.dao.park_vehicle_at_closest_empty_slot(v2)

        d3 = Driver(20)
        v3 = Vehicle("num3", d3)
        self.dao.park_vehicle_at_closest_empty_slot(v3)

    def test_vehicle_number_to_slot(self):
        slot = self.dao.get_slots_by_vehicle_number("num1")
        self.assertEqual(slot.parked_vehicle.number, "num1")
        self.assertEqual(slot.number, 1)

        slot = self.dao.get_slots_by_vehicle_number("num3")
        self.assertEqual(slot.parked_vehicle.number, "num3")
        self.assertEqual(slot.number, 3)
        slot = self.dao.get_slots_by_vehicle_number("num2")
        self.assertEqual(slot.parked_vehicle.number, "num2")
        self.assertEqual(slot.number, 2)

        slot = self.dao.get_slots_by_vehicle_number("nonparkednumber")
        self.assertEqual(slot, None)

    def test_slot_from_age(self):
        slots = self.dao.get_slots_by_driver_age(18)
        self.assertEqual(slots[0].number, 1)
        self.assertEqual(slots[1].number, 2)

        slots = self.dao.get_slots_by_driver_age(20)
        self.assertEqual(slots[0].number, 3)

        slots = self.dao.get_slots_by_driver_age(14)
        self.assertEqual(len(slots), 0)

    def test_parked_vehicle_from_age(self):
        vehicles = self.dao.get_parked_vehicles_of_driver_age(18)
        self.assertEqual(vehicles[0].number, "num1")
        self.assertEqual(vehicles[1].number, "num2")

        vehicles = self.dao.get_parked_vehicles_of_driver_age(20)
        self.assertEqual(vehicles[0].number, "num3")

        vehicles = self.dao.get_parked_vehicles_of_driver_age(14)
        self.assertEqual(len(vehicles), 0)

    def test_with_unpark_commands(self):
        unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(1)
        self.assertEqual(unparked_vehicle.number, "num1")
        self.assertEqual(unparked_vehicle.driver.age, 18)

        slots = self.dao.get_slots_by_driver_age(18)
        vehicles = self.dao.get_parked_vehicles_of_driver_age(18)
        self.assertEqual(slots[0].number, 2)
        self.assertEqual(vehicles[0].number, "num2")
        slot = self.dao.get_slots_by_vehicle_number("num1")
        self.assertEqual(slot, None)

        slots = self.dao.get_slots_by_driver_age(20)
        vehicles = self.dao.get_parked_vehicles_of_driver_age(18)

        self.dao.unpark_vehicle_at_slot_number(2)
        slots = self.dao.get_slots_by_driver_age(18)
        self.assertEqual(len(slots), 0)

        unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(3)
        slots = self.dao.get_slots_by_driver_age(20)
        self.assertEqual(len(slots), 0)
        unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(3)
        self.assertEqual(unparked_vehicle, None)
class TestUnparkSlotNumber(TestCase):
    def setUp(self):
        self.dao = ParkingLotDao()
        self.dao.create_slots(3)
        d1 = Driver(18)
        v1 = Vehicle("num1", d1)
        self.dao.park_vehicle_at_closest_empty_slot(v1)
        d2 = Driver(18)
        v2 = Vehicle("num2", d2)
        self.dao.park_vehicle_at_closest_empty_slot(v2)

        d3 = Driver(20)
        v3 = Vehicle("num3", d3)
        self.dao.park_vehicle_at_closest_empty_slot(v3)

    def test_unpark(self):
        unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(2)
        self.assertEqual(unparked_vehicle.number, "num2")
        self.assertEqual(unparked_vehicle.driver.age, 18)

        unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(1)
        self.assertEqual(unparked_vehicle.number, "num1")
        self.assertEqual(unparked_vehicle.driver.age, 18)

        unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(3)
        self.assertEqual(unparked_vehicle.number, "num3")
        self.assertEqual(unparked_vehicle.driver.age, 20)

        unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(3)
        self.assertEqual(unparked_vehicle, None)

        unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(2)
        self.assertEqual(unparked_vehicle, None)

        unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(1)
        self.assertEqual(unparked_vehicle, None)

        with self.assertRaises(SlotNotPresentError):
            unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(4)
            self.assertEqual(unparked_vehicle, None)

        with self.assertRaises(SlotNotPresentError):
            unparked_vehicle = self.dao.unpark_vehicle_at_slot_number(-2)
            self.assertEqual(unparked_vehicle, None)
Beispiel #8
0
 def setUp(self):
     self.dao = ParkingLotDao()
     self.service = ParkingLotService(self.dao)
 def __init__(self):
     dao = ParkingLotDao()
     self.parking_lot_service = ParkingLotService(dao)