def test_add(self): """ Test adding data to the InputStatus. """ inps = InputStatus() inps.set_input({'input': 1, 'status': 1}) states = [{k: v for k, v in x.items() if k in ('id', 'status')} for x in inps.get_inputs()] self.assertEqual(len(states), 1) self.assertIn({'id': 1, 'status': True}, states) inps.set_input({'input': 2, 'status': 1}) states = [{k: v for k, v in x.items() if k in ('id', 'status')} for x in inps.get_inputs()] self.assertEqual(len(states), 2) self.assertIn({'id': 2, 'status': True}, states) self.assertIn({'id': 1, 'status': True}, states) inps.set_input({'input': 3, 'status': 0}) states = [{k: v for k, v in x.items() if k in ('id', 'status')} for x in inps.get_inputs()] self.assertEqual(len(states), 3) self.assertIn({'id': 3, 'status': False}, states) self.assertIn({'id': 1, 'status': True}, states)
def __init__(self, master_communicator=INJECTED, master_controller=INJECTED, message_client=INJECTED, shutter_controller=INJECTED): """ :param master_communicator: Master communicator :type master_communicator: master.master_communicator.MasterCommunicator :param master_controller: Master controller :type master_controller: gateway.master_controller.MasterController :param message_client: MessageClient instance :type message_client: bus.om_bus_client.MessageClient :param shutter_controller: Shutter Controller :type shutter_controller: gateway.shutters.ShutterController """ self._master_communicator = master_communicator self._master_controller = master_controller self._message_client = message_client self._gateway_api = None self._master_subscriptions = { Observer.LegacyMasterEvents.ON_SHUTTER_UPDATE: [], Observer.LegacyMasterEvents.ON_INPUT_CHANGE: [], Observer.LegacyMasterEvents.ONLINE: [] } self._event_subscriptions = [] self._input_status = InputStatus(on_input_change=self._input_changed) self._thermostat_status = ThermostatStatus( on_thermostat_change=self._thermostat_changed, on_thermostat_group_change=self._thermostat_group_changed) self._shutter_controller = shutter_controller self._shutter_controller.set_shutter_changed_callback( self._shutter_changed) self._master_controller.subscribe_event(self._master_event) self._input_interval = 300 self._input_last_updated = 0 self._input_config = {} self._thermostats_original_interval = 30 self._thermostats_interval = self._thermostats_original_interval self._thermostats_last_updated = 0 self._thermostats_restore = 0 self._thermostats_config = {} self._shutters_interval = 600 self._shutters_last_updated = 0 self._master_online = False self._background_consumers_registered = False self._master_version = None self._thread = Thread(target=self._monitor) self._thread.daemon = True
def test_set_input_without_status(self): changed = [] def on_input_change(input_id, status): changed.append(input_id) inps = InputStatus(on_input_change=on_input_change) inps.set_input({'input': 6, 'status': 1}) current_status = inps.get_input(6) self.assertEquals(current_status['status'], True) inps.set_input({'input': 6}) current_status = inps.get_input(6) self.assertEquals(current_status['status'], None) self.assertEquals(len(changed), 2)
def test_on_changed(self): changed = [] def on_input_change(input_id, status): changed.append(input_id) inps = InputStatus(on_input_change=on_input_change) inps.set_input({'input': 6, 'status': 0}) inps.set_input({'input': 6, 'status': 1}) inps.set_input({'input': 6, 'status': 1}) inps.set_input({'input': 6, 'status': 0}) inps.set_input({'input': 6, 'status': 0}) inps.set_input({'input': 6, 'status': 1}) self.assertEquals(len(changed), 4)
def test_timeout(self): """ Test timeout of InputStatus data. """ inps = InputStatus(5, 1) inps.set_input({'input': 1, 'status': 1}) self.assertEquals([1], inps.get_recent()) time.sleep(0.8) inps.set_input({'input': 2, 'status': 1}) self.assertEquals([1, 2], inps.get_recent()) time.sleep(0.3) self.assertEquals([2], inps.get_recent())
def test_timeout(self): """ Test timeout of InputStatus data. """ inps = InputStatus(5, 1) inps.add_data(1) self.assertEquals([1], inps.get_status()) time.sleep(0.8) inps.add_data(2) self.assertEquals([1, 2], inps.get_status()) time.sleep(0.3) self.assertEquals([2], inps.get_status())
def test_get_recent(self): """ Test adding data to the InputStatus. """ inps = InputStatus() with mock.patch.object(time, 'time', return_value=10): inps.set_input({'input': 1, 'status': 1}) self.assertEqual([1], inps.get_recent()) with mock.patch.object(time, 'time', return_value=30): for i in xrange(2, 10): inps.set_input({'input': i, 'status': 1}) self.assertEqual(5, len(inps.get_recent())) with mock.patch.object(time, 'time', return_value=60): self.assertEqual(0, len(inps.get_recent())) with mock.patch.object(time, 'time', return_value=35): inps.set_input({'input': 1, 'status': 0}) inps.set_input({'input': 2, 'status': 1}) self.assertIn(1, inps.get_recent()) self.assertNotIn(2, inps.get_recent())
def test_add(self): """ Test adding data to the InputStatus. """ inps = InputStatus(5, 300) inps.set_input({'input': 1, 'status': 1}) self.assertEquals([1], inps.get_recent()) inps.set_input({'input': 2, 'status': 1}) self.assertEquals([1, 2], inps.get_recent()) inps.set_input({'input': 3, 'status': 1}) self.assertEquals([1, 2, 3], inps.get_recent()) inps.set_input({'input': 4, 'status': 1}) self.assertEquals([1, 2, 3, 4], inps.get_recent()) inps.set_input({'input': 5, 'status': 1}) self.assertEquals([1, 2, 3, 4, 5], inps.get_recent()) inps.set_input({'input': 6, 'status': 1}) self.assertEquals([2, 3, 4, 5, 6], inps.get_recent()) inps.set_input({'input': 7, 'status': 1}) self.assertEquals([3, 4, 5, 6, 7], inps.get_recent())
def test_add(self): """ Test adding data to the InputStatus. """ inps = InputStatus(5, 300) inps.add_data(1) self.assertEquals([1], inps.get_status()) inps.add_data(2) self.assertEquals([1, 2], inps.get_status()) inps.add_data(3) self.assertEquals([1, 2, 3], inps.get_status()) inps.add_data(4) self.assertEquals([1, 2, 3, 4], inps.get_status()) inps.add_data(5) self.assertEquals([1, 2, 3, 4, 5], inps.get_status()) inps.add_data(6) self.assertEquals([2, 3, 4, 5, 6], inps.get_status()) inps.add_data(7) self.assertEquals([3, 4, 5, 6, 7], inps.get_status())