def testStuff(self): d = EventDispatcher() cb1 = CallbackTracker() cb2 = CallbackTracker() cb3 = CallbackTracker() d.addObserver("/message/body", cb1.call) d.addObserver("/message", cb1.call) d.addObserver("/presence", cb2.call) d.addObserver("//event/testevent", cb3.call) msg = Element(("ns", "message")) msg.addElement("body") pres = Element(("ns", "presence")) pres.addElement("presence") d.dispatch(msg) self.assertEquals(cb1.called, 2) self.assertEquals(cb1.obj, msg) self.assertEquals(cb2.called, 0) d.dispatch(pres) self.assertEquals(cb1.called, 2) self.assertEquals(cb2.called, 1) self.assertEquals(cb2.obj, pres) self.assertEquals(cb3.called, 0) d.dispatch(d, "//event/testevent") self.assertEquals(cb3.called, 1) self.assertEquals(cb3.obj, d) d.removeObserver("/presence", cb2.call) d.dispatch(pres) self.assertEquals(cb2.called, 1)
def test_cleanUpRemoveEventObserver(self): """ Test observer clean-up after removeObserver for named events. """ d = EventDispatcher() cb = CallbackTracker() d.addObserver('//event/test', cb.call) d.dispatch(None, '//event/test') self.assertEqual(1, cb.called) d.removeObserver('//event/test', cb.call) self.assertEqual(0, len(d._eventObservers.pop(0)))
def test_cleanUpRemoveXPathObserver(self): """ Test observer clean-up after removeObserver for XPath events. """ d = EventDispatcher() cb = CallbackTracker() msg = Element((None, "message")) d.addObserver('/message', cb.call) d.dispatch(msg) self.assertEqual(1, cb.called) d.removeObserver('/message', cb.call) self.assertEqual(0, len(d._xpathObservers.pop(0)))