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
def setUp(self): self.stack = CallbackStack()
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)