Exemplo n.º 1
0
 def register_untagged(self, type, callback):
     try:
         self._untagged_handlers[type].register(callback)
     except KeyError:
         callback_stack = CallbackStack()
         callback_stack.register(callback)
         self._untagged_handlers[type] = callback_stack
Exemplo n.º 2
0
 def setUp(self):
     self.stack = CallbackStack()
Exemplo n.º 3
0
class TestCallbackStack(unittest.TestCase):
    def setUp(self):
        self.stack = CallbackStack()

    def test_empty(self):
        self.assertRaises(RuntimeError, self.stack)

    def test_single(self):
        callback = MagicMock(return_value=True)
        self.stack.register(callback)
        self.stack(666)
        callback.assert_called_once_with(666)
        self.stack.unregister(callback)
        self.assertRaises(RuntimeError, self.stack)

    def test_single_unhandled(self):
        callback = MagicMock(return_value=False)
        self.stack.register(callback)
        self.assertRaises(RuntimeError, self.stack, 666)
        callback.assert_called_once_with(666)
        self.stack.unregister(callback)
        self.assertRaises(RuntimeError, self.stack)

    def test_multiple(self):
        callback1 = MagicMock(return_value=True)
        callback2 = MagicMock(return_value=False)
        callback3 = MagicMock(return_value=True)

        self.stack.register(callback1)
        self.stack.register(callback2)
        self.stack(666)
        callback1.assert_called_once_with(666)
        callback1.reset_mock()
        callback2.assert_called_once_with(666)
        callback2.reset_mock()

        self.stack.register(callback3)
        self.stack(666)
        callback1.assert_not_called()
        callback1.reset_mock()
        callback2.assert_not_called()
        callback2.reset_mock()
        callback3.assert_called_once_with(666)

        self.stack.unregister(callback1)
        self.stack.unregister(callback3)
        self.assertRaises(RuntimeError, self.stack, 666)
        callback2.assert_called_once_with(666)

        self.stack.unregister(callback2)
        self.assertRaises(RuntimeError, self.stack)