def test_recurring_event(self): event_scheduler = EventScheduler(TEST_THREAD, TestTimer.monotonic, TestTimer) TestTimer.set_event_scheduler(event_scheduler) event_scheduler.start() result_list = [] event_scheduler.enter_recurring(5, 0, insert_into_list, ('A', result_list)) TestTimer.advance_time(2) self.assertListEqual(result_list, []) TestTimer.advance_time(3) self.assertListEqual(result_list, ['A']) TestTimer.advance_time(5) self.assertListEqual(result_list, ['A', 'A']) event_scheduler.stop(True)
def test_multiple_events_built_in_timer(self): # We should test the built-in timer to make sure it's working as # expected. We can also test the hard stop being set to false, (the # event scheduler should execute all remaining events in the queue # before stopping). event_scheduler = EventScheduler(TEST_THREAD) event_scheduler.start() result_list = [] event_scheduler.enter_recurring(1.2, 0, insert_into_list, ('#', result_list)) event_scheduler.enterabs(0.2, 1, insert_into_list, ('A', result_list)) event_scheduler.enterabs(0.4, 1, insert_into_list, ('B', result_list)) event_scheduler.enterabs(0.7, 1, insert_into_list, ('C', result_list)) event_scheduler.enterabs(1, 1, insert_into_list, ('D', result_list)) event_scheduler.stop(False) self.assertListEqual(result_list, ['A', 'B', 'C', 'D', '#'])
def test_cancel_all_events(self): event_scheduler = EventScheduler(TEST_THREAD, TestTimer.monotonic, TestTimer) TestTimer.set_event_scheduler(event_scheduler) event_scheduler.start() result_list = [] event_scheduler.enter_recurring(5, 0, insert_into_list, ('A', result_list)) event_scheduler.enter_recurring(2, 0, insert_into_list, ('B', result_list)) event_scheduler.enter(0, 0, insert_into_list, ('C', result_list)) TestTimer.advance_time(1) self.assertListEqual(result_list, ['C']) event_scheduler.enter(1, 0, insert_into_list, ('D', result_list)) TestTimer.advance_time(0.2) event_scheduler.cancel_all() self.assertListEqual(result_list, ['C']) event_scheduler.stop(False)
def test_event_scheduler_raises_invalid_priority(self): event_scheduler = EventScheduler(TEST_THREAD, TestTimer.monotonic, TestTimer) result_list = [] # priority less than 0 with self.assertRaises(ValueError): event_scheduler.enter(0, -1, insert_into_list, ('A', result_list)) with self.assertRaises(ValueError): event_scheduler.enterabs(0, -1, insert_into_list, ('A', result_list)) with self.assertRaises(ValueError): event_scheduler.enter_recurring(0, -1, insert_into_list, ('A', result_list)) # priority > sys.maxsize with self.assertRaises(ValueError): event_scheduler.enter(0, sys.maxsize, insert_into_list, ('A', result_list)) with self.assertRaises(ValueError): event_scheduler.enterabs(0, sys.maxsize, insert_into_list, ('A', result_list)) with self.assertRaises(ValueError): event_scheduler.enter_recurring(0, sys.maxsize, insert_into_list, ('A', result_list))