def test_parking_lot_full(self):
     car1 = Car(reg_no="231A", color="Black")
     car2 = Car(reg_no="563A", color="Black")
     self.parking_lot_obj.park_vehicle(car1)
     self.parking_lot_obj.park_vehicle(car2)
     car4 = Car(reg_no="897A", color="white")
     self.assertRaises(Exception, self.parking_lot_obj.park_vehicle, car4)
     self.parking_lot_obj.unpark_vehicle(1)
     self.parking_lot_obj.unpark_vehicle(2)
 def test_get_slot_by_vehicle_reg_no(self):
     car1 = Car(reg_no="231A", color="Black")
     car2 = Car(reg_no="563A", color="White")
     self.parking_lot_obj.park_vehicle(car1)
     self.parking_lot_obj.park_vehicle(car2)
     self.assertEqual(self.parking_lot_obj.get_slot_no_by_reg_no("231A"), 1)
     self.assertEqual(self.parking_lot_obj.get_slot_no_by_reg_no("INVALID"),
                      "Not found")
     self.parking_lot_obj.unpark_vehicle(1)
     self.parking_lot_obj.unpark_vehicle(2)
 def test_get_slot_and_reg_no_by_color(self):
     car2 = Car(reg_no="231A", color="Black")
     car3 = Car(reg_no="563A", color="Black")
     self.parking_lot_obj.park_vehicle(car2)
     self.parking_lot_obj.park_vehicle(car3)
     res = self.parking_lot_obj.get_reg_no_by_color("Black")
     self.assertEqual(res, ['231A', '563A'])
     slot = self.parking_lot_obj.get_slot_no_by_color("Black")
     self.assertEqual(slot, [1, 2])
     self.parking_lot_obj.unpark_vehicle(1)
     self.parking_lot_obj.unpark_vehicle(2)
    def read_car(self):
        if not self.read_boolean():
            return None

        return Car(self.read_long(), self.read_double(), self.read_double(),
                   self.read_double(), self.read_double(), self.read_double(),
                   self.read_double(), self.read_double(), self.read_double(),
                   self.read_double(), self.read_long(), self.read_int(),
                   self.read_boolean(), self.read_enum(CarType),
                   self.read_int(), self.read_int(), self.read_int(),
                   self.read_int(), self.read_int(), self.read_int(),
                   self.read_int(), self.read_int(), self.read_double(),
                   self.read_double(), self.read_double(), self.read_int(),
                   self.read_int(), self.read_int(), self.read_boolean())
Beispiel #5
0
    def process_input(self, input_str):
        """
        This function compares the input string against a set of enum commands else ignores.
        :param input_str: input command
        """
        splitted_input = input_str.split(" ")
        instruction = splitted_input[0]
        if instruction == Command.CREATE_PARKING_LOT.value:
            if len(splitted_input) == 2:
                self.parking_lot_obj = get_in_memory_dao(
                    DaoType.in_memory_dao, splitted_input[1])

        elif instruction == Command.PARK.value:
            if self.parking_lot_obj and len(splitted_input) == 3:
                car_obj = Car(reg_no=splitted_input[1],
                              color=splitted_input[2])
                ack = self.parking_lot_obj.park_vehicle(car_obj)
                print(ack)

        elif instruction == Command.LEAVE.value:
            if self.parking_lot_obj and len(splitted_input) == 2:
                ack = self.parking_lot_obj.unpark_vehicle(splitted_input[1])
                print(ack)
        elif instruction == Command.STATUS.value:
            if self.parking_lot_obj and len(splitted_input) == 1:
                self.parking_lot_obj.print_status()

        elif instruction == Command.REG_NUMBER_FOR_CARS_WITH_COLOR.value:
            if self.parking_lot_obj and len(splitted_input) == 2:
                result = self.parking_lot_obj.get_reg_no_by_color(
                    splitted_input[1])
                print(", ".join(result))

        elif instruction == Command.SLOTS_NUMBER_FOR_CARS_WITH_COLOR.value:
            if self.parking_lot_obj and len(splitted_input) == 2:
                result = self.parking_lot_obj.get_slot_no_by_color(
                    splitted_input[1])
                result = list(map(lambda x: str(x), result))
                print(", ".join(result))

        elif instruction == Command.SLOTS_NUMBER_FOR_REG_NUMBER.value:
            if self.parking_lot_obj and len(splitted_input) == 2:
                result = self.parking_lot_obj.get_slot_no_by_reg_no(
                    splitted_input[1])
                print(result)
Beispiel #6
0
def get_data_from_vegvesenet(license_plate):

    response = requests.get(VEGVESENET_API_ENDPOINT + license_plate).json()
    status = response.get("status")
    if status == 500:
        raise ServiceUnavailableException(
            "Vegvesenet's service is not available. Used up quota of calls.")
    if status == 404:
        raise LicensePlateNotFoundException(
            "No car registered with license plate: " + license_plate)

    car = Car()
    car = car.load_data_from_vegvesenet(response)
    if car.has_loaded_data():
        return car.get_data()
    else:
        raise CarInformationNotLoadedException(
            "Could not load car information on license plate " + license_plate)
 def test_parking_same_car_twice(self):
     car = Car(reg_no="123A", color="Silver")
     ack = self.parking_lot_obj.park_vehicle(car)
     self.assertTrue(ack.startswith("Allocated slot number"))
     self.assertRaises(Exception, self.parking_lot_obj.park_vehicle, car)
     self.parking_lot_obj.unpark_vehicle(1)
 def test_simple_parking(self):
     car = Car(reg_no="123A", color="Silver")
     ack = self.parking_lot_obj.park_vehicle(car)
     self.assertTrue(ack, "Allocated slot number: 1")
     self.parking_lot_obj.unpark_vehicle(1)