def test_track_same_state_simple_trigger_check_funct(self): """Test track_same_change with trigger and check funct.""" callback_runs = [] check_func = [] period = timedelta(minutes=1) @ha.callback def callback_run_callback(): callback_runs.append(1) @ha.callback def async_check_func(entity, from_s, to_s): check_func.append((entity, from_s, to_s)) return True track_same_state( self.hass, period, callback_run_callback, entity_ids='light.Bowl', async_check_same_func=async_check_func) # Adding state to state machine self.hass.states.set("light.Bowl", "on") self.hass.block_till_done() self.assertEqual(0, len(callback_runs)) self.assertEqual('on', check_func[-1][2].state) self.assertEqual('light.bowl', check_func[-1][0]) # change time to track and see if they trigger future = dt_util.utcnow() + period fire_time_changed(self.hass, future) self.hass.block_till_done() self.assertEqual(1, len(callback_runs))
def test_track_same_state_simple_no_trigger(self): """Test track_same_change with no trigger.""" callback_runs = [] period = timedelta(minutes=1) @ha.callback def callback_run_callback(): callback_runs.append(1) track_same_state( self.hass, period, callback_run_callback, lambda _, _2, to_s: to_s.state == 'on', entity_ids='light.Bowl') # Adding state to state machine self.hass.states.set("light.Bowl", "on") self.hass.block_till_done() self.assertEqual(0, len(callback_runs)) # Change state on state machine self.hass.states.set("light.Bowl", "off") self.hass.block_till_done() self.assertEqual(0, len(callback_runs)) # change time to track and see if they trigger future = dt_util.utcnow() + period fire_time_changed(self.hass, future) self.hass.block_till_done() self.assertEqual(0, len(callback_runs))
def test_track_same_state_simple_trigger_check_funct(self): """Test track_same_change with trigger and check funct.""" callback_runs = [] check_func = [] period = timedelta(minutes=1) @ha.callback def callback_run_callback(): callback_runs.append(1) @ha.callback def async_check_func(entity, from_s, to_s): check_func.append((entity, from_s, to_s)) return 'on' track_same_state( self.hass, 'on', period, callback_run_callback, entity_ids='light.Bowl', async_check_func=async_check_func) # Adding state to state machine self.hass.states.set("light.Bowl", "on") self.hass.block_till_done() self.assertEqual(0, len(callback_runs)) self.assertEqual('on', check_func[-1][2].state) self.assertEqual('light.bowl', check_func[-1][0]) # change time to track and see if they trigger future = dt_util.utcnow() + period fire_time_changed(self.hass, future) self.hass.block_till_done() self.assertEqual(1, len(callback_runs))
def test_track_same_state_simple_no_trigger(self): """Test track_same_change with no trigger.""" callback_runs = [] period = timedelta(minutes=1) @ha.callback def callback_run_callback(): callback_runs.append(1) track_same_state( self.hass, 'on', period, callback_run_callback, entity_ids='light.Bowl') # Adding state to state machine self.hass.states.set("light.Bowl", "on") self.hass.block_till_done() self.assertEqual(0, len(callback_runs)) # Change state on state machine self.hass.states.set("light.Bowl", "off") self.hass.block_till_done() self.assertEqual(0, len(callback_runs)) # change time to track and see if they trigger future = dt_util.utcnow() + period fire_time_changed(self.hass, future) self.hass.block_till_done() self.assertEqual(0, len(callback_runs))
def test_track_same_state_simple_trigger(self): """Test track_same_change with trigger simple.""" thread_runs = [] callback_runs = [] coroutine_runs = [] period = timedelta(minutes=1) def thread_run_callback(): thread_runs.append(1) track_same_state(self.hass, period, thread_run_callback, lambda _, _2, to_s: to_s.state == 'on', entity_ids='light.Bowl') @ha.callback def callback_run_callback(): callback_runs.append(1) track_same_state(self.hass, period, callback_run_callback, lambda _, _2, to_s: to_s.state == 'on', entity_ids='light.Bowl') @asyncio.coroutine def coroutine_run_callback(): coroutine_runs.append(1) track_same_state(self.hass, period, coroutine_run_callback, lambda _, _2, to_s: to_s.state == 'on') # Adding state to state machine self.hass.states.set("light.Bowl", "on") self.hass.block_till_done() self.assertEqual(0, len(thread_runs)) self.assertEqual(0, len(callback_runs)) self.assertEqual(0, len(coroutine_runs)) # change time to track and see if they trigger future = dt_util.utcnow() + period fire_time_changed(self.hass, future) self.hass.block_till_done() self.assertEqual(1, len(thread_runs)) self.assertEqual(1, len(callback_runs)) self.assertEqual(1, len(coroutine_runs))
def test_track_same_state_simple_trigger(self): """Test track_same_change with trigger simple.""" thread_runs = [] callback_runs = [] coroutine_runs = [] period = timedelta(minutes=1) def thread_run_callback(): thread_runs.append(1) track_same_state( self.hass, period, thread_run_callback, lambda _, _2, to_s: to_s.state == 'on', entity_ids='light.Bowl') @ha.callback def callback_run_callback(): callback_runs.append(1) track_same_state( self.hass, period, callback_run_callback, lambda _, _2, to_s: to_s.state == 'on', entity_ids='light.Bowl') @asyncio.coroutine def coroutine_run_callback(): coroutine_runs.append(1) track_same_state( self.hass, period, coroutine_run_callback, lambda _, _2, to_s: to_s.state == 'on') # Adding state to state machine self.hass.states.set("light.Bowl", "on") self.hass.block_till_done() assert 0 == len(thread_runs) assert 0 == len(callback_runs) assert 0 == len(coroutine_runs) # change time to track and see if they trigger future = dt_util.utcnow() + period fire_time_changed(self.hass, future) self.hass.block_till_done() assert 1 == len(thread_runs) assert 1 == len(callback_runs) assert 1 == len(coroutine_runs)