def test_timer_can_be_reset_after_cancel(self): m = Mock(return_value=None) t = ResettableTimer(5, m) t.start() t._timer.pass_time(3) m.assert_not_called() t.cancel() t.reset() t.start() t._timer.pass_time(6) m.assert_called_once_with()
class PiScreenOnOff(object): def __init__(self, timeout=15 * 60, pin=17): self.__sensor = HcSr501(pin) self.__timer = ResettableTimer(timeout, screen, [False]) self.__timer.start() def __run(self): while True: if self.__sensor.active: screen(True) self.__timer.reset(start=True) sleep(0.5) def run(self): try: self.__run() except KeyboardInterrupt: self.__timer.cancel()