diff -r 2e8c424dc638 Lib/test/test_sched.py --- a/Lib/test/test_sched.py Tue Oct 15 21:22:54 2013 +0300 +++ b/Lib/test/test_sched.py Wed Oct 16 11:47:11 2013 +0300 @@ -41,7 +41,7 @@ self._cond.notify_all() -class TestCase(unittest.TestCase): +class TestScheduler(unittest.TestCase): def test_enter(self): l = [] @@ -196,6 +196,35 @@ scheduler.run(blocking=False) self.assertEqual(l, []) + def test_stable_run(self): + l = [] + scheduler = sched.scheduler(time.time, time.sleep) + now = time.time() + ev1 = scheduler.enterabs(now + 0.01, 1, l.append, (1,)) + ev2 = scheduler.enterabs(now + 0.01, 1, l.append, (2,)) + ev3 = scheduler.enterabs(now + 0.01, 1, l.append, (3,)) + scheduler.cancel(ev2) + scheduler.run() + self.assertEqual(l, [1, 3]) + + def test_stable_queue(self): + l = [] + scheduler = sched.scheduler(time.time, time.sleep) + now = time.time() + ev1 = scheduler.enterabs(now + 0.01, 1, l.append, (1,)) + ev2 = scheduler.enterabs(now + 0.01, 1, l.append, (2,)) + ev3 = scheduler.enterabs(now + 0.01, 1, l.append, (3,)) + events = scheduler.queue + self.assertEqual(events, [ev1, ev2, ev3]) + self.assertIs(events[0], ev1) + self.assertIs(events[1], ev2) + self.assertIs(events[2], ev3) + scheduler.cancel(ev2) + events = scheduler.queue + self.assertEqual(events, [ev1, ev3]) + self.assertIs(events[0], ev1) + self.assertIs(events[1], ev3) + if __name__ == "__main__": unittest.main()