1
2
3
4 """
5 Tests for sparked.events.*
6
7 Maintainer: Arjan Scherpenisse
8 """
9
10 from twisted.trial import unittest
11
12 from sparked import events
13
15 """
16 Test the L{sparked.events.EventDispatcher}
17 """
18
20 """
21 Simple dispatching test
22 """
23 d = events.EventDispatcher()
24
25 self.count = 0
26
27 def receive():
28 self.count += 1
29 d.addObserver("hello", receive)
30
31 d.dispatch("hello")
32 self.assertEquals(self.count, 1)
33 d.dispatch("world")
34 self.assertEquals(self.count, 1)
35 d.dispatch("hello")
36 self.assertEquals(self.count, 2)
37
38
40 """
41 Test that positional arguments are passed in the event handler
42 and that pre-defined positional arguments (after the priority)
43 are prepended to the event callback args.
44 """
45 d = events.EventDispatcher()
46
47 self.args = []
48
49 def receive(*a):
50 self.args += a
51 d.addObserver("x", receive)
52
53 d.dispatch("x")
54 self.assertEquals(self.args, [])
55
56 d.dispatch("x", 3, 3)
57 self.assertEquals(self.args, [3, 3])
58
59 self.args = []
60 d.addObserver("y", receive, 0, 'yo')
61 d.dispatch("y", 3)
62 self.assertEquals(self.args, ['yo', 3])
63 d.dispatch("y", 4)
64 self.assertEquals(self.args, ['yo', 3, 'yo', 4])
65
66
68 """
69 Test that the keyword arguments are passed through and that
70 predefined keywords arguments are overriden by the keyword
71 arguments of the event.
72 """
73 d = events.EventDispatcher()
74 self.kw = {}
75 def receive(**kw):
76 self.kw.update(kw)
77
78 d.addObserver("x", receive)
79 d.dispatch("x")
80 self.assertEquals({}, self.kw)
81
82 d.dispatch("x", foo="bar")
83 self.assertEquals({'foo': 'bar'}, self.kw)
84
85 self.kw = {}
86 d.addObserver("y", receive, foo='bar')
87 d.dispatch("y")
88 self.assertEquals({'foo': 'bar'}, self.kw)
89
90 d.addObserver("y", receive, foo='bar')
91 d.dispatch("y", foo='baz')
92 self.assertEquals({'foo': 'baz'}, self.kw)
93