def test_event_restrictions(self): dispatcher = Dispatcher(( 1, 2 )) handler = mock.Mock(return_value=None) self.assertTrue(dispatcher.register(1, handler)) dispatcher.dispatch(1, 'arg', kw='kw') handler.assert_called_once_with(1, 'arg', kw='kw') self.assertTrue(dispatcher.unregister(1, handler)) handler.reset_mock() self.assertFalse(dispatcher.register(-1, handler)) dispatcher.dispatch(-1, 'arg', kw='kw') handler.assert_not_called() self.assertFalse(dispatcher.unregister(-1, handler))
def test_registration(self): results = None def _handler(_i, _event): try: l = results[_i] except KeyError: l = results[_i] = [] l.append(_event) _handler1 = functools.partial(_handler, 1) _handler2 = functools.partial(_handler, 2) results = {} dispatcher = Dispatcher() self.assertTrue(dispatcher.register('a', _handler1)) self.assertFalse(dispatcher.unregister('a', _handler1, once=True)) self.assertTrue(dispatcher.unregister('a', _handler1)) dispatcher.dispatch('a') self.assertEqual(len(results), 0) results = {} dispatcher = Dispatcher() self.assertTrue(dispatcher.once('a', _handler1)) self.assertFalse(dispatcher.unregister('a', _handler1)) self.assertTrue(dispatcher.unregister('a', _handler1, once=True)) dispatcher.dispatch('a') self.assertEqual(len(results), 0) results = {} dispatcher = Dispatcher() self.assertTrue(dispatcher.on('a', _handler1)) self.assertTrue(dispatcher.on('a', _handler1)) self.assertTrue(dispatcher.once('a', _handler2)) dispatcher.dispatch('a') expected = { 1: [ 'a', 'a' ], 2: [ 'a' ], } self.assertEqual(results, expected) self.assertFalse(dispatcher.unregister('a', _handler2, once=True)) dispatcher.dispatch('a') expected[1].extend([ 'a', 'a' ]) self.assertEqual(results, expected) self.assertTrue(dispatcher.unregister('a', _handler1)) dispatcher.dispatch('a') expected[1].append('a') self.assertEqual(results, expected) self.assertTrue(dispatcher.unregister('a', _handler1)) dispatcher.dispatch('a') self.assertEqual(results, expected)