def test_recv_task_resp(self): # ProgramTask self.power_supply.send_task(ProgramTask(name=TaskName.END)) self.assertEqual( self.power_supply.recv_task_resp(), TaskResponse(status=Status.ERROR, value={'error': 'Not Implemented'})) # SystemTask self.power_supply.send_task(SystemTask(name=TaskName.ACTIVE)) self.assertEqual(self.power_supply.recv_task_resp(), TaskResponse(status=Status.OK, value=None)) # EntityTask self.power_supply.send_task(Task(name=TaskName.GET_INFO)) self.assertEqual( self.power_supply.recv_task_resp(), TaskResponse(status=Status.OK, value={ 'info': { 'uuid': str(self.power_supply.uuid), 'identifier': type(self.power_supply).identifier, 'type': { 'actuator': ['POWER'], 'sensor': [], 'accessor': [] }, } }))
def handle(self, task): def get_info(): return { 'uuid': str(self.entity.uuid), 'identifier': type(self.entity).identifier, 'type': { 'actuator': ['LUMINOSITY'], 'sensor': [], 'accessor': [] } } if self.entity.active and task.level == TaskLevel.ENTITY: task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'}) elif task.level == TaskLevel.SYSTEM: if task.name == TaskName.GET_SYSTEM_INFO: system_info = get_info() system_info['active'] = self.entity.active task_response = TaskResponse( status=Status.OK, value={'system_info': system_info}) elif task.name == TaskName.ACTIVE: self.entity.active = True if self.entity.has_function(Function.POWERED): powered = self.entity.get_function(Function.POWERED) for i in powered.power_outputs: i.set_power(powered.power_inputs[0].get_power()) task_response = TaskResponse(status=Status.OK, value=None) elif task.name == TaskName.DEACTIVATE: self.entity.active = False if self.entity.has_function(Function.POWERED): powered = self.entity.get_function(Function.POWERED) for i in powered.power_outputs: i.set_power() task_response = TaskResponse(status=Status.OK, value=None) else: task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'}) elif task.level == TaskLevel.PROGRAM: task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'}) else: task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'}) return task_response
def test_recv_task_resp(self): self.light.send_task( SystemTask(name=TaskName.SET_POWER, value={'power': ElectricPower(110)})) self.assertEqual(TaskResponse(Status.OK), self.light.recv_task_resp()) self.light.send_task(SystemTask(name=TaskName.ACTIVE)) self.assertEqual(TaskResponse(Status.OK), self.light.recv_task_resp()) self.light.send_task(Task(name=TaskName.GET_INFO)) self.assertEqual( TaskResponse(status=Status.OK, value={ 'info': { 'uuid': str(self.light.uuid), 'identifier': type(self.light).identifier, 'type': { 'actuator': ['POWER'], 'sensor': [], 'accessor': [] }, } }), self.light.recv_task_resp())
def test_active_deactivate(self): self.light.send_task( SystemTask(name=TaskName.SET_POWER, value={'power': ElectricPower(110)})) self.assertEqual(self.light.recv_task_resp(), TaskResponse(status=Status.OK, value=None)) self.light.send_task(SystemTask(name=TaskName.DEACTIVATE)) self.assertEqual(self.light.recv_task_resp(), TaskResponse(status=Status.OK, value=None)) self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( self.light.recv_task_resp().value['system_info']['active']) self.light.send_task(SystemTask(name=TaskName.ACTIVE)) self.assertEqual(self.light.recv_task_resp(), TaskResponse(status=Status.OK, value=None)) self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( self.light.recv_task_resp().value['system_info']['active']) self.light.send_task(SystemTask(name=TaskName.DEACTIVATE)) self.assertEqual(self.light.recv_task_resp(), TaskResponse(status=Status.OK, value=None)) self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( self.light.recv_task_resp().value['system_info']['active']) self.light.send_task(Task(name=TaskName.GET_INFO)) self.assertEqual( self.light.recv_task_resp(), TaskResponse(status=Status.OK, value={ 'info': { 'uuid': str(self.light.uuid), 'identifier': type(self.light).identifier, 'type': { 'actuator': ['POWER'], 'sensor': [], 'accessor': [] }, } })) self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( self.light.recv_task_resp().value['system_info']['active']) self.light.send_task(SystemTask(name=TaskName.DEACTIVATE)) self.assertEqual(self.light.recv_task_resp(), TaskResponse(status=Status.OK, value=None)) self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( self.light.recv_task_resp().value['system_info']['active']) self.light.send_task(SystemTask(name=TaskName.ACTIVE)) self.assertEqual(self.light.recv_task_resp(), TaskResponse(status=Status.OK, value=None)) self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( self.light.recv_task_resp().value['system_info']['active']) self.light.send_task(Task(name=TaskName.GET_INFO)) self.assertEqual( self.light.recv_task_resp(), TaskResponse(status=Status.OK, value={ 'info': { 'uuid': str(self.light.uuid), 'identifier': type(self.light).identifier, 'type': { 'actuator': ['POWER'], 'sensor': [], 'accessor': [] }, } }))
def test_main_6(self): # Create System self.system = System('MyNewSystem') # Put Space on the System self.system.put_space( dimension=(40, 30, 12), resolution=1, space_factor_types=[i for i in SpaceFactor.SpaceFactor]) # Put Entity on the Space power_supply = PowerSupply(uuid=uuid.uuid4()) light_switch1 = Switch(uuid=uuid.uuid4()) wire_ls1 = PowerWire(power_supply, light_switch1) light1 = Light(uuid=uuid.uuid4(), selected_functions=(Function.POWERED, )) wire_l1 = PowerWire(light_switch1, light1) light_switch2 = Switch(uuid=uuid.uuid4()) wire_ls2 = PowerWire(power_supply, light_switch2) light2 = Light(uuid=uuid.uuid4(), selected_functions=(Function.POWERED, )) wire_l2 = PowerWire(light_switch2, light2) power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( power_supply.recv_task_resp().value['system_info']['active']) light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( light_switch1.recv_task_resp().value['system_info']['active']) self.assertFalse(light1.active) light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( light_switch2.recv_task_resp().value['system_info']['active']) self.assertFalse(light2.active) # Turn On PowerSupply power_supply.send_task(SystemTask(name=TaskName.ACTIVE)) self.assertEqual(TaskResponse(status=Status.OK, value=None), power_supply.recv_task_resp()) power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( power_supply.recv_task_resp().value['system_info']['active']) light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( light_switch1.recv_task_resp().value['system_info']['active']) self.assertFalse(light1.active) light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( light_switch2.recv_task_resp().value['system_info']['active']) self.assertFalse(light2.active) # Turn On Switch light_switch1.send_task(SystemTask(name=TaskName.ACTIVE)) self.assertEqual(TaskResponse(status=Status.OK, value=None), light_switch1.recv_task_resp()) power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( power_supply.recv_task_resp().value['system_info']['active']) light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( light_switch1.recv_task_resp().value['system_info']['active']) self.assertTrue(light1.active) light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( light_switch2.recv_task_resp().value['system_info']['active']) self.assertFalse(light2.active) light_switch2.send_task(SystemTask(name=TaskName.ACTIVE)) self.assertEqual(TaskResponse(status=Status.OK, value=None), light_switch2.recv_task_resp()) power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( power_supply.recv_task_resp().value['system_info']['active']) light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( light_switch1.recv_task_resp().value['system_info']['active']) self.assertTrue(light1.active) light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( light_switch2.recv_task_resp().value['system_info']['active']) self.assertTrue(light2.active) # Turn Off Switch light_switch1.send_task(SystemTask(name=TaskName.DEACTIVATE)) self.assertEqual(TaskResponse(status=Status.OK, value=None), light_switch1.recv_task_resp()) power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( power_supply.recv_task_resp().value['system_info']['active']) light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( light_switch1.recv_task_resp().value['system_info']['active']) self.assertFalse(light1.active) light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( light_switch2.recv_task_resp().value['system_info']['active']) self.assertTrue(light2.active) light_switch2.send_task(SystemTask(name=TaskName.DEACTIVATE)) self.assertEqual(TaskResponse(status=Status.OK, value=None), light_switch2.recv_task_resp()) power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertTrue( power_supply.recv_task_resp().value['system_info']['active']) light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( light_switch1.recv_task_resp().value['system_info']['active']) self.assertFalse(light1.active) light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO)) self.assertFalse( light_switch2.recv_task_resp().value['system_info']['active']) self.assertFalse(light2.active) power_supply.destroy() light_switch1.destroy() light_switch2.destroy() light1.destroy() light2.destroy()
def handle(self, task): def get_info(): return { 'uuid': str(self.entity.uuid), 'identifier': type(self.entity).identifier, 'type': { 'actuator': [ 'LUMINOSITY' ], 'sensor': [], 'accessor': [] } } powered = self.entity.get_function(Function.POWERED) power = powered.get_power_input().get_power() if task.level == TaskLevel.ENTITY and power in powered.input_power_ratings: if task.name == TaskName.GET_INFO: task_response = TaskResponse(Status.OK, {'info': get_info()}) else: task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'}) elif task.level == TaskLevel.SYSTEM: if task.name == TaskName.GET_SYSTEM_INFO: system_info = get_info() system_info['active'] = self.entity.active task_response = TaskResponse(status=Status.OK, value={'system_info': system_info}) elif task.name == TaskName.ACTIVE: if power in powered.input_power_ratings: self.entity.active = True task_response = TaskResponse(status=Status.OK, value=None) else: task_response = TaskResponse(status=Status.ERROR, value={'error': 'No Input Power'}) elif task.name == TaskName.DEACTIVATE: self.entity.active = False task_response = TaskResponse(status=Status.OK, value=None) elif task.name == TaskName.SET_POWER: power = task.value['power'] powered.get_power_input().power = power if power not in powered.input_power_ratings: self.entity.active = False task_response = TaskResponse(status=Status.OK, value=None) elif task.name == TaskName.ACTUATE: if power not in powered.input_power_ratings: task_response = TaskResponse(status=Status.ERROR, value={'error': 'No Input Power'}) else: space_factor_patch = self.entity.get_function(Function.ACTUATE).actuate(**task.value) task_response = TaskResponse(status=Status.OK, value=space_factor_patch) else: task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'}) elif task.level == TaskLevel.PROGRAM: if task.name == TaskName.END: task_response = self.handle_end() else: task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'}) else: task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'}) return task_response