def process_line(line): global parking line = line.split(" ") command = line[0] args = line[1:] try: if "create_parking_lot" in command: parking = Parking(int(args[0])) print("Created a parking lot with " + str(parking.size) + " slots") elif "park" in command: slot = parking.newCar(args[0], args[1]) if slot == -1: print("Sorry, parking lot is full") else: print("Allocated slot number: " + str(slot)) elif "leave" in command: result = parking.leave(int(args[0])) print("Slot number " + str(result[0]) + " is free") elif "registration_numbers_for_cars_with_colour" in command: cars = parking.find_cars_by_color(args[0]) for i in cars: print(i[1].getRegNo(), end=" ") print("") elif "slot_numbers_for_cars_with_colour" in command: cars = parking.find_cars_by_color(args[0]) if cars == None: print("Not found") else: for i in cars: print(i[0], end=" ") print("") elif "slot_number_for_registration_number " in command: slot = parking.find_car_by_reg_no(args[0]) print(slot) if slot: print(slot) elif "status" in command: print("Slot No\tReg No\tColour") for i in range(0, len(parking.lot)): if parking.lot[i]: print("%d\t%s\t%s" % (i + 1, parking.lot[i].reg_no, parking.lot[i].color), end="") except ValueError: print("Invalid Data Entered!") except TypeError: print("Datatype Mismatch!")
def setUp(self): self.lot = Parking(5)
class TestParkingLotMethods(unittest.TestCase): def setUp(self): self.lot = Parking(5) def test_add_new_cars_to_lot(self): self.assertEqual(1, self.lot.newCar("KA-01-HH-1234", "White")) self.assertEqual(2, self.lot.newCar("KA-02-HH-1234", "White")) self.assertEqual(3, self.lot.newCar("KA-03-HH-1234", "White")) self.assertEqual(self.lot.currentCarCount(), 3) def test_add_and_remove_multiple_new_cars_to_lot(self): self.assertEqual(1, self.lot.newCar("KA-01-HH-1234", "White")) self.assertEqual(2, self.lot.newCar("KA-02-HH-1234", "White")) self.lot.leave(1) self.assertEqual(1, self.lot.newCar("KA-03-HH-1234", "White")) def test_new_cars_returns_lot_full_when_lot_full(self): self.assertEqual(1, self.lot.newCar("KA-01-HH-1234", "White")) self.assertEqual(2, self.lot.newCar("KA-02-HH-1234", "White")) self.assertEqual(3, self.lot.newCar("KA-03-HH-1234", "White")) self.assertEqual(4, self.lot.newCar("KA-04-HH-1234", "White")) self.assertEqual(5, self.lot.newCar("KA-05-HH-1234", "White")) print(self.lot.lot) self.assertEqual(-1, self.lot.newCar("KA-06-HH-1234", "White")) def test_leave_returns_error_if_slot_is_empty(self): self.assertEqual(self.lot.leave(3), -1) def test_find_cars_by_color(self): self.lot.newCar("KA-01-HH-1234", "white") self.lot.newCar("KA-02-HH-1234", "White") self.lot.newCar("KA-03-HH-1234", "Black") self.lot.newCar("KA-04-HH-1234", "black") self.lot.newCar("KA-05-HH-1234", "BLACK") white_cars = self.lot.find_cars_by_color("WHITE") black_cars = self.lot.find_cars_by_color("bLaCk") self.assertEqual(len(white_cars), 2) self.assertEqual(len(black_cars), 3) #find_cars_by_color returns a list of tuples having (slot, Car) self.assertEqual(white_cars[1][0], 2) self.assertEqual(black_cars[1][0], 4) self.assertIsInstance(white_cars[0][1], Car) def test_find_cars_by_color_raises_error_if_arg_not_str(self): self.assertRaises(ValueError, self.lot.find_cars_by_color, 123) def test_find_car_by_reg_no(self): self.lot.newCar("KA-01-HH-1234", "white") self.lot.newCar("KA-02-HH-1234", "red") self.lot.newCar("KA-03-HH-1234", "green") #find_car_by_reg_no returns slot self.assertEqual(self.lot.find_car_by_reg_no("KA-02-HH-1234"), 2) def test_find_car_by_reg_no_returns_none_if_not_found(self): self.assertEqual(self.lot.find_car_by_reg_no("KA-02-HH-1234"), None)
def test_create_new_parking_lot(self): park_lot = Parking(6) result = park_lot.size self.assertEqual(6, result)