def setUp(self): self.fired1 = [] self.fired2 = [] self.disp = Dispatcher()
class DispatcherTestCase(unittest.TestCase): def setUp(self): self.fired1 = [] self.fired2 = [] self.disp = Dispatcher() def _callback1(self, *args, **kwargs): self.fired1.append((args, kwargs)) def _callback2(self, *args, **kwargs): self.fired2.append((args, kwargs)) def _crash(self): raise RuntimeError('ignore this error') def test_fire_no_listeners(self): assert self.disp.listening('eek') == 0 self.disp.dispatch('eek') def test_single_fire(self): self.disp.listen('eek', self._callback1) assert self.disp.listening('eek') == 1 self.disp.dispatch('eek', 1, a=2) assert self.fired1 == [((1,), {'a': 2})] def test_multiple_fire(self): self.disp.listen('eek', self._callback1) self.disp.listen('eek', self._callback2) assert self.disp.listening('eek') == 2 self.disp.dispatch('eek', 1, a=2) assert self.fired1 == [((1,), {'a': 2})] assert self.fired2 == [((1,), {'a': 2})] def test_crash(self): self.disp.listen('eek', self._crash) self.disp.dispatch('eek') def test_ignore_dups(self): self.disp.listen('eek', self._callback1) self.disp.listen('eek', self._callback1) assert self.disp.listening('eek') == 1 self.disp.dispatch('eek') assert self.fired1 == [((), {})] def test_unlisten(self): self.disp.listen('eek', self._callback1) self.disp.unlisten('eek', self._callback1) assert self.disp.listening('eek') == 0 self.disp.dispatch('eek', 1, a=2) assert self.fired1 == []