class Kernel(object): ''' @summary: the abstraction of the operative system ''' def __init__(self, clock,programLoader,imanager,delivery,devices=[]): self.clock = clock self.programLoader = programLoader self.delivery = delivery self.imanager = imanager self.devices = devices def startUp(self): self.clock.start() for device in self.devices: device.start() def run(self,programName,priority=0,args=[]): self.pid = self.programLoader.loadProcess(programName,priority,args) return self.pid def ps(self): return self.programLoader.getPcbTable().getPS() def kill(self,pid): self.imanager.kill(pid) def installNewDevice(self,deviceName,deviceLogger): self.device = Device(deviceName,self.imanager) self.device.setLogger(deviceLogger) self.delivery.newDevice(self.device) self.devices.append(self.device) def manual(self,programName): return self.programLoader.manual(programName) def in_disk(self, programName): return self.programLoader.in_disk(programName)
class Test(unittest.TestCase): def setUp(self): self.pcb1 = Mock() self.pcb2 = Mock() self.interruptor = Mock() self.logger = Mock() self.printLine1 = InstIO("Impresion 1", 0) self.printLine2 = InstIO("Impresion 2", 0) self.queue = Queue() self.device = Device("Printer", self.interruptor, self.queue) # 0 equals to the device cod printer self.device.setLogger(self.logger) def test_when_process_is_called_the_instruccion_runs_and_ioDone_is_sent(self): self.packageOne = [self.pcb1, self.printLine1] self.device.proccess(self.packageOne) # arrange verify(self.interruptor).ioDone(self.pcb1) # assert
class Kernel(object): ''' @summary: the abstraction of the operative system ''' def __init__(self, clock, programLoader, imanager, delivery, devices=[]): self.clock = clock self.programLoader = programLoader self.delivery = delivery self.imanager = imanager self.devices = devices def startUp(self): self.clock.start() for device in self.devices: device.start() def run(self, programName, priority=0, args=[]): self.pid = self.programLoader.loadProcess(programName, priority, args) return self.pid def ps(self): return self.programLoader.getPcbTable().getPS() def kill(self, pid): self.imanager.kill(pid) def installNewDevice(self, deviceName, deviceLogger): self.device = Device(deviceName, self.imanager) self.device.setLogger(deviceLogger) self.delivery.newDevice(self.device) self.devices.append(self.device) def manual(self, programName): return self.programLoader.manual(programName) def in_disk(self, programName): return self.programLoader.in_disk(programName)