def check_active(l_light, expected): if expected: self.assertTrue(l_light.active) l_light.send_task(SystemTask(TaskName.GET_SYSTEM_INFO)) self.assertTrue( light.recv_task_resp().value['system_info']['active']) else: self.assertFalse(l_light.active) l_light.send_task(SystemTask(TaskName.GET_SYSTEM_INFO)) self.assertFalse( light.recv_task_resp().value['system_info']['active'])
def test_main_7(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()) wire_l1 = PowerWire(light_switch1, light1) self.system.put_entity(power_supply, (19, 14, 9)) self.system.put_entity(light_switch1, (19, 14, 9)) self.system.put_entity(light1, (9, 14, 9)) power_supply.send_task(SystemTask(TaskName.ACTIVE)) light_switch1.send_task(SystemTask(TaskName.ACTIVE)) light1.send_task(SystemTask(TaskName.ACTIVE)) light1.send_task( SystemTask(TaskName.ACTUATE, value={ 'space': self.system.space, 'location': self.system.entities[2][1], 'orientation': self.system.entities[2][1] })) res = light1.recv_task_resp() luminosity = npx.char.mod( 'hsl(%d,%d%,%d%)', (res.value[SpaceFactor.SpaceFactor.LUMINOSITY][ SpaceFactor.Luminosity.HUE], res.value[SpaceFactor.SpaceFactor.LUMINOSITY][ SpaceFactor.Luminosity.SATURATION], res.value[SpaceFactor.SpaceFactor.LUMINOSITY][ SpaceFactor.Luminosity.BRIGHTNESS])) Plotter.plot_scatter_3d( array3d=luminosity, zero_value=-1, filename=os.path.join( test_settings.actual_path, self._testMethodName + '_luminosity_plot.html'), auto_open=True, opacity=0.6) light1.destroy()
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 test_send_task(self): # ProgramTask self.power_supply.send_task(ProgramTask(name=TaskName.END)) # SystemTask self.power_supply.send_task(SystemTask(name=TaskName.ACTIVE)) # EntityTask self.power_supply.send_task(Task(name=TaskName.GET_INFO))
def set_power(self, power=ElectricPower(voltage=0)): self.power = power if self.parent.has_function(Function.TASKED): self.parent.send_task( SystemTask(name=TaskName.SET_POWER, value={'power': power})) else: if self.power in self.parent.get_function( Function.POWERED).input_power_ratings: self.parent.active = True else: self.parent.active = False
def test_recv_task_resp(self): self.assertRaises( FunctionUnsupportedError, lambda: self.light.send_task( SystemTask(name=TaskName.SET_POWER, value={'power': ElectricPower(110)}))) self.assertRaises(FunctionUnsupportedError, lambda: self.light.recv_task_resp()) # SystemTask self.assertRaises( FunctionUnsupportedError, lambda: self.light.send_task(SystemTask(name=TaskName.ACTIVE))) self.assertRaises(FunctionUnsupportedError, lambda: self.light.recv_task_resp()) # EntityTask self.assertRaises( FunctionUnsupportedError, lambda: self.light.send_task(Task(name=TaskName.GET_INFO))) self.assertRaises(FunctionUnsupportedError, lambda: self.light.recv_task_resp())
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_send_task(self): # SystemTask self.assertRaises( FunctionUnsupportedError, lambda: self.light.send_task(SystemTask(name=TaskName.ACTIVE))) # EntityTask self.assertRaises( FunctionUnsupportedError, lambda: self.light.send_task(Task(name=TaskName.GET_INFO))) # ProgramTask self.assertRaises( FunctionUnsupportedError, lambda: self.light.send_task(ProgramTask(name=TaskName.END)))
def test_input_power_autodeactivate(self): def check_active(l_light, expected): if expected: self.assertTrue(l_light.active) l_light.send_task(SystemTask(TaskName.GET_SYSTEM_INFO)) self.assertTrue( light.recv_task_resp().value['system_info']['active']) else: self.assertFalse(l_light.active) l_light.send_task(SystemTask(TaskName.GET_SYSTEM_INFO)) self.assertFalse( light.recv_task_resp().value['system_info']['active']) light = Light(uuid=uuid.uuid4(), selected_functions=(Function.POWERED, Function.TASKED)) check_active(light, False) light.send_task(SystemTask(TaskName.ACTIVE)) light.recv_task_resp() check_active(light, False) light.send_task( SystemTask(TaskName.SET_POWER, value={'power': ElectricPower(110)})) light.send_task(SystemTask(TaskName.ACTIVE)) light.recv_task_resp() check_active(light, True) light.send_task( SystemTask(TaskName.SET_POWER, value={'power': ElectricPower(0)})) check_active(light, False) light.send_task(SystemTask(TaskName.ACTIVE)) light.recv_task_resp() check_active(light, False) light.send_task( SystemTask(TaskName.SET_POWER, value={'power': ElectricPower(220)})) check_active(light, False) light.send_task(SystemTask(TaskName.ACTIVE)) light.recv_task_resp() check_active(light, False)
def test_send_task(self): # SystemTask self.light.send_task(SystemTask(name=TaskName.ACTIVE)) # EntityTask self.light.send_task(Task(name=TaskName.GET_INFO))
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()
row['selected_functions'] = [Function[s] for s in row['selected_functions']] entity = ef.get_entity(**{x: row[x] for x in row if x not in ['location']}) _system.put_entity(entity, row['location']) # channels if 'channels' in content: cf = ChannelFactory() for row in content['channels']: kwargs = {x: row[x] for x in row if x not in ['channel']} kwargs['_from'] = _system.get_entity(kwargs['_from']) kwargs['_to'] = _system.get_entity(kwargs['_to']) cf.get_channel(row['channel'], **kwargs) return _system if __name__ == '__main__': system = load_system_file('../resources/examples/example_1/system.json') print(system) system.get_entity(0).send_task(SystemTask(TaskName.ACTIVE)) system.get_entity(1).send_task(SystemTask(TaskName.ACTIVE)) system.get_entity(2).send_task(SystemTask(TaskName.ACTIVE)) system.get_entity(2).send_task(SystemTask(TaskName.GET_SYSTEM_INFO)) tr = system.get_entity(2).recv_task_resp() print(tr) system.destroy()