Beispiel #1
0
    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))
Beispiel #2
0
    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)