Package sparked :: Package test :: Module test_events
[hide private]
[frames] | no frames]

Source Code for Module sparked.test.test_events

 1  # Copyright (c) 2010 Arjan Scherpenisse 
 2  # See LICENSE for details. 
 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   
14 -class TestEventDispatcher(unittest.TestCase):
15 """ 16 Test the L{sparked.events.EventDispatcher} 17 """ 18
19 - def testSimple(self):
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
39 - def testArguments(self):
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
67 - def testKeywordArguments(self):
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