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())
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)
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)