def test_do_now(self): # If I schedule something now, it happens in the zeroth clock and then it # exits s = Scheduler() s.do_now((lambda: None)) iterator = s.run() self.assertEqual(iterator.next(), 0) self.assertRaises(StopIteration, iterator.next)
def test_do_later(self): # If I schedule something later, it happens after something which happens # now now_called = [False] def for_now(): now_called[0] = True later_called = [False] def for_later(): later_called[0] = True much_later_called = [False] def for_much_later(): much_later_called[0] = True s = Scheduler() s.do_now(for_now) s.do_later(for_later) s.do_later(for_much_later, 10) iterator = s.run() self.assertTrue( not now_called[0] and not later_called[0] and not much_later_called[0]) self.assertEqual(iterator.next(), 0) self.assertTrue( now_called[0] and not later_called[0] and not much_later_called[0]) self.assertEqual(iterator.next(), 0) self.assertTrue( now_called[0] and later_called[0] and not much_later_called[0]) self.assertEqual(iterator.next(), 10) self.assertTrue( now_called[0] and later_called[0] and much_later_called[0]) self.assertRaises(StopIteration, iterator.next)