blob: 91b8f0c939deca2781d4a174c6a7318198ad0335 [file] [log] [blame]
Giampaolo Rodolàb5c23762010-08-04 09:28:05 +00001#!/usr/bin/env python
2
3import sched
4import time
5import unittest
6from test import support
7
8
9class TestCase(unittest.TestCase):
10
11 def test_enter(self):
12 l = []
13 fun = lambda x: l.append(x)
14 scheduler = sched.scheduler(time.time, time.sleep)
Charles-François Natalif670ca52012-02-16 19:49:48 +010015 for x in [0.5, 0.4, 0.3, 0.2, 0.1]:
Giampaolo Rodolàb5c23762010-08-04 09:28:05 +000016 z = scheduler.enter(x, 1, fun, (x,))
17 scheduler.run()
Charles-François Natalif670ca52012-02-16 19:49:48 +010018 self.assertEqual(l, [0.1, 0.2, 0.3, 0.4, 0.5])
Giampaolo Rodolàb5c23762010-08-04 09:28:05 +000019
20 def test_enterabs(self):
21 l = []
22 fun = lambda x: l.append(x)
23 scheduler = sched.scheduler(time.time, time.sleep)
24 for x in [0.05, 0.04, 0.03, 0.02, 0.01]:
25 z = scheduler.enterabs(x, 1, fun, (x,))
26 scheduler.run()
27 self.assertEqual(l, [0.01, 0.02, 0.03, 0.04, 0.05])
28
29 def test_priority(self):
30 l = []
31 fun = lambda x: l.append(x)
32 scheduler = sched.scheduler(time.time, time.sleep)
33 for priority in [1, 2, 3, 4, 5]:
Charles-François Natalif670ca52012-02-16 19:49:48 +010034 z = scheduler.enterabs(0.01, priority, fun, (priority,))
Giampaolo Rodolàb5c23762010-08-04 09:28:05 +000035 scheduler.run()
36 self.assertEqual(l, [1, 2, 3, 4, 5])
37
38 def test_cancel(self):
39 l = []
40 fun = lambda x: l.append(x)
41 scheduler = sched.scheduler(time.time, time.sleep)
Charles-François Natalif670ca52012-02-16 19:49:48 +010042 now = time.time()
43 event1 = scheduler.enterabs(now + 0.01, 1, fun, (0.01,))
44 event2 = scheduler.enterabs(now + 0.02, 1, fun, (0.02,))
45 event3 = scheduler.enterabs(now + 0.03, 1, fun, (0.03,))
46 event4 = scheduler.enterabs(now + 0.04, 1, fun, (0.04,))
47 event5 = scheduler.enterabs(now + 0.05, 1, fun, (0.05,))
Giampaolo Rodolàb5c23762010-08-04 09:28:05 +000048 scheduler.cancel(event1)
49 scheduler.cancel(event5)
50 scheduler.run()
51 self.assertEqual(l, [0.02, 0.03, 0.04])
52
53 def test_empty(self):
54 l = []
55 fun = lambda x: l.append(x)
56 scheduler = sched.scheduler(time.time, time.sleep)
57 self.assertTrue(scheduler.empty())
58 for x in [0.05, 0.04, 0.03, 0.02, 0.01]:
59 z = scheduler.enterabs(x, 1, fun, (x,))
60 self.assertFalse(scheduler.empty())
61 scheduler.run()
62 self.assertTrue(scheduler.empty())
63
64 def test_queue(self):
65 l = []
66 events = []
67 fun = lambda x: l.append(x)
68 scheduler = sched.scheduler(time.time, time.sleep)
69 self.assertEqual(scheduler._queue, [])
70 for x in [0.05, 0.04, 0.03, 0.02, 0.01]:
71 events.append(scheduler.enterabs(x, 1, fun, (x,)))
72 self.assertEqual(scheduler._queue.sort(), events.sort())
73 scheduler.run()
74 self.assertEqual(scheduler._queue, [])
75
76
77def test_main():
78 support.run_unittest(TestCase)
79
80if __name__ == "__main__":
81 test_main()