def load_a_io_instruction_in_a_program(self):
     program = Program("IO")
     manager = Manager(self.scheduler, self.pcb_table, self.memory_manager)
     interruption_handler = InterruptionHandler(manager)
     self.a_kernel.set_interruption_handler(interruption_handler)
     self.cpu.kernel = self.a_kernel
     program.addInstruction(self.instruction_io)
     program.addInstruction(self.instruction_io)
     self.write_program(program,self.memory)
     self.setup_load_of_a_program_in_memory(2, program, 2)
 def load_a_io_instruction_in_a_program(self):
     program = Program("IO")
     self.a_kernel.set_scheduler(self.scheduler)
     interruption_manager = InterruptionHandler(self.cpu)
     load_in_interruption_manager = Handle_Loaders()
     load_in_interruption_manager.load_handlers(interruption_manager)
     self.a_kernel.set_interruption_handler(interruption_manager)
     instruction = InstructionIO()
     program.addInstruction(instruction)
     program.addInstruction(instruction)
     self.write_program(program,self.memory)
     self.setup_load_of_a_program_in_memory(2, program, 2)
 def load_a_instruction_in_a_program(self):
     program = Program("SIN-IO")
     self.a_kernel.set_scheduler(self.scheduler)
     self.a_kernel.set_pcb_table(self.pcb_table)
     interruption_manager = InterruptionHandler(self.cpu)
     self.a_kernel.set_interruption_handler(interruption_manager)
     load_in_interruption_manager = Handle_Loaders()
     load_in_interruption_manager.load_handlers(interruption_manager)
     instruction = Instruction("Texto")
     program.addInstruction(instruction)
     program.addInstruction(instruction)
     self.write_program(program,self.memory)
     self.setup_load_of_a_program_in_memory(2, program, 1)
class TestPCBInfoHolder(unittest.TestCase):

    def setUp(self):
        self.program = Program("AProgram")
        self.program.addInstruction(Instruction("Hola"))
        self.program.addInstruction(Instruction("Chau"))
        self.page_holder = PageHolder(self.program)
        self.pcb = PCB(0, 2, self.page_holder)
        self.page_creator = PageCreator(1)
        self.page_creator.create(self.pcb,1)

    def test_pcb_ni_idea(self):
        self.assertEqual(2, len(self.pcb.get_pages()))

    def test_i_increment_my_pc_and_ask_if_has_finished(self):
        self.page_holder.increment()
        self.assertTrue(self.page_holder.has_finished())
 def setUp(self):
     self.program = Program("AProgram")
     self.program.addInstruction(Instruction("Hola"))
     self.program.addInstruction(Instruction("Chau"))
     self.page_holder = PageHolder(self.program)
     self.pcb = PCB(0, 2, self.page_holder)
     self.page_creator = PageCreator(1)
     self.page_creator.create(self.pcb,1)
class TestInterruption(unittest.TestCase):
    def setUp(self):
        self.cpu = Cpu(None)
        self.kernel = Kernel(None, self.cpu)
        self.cpu.kernel = self.kernel
        self.pcb_table = self.kernel.pcb_table
        self.memory_manager = self.kernel.memory_manager
        self.fifo = FifoPolicy(self.kernel.scheduler)
        self.program = Program("Pepe")
        self.instruction = Instruction("first instruction")
        self.program.addInstruction(self.instruction)
        self.info_unit = [1, 2, 3, 4]
        self.block_holder = BlockHolder(self.program)
        self.block_holder.set_representation(self.info_unit)
        self.pcb = PCB(1, 4, self.block_holder)
        self.pcb_table.add(self.pcb)
        self.cpu.set_actual_pcb(self.pcb)
        self.manager = Manager(self.kernel.scheduler, self.pcb_table, self.memory_manager)
        self.interruption_handler = InterruptionHandler(self.manager)
        self.kernel.set_interruption_handler(self.interruption_handler)

    def test_when_a_process_is_killed_then_it_is_removed_from_the_pcb_table(self):
        self.cpu.execute_single_instruction(self.program.get_instructions().pop())
        self.assertEquals(self.pcb_table.size(), 0)
 def setUp(self):
     self.cpu = Cpu(None)
     self.kernel = Kernel(None, self.cpu)
     self.cpu.kernel = self.kernel
     self.pcb_table = self.kernel.pcb_table
     self.memory_manager = self.kernel.memory_manager
     self.fifo = FifoPolicy(self.kernel.scheduler)
     self.program = Program("Pepe")
     self.instruction = Instruction("first instruction")
     self.program.addInstruction(self.instruction)
     self.info_unit = [1, 2, 3, 4]
     self.block_holder = BlockHolder(self.program)
     self.block_holder.set_representation(self.info_unit)
     self.pcb = PCB(1, 4, self.block_holder)
     self.pcb_table.add(self.pcb)
     self.cpu.set_actual_pcb(self.pcb)
     self.manager = Manager(self.kernel.scheduler, self.pcb_table, self.memory_manager)
     self.interruption_handler = InterruptionHandler(self.manager)
     self.kernel.set_interruption_handler(self.interruption_handler)