class EventDispatcherTest(unittest.TestCase): '''Tests the event dispatcher''' def setUp(self): self.dispatcher = EventDispatcher() self.listener = EventListener() def test_dispatch(self): self.dispatcher.listen('test.dispatch', self.listener.onDispatch) self.dispatcher.dispatch('test.dispatch', TestEvent('dispatch')) self.assertEqual('dispatch', self.listener.testStr) def test_priority(self): self.dispatcher.listen('test.priority', self.listener.listenPriority('d'), 1) self.dispatcher.listen('test.priority', self.listener.listenPriority('a'), -2) self.dispatcher.listen('test.priority', self.listener.listenPriority('c')) self.dispatcher.listen('test.priority', self.listener.listenPriority('b'), -1) self.dispatcher.dispatch('test.priority') self.assertEqual('abcd', self.listener.testStr) def test_detach(self): self.dispatcher.listen('test.detach', self.listener.onDispatch) listener_id = self.dispatcher.listen('test.detach', self.listener.onDispatch) self.dispatcher.detach(listener_id) self.dispatcher.dispatch('test.detach', TestEvent('detach')) self.assertEqual('detach', self.listener.testStr) def test_dispatchWhenNoneListener(self): self.dispatcher.dispatch('alone') def test_getParent(self): self.assertEqual('test.parent', self.dispatcher.getParent('test.parent.child')) self.assertEqual(None, self.dispatcher.getParent('noparent')) with self.assertRaises(AssertionError): self.dispatcher.getParent('test.parent .childish') def test_propagation(self): self._registerListenerForPropagationTest(self.dispatcher) self.dispatcher.dispatch('test.propa', TestEvent('propa-'), True) self.assertEqual('propa-propa-', self.listener.testStr) def test_globalPropagation(self): dispatcher = EventDispatcher(True) self._registerListenerForPropagationTest(dispatcher) dispatcher.dispatch('test.propa', TestEvent('propa-')) self.assertEqual('propa-propa-', self.listener.testStr) def test_propagationOverriding(self): dispatcher = EventDispatcher(True) self._registerListenerForPropagationTest(dispatcher) dispatcher.dispatch('test.propa', TestEvent('propa-'), False) self.assertEqual('propa-', self.listener.testStr) def test_decorator(self): @self.dispatcher.on('test.decorator') def listener(e): self.listener.onDispatch(e) self.dispatcher.dispatch('test.decorator', TestEvent('decorator')) self.assertEqual('decorator', self.listener.testStr) def test_listenAll(self): self.dispatcher.listen('test.a', self.listener.onDispatch) self.dispatcher.listen('all', self.listener.onDispatch) self.dispatcher.dispatch('test.a', TestEvent('a')) self.dispatcher.dispatch('test.b', TestEvent('b')) self.dispatcher.dispatch('test.c', TestEvent('c')) self.dispatcher.dispatch('test.d', TestEvent('d')) self.dispatcher.dispatch('test.e', TestEvent('e')) self.assertEqual('aabcde', self.listener.testStr) def _registerListenerForPropagationTest(self, dispatcher): dispatcher.listen('test', self.listener.onDispatch) dispatcher.listen('test.propa', self.listener.onDispatch)