class ParkService(ABC): def __init__(self): self.lotHandler = None @property def IsInitialized(self): return self.lotHandler is not None @abstractmethod def allow(self, car, slotNum): pass def InitializeParkingLot(self, capacity): if self.lotHandler is None: self.lotHandler = LotHandler(capacity) return ParkingLotInit.format(capacity), self.lotHandler else: raise Exception('Already Initialized Parking Lot') def CheckCarParkedAlready(self, car): return self.lotHandler.IsCarParked(car) def ShowStatus(self): return self.lotHandler.slots def RegNumsByColor(self, color): result = self.lotHandler.GetRegNumsByColor(color) return ', '.join(result) def SlotNumsByColor(self, color): result = self.lotHandler.GetSlotNumsByColor(color) return ', '.join(result) def SlotNumForRegNum(self, regNum): return self.lotHandler.GetSlotNumByRegNum(regNum)
def test_car_parked_already(self): # Arrange lh = LotHandler(2) firstCar = Car('KA-01-HH-1234', 'White') duplicateCar = Car('KA-01-HH-1234', 'White') # Act lh.FillSlot(firstCar, 1) lh.FillSlot(duplicateCar, 2) # Assert self.assertTrue(lh.IsCarParked(duplicateCar))