def test_add_listener_skips_invalid(self): mock = unittest.mock.Mock() l1 = unittest.mock.Mock() l1.is_valid.return_value = True l2 = TagListener(mock) nh = TagDispatcher() nh.add_listener("tag", l1) l1.is_valid.return_value = False nh.add_listener("tag", l2) obj = object() nh.unicast("tag", obj) self.assertSequenceEqual( [ unittest.mock.call.is_valid(), ], l1.mock_calls ) self.assertSequenceEqual( [ unittest.mock.call(obj), ], mock.mock_calls )
def test_add_listener_skips_invalid(self): mock = unittest.mock.Mock() l1 = unittest.mock.Mock() l1.is_valid.return_value = True l2 = TagListener(mock) nh = TagDispatcher() nh.add_listener("tag", l1) l1.is_valid.return_value = False nh.add_listener("tag", l2) obj = object() nh.unicast("tag", obj) self.assertSequenceEqual( [ unittest.mock.call.is_valid(), ], l1.mock_calls ) self.assertSequenceEqual( [ unittest.mock.call(obj), ], mock.mock_calls )
def test_close(self): data = unittest.mock.Mock() error1 = unittest.mock.Mock() error2 = unittest.mock.Mock() l1 = TagListener(data, error1) l2 = TagListener(data, error2) obj = object() nh = TagDispatcher() nh.add_listener("tag1", l1) nh.add_listener("tag2", l2) nh.close_all(obj) data.assert_not_called() error1.assert_called_once_with(obj) error2.assert_called_once_with(obj) with self.assertRaises(KeyError): nh.remove_listener("tag1") with self.assertRaises(KeyError): nh.remove_listener("tag2") with self.assertRaises(KeyError): nh.unicast("tag1", None) with self.assertRaises(KeyError): nh.unicast("tag2", None)
def test_unicast_error(self): data = unittest.mock.Mock() error1 = unittest.mock.Mock() error1.return_value = False error2 = unittest.mock.Mock() error2.return_value = False l1 = TagListener(data, error1) l2 = TagListener(data, error2) obj = object() nh = TagDispatcher() nh.add_listener("tag1", l1) nh.add_listener("tag2", l2) nh.unicast_error("tag1", obj) data.assert_not_called() self.assertSequenceEqual( [ unittest.mock.call(obj), ], error1.mock_calls ) self.assertSequenceEqual( [ ], error2.mock_calls )
def test_broadcast_error(self): data = unittest.mock.Mock() error1 = unittest.mock.Mock() error1.return_value = False error2 = unittest.mock.Mock() error2.return_value = False l1 = TagListener(data, error1) l2 = TagListener(data, error2) obj = object() nh = TagDispatcher() nh.add_listener("tag1", l1) nh.add_listener("tag2", l2) nh.broadcast_error(obj) nh.broadcast_error(obj) data.assert_not_called() self.assertSequenceEqual([ unittest.mock.call(obj), unittest.mock.call(obj), ], error1.mock_calls) self.assertSequenceEqual([ unittest.mock.call(obj), unittest.mock.call(obj), ], error2.mock_calls)
def test_close(self): data = unittest.mock.Mock() error1 = unittest.mock.Mock() error2 = unittest.mock.Mock() l1 = TagListener(data, error1) l2 = TagListener(data, error2) obj = object() nh = TagDispatcher() nh.add_listener("tag1", l1) nh.add_listener("tag2", l2) nh.close_all(obj) data.assert_not_called() error1.assert_called_once_with(obj) error2.assert_called_once_with(obj) with self.assertRaises(KeyError): nh.remove_listener("tag1") with self.assertRaises(KeyError): nh.remove_listener("tag2") with self.assertRaises(KeyError): nh.unicast("tag1", None) with self.assertRaises(KeyError): nh.unicast("tag2", None)
def test_unicast_fails_for_invalid(self): obj = object() l = unittest.mock.Mock() l.is_valid.return_value = False nh = TagDispatcher() nh.add_listener("tag", l) with self.assertRaises(KeyError): nh.unicast("tag", obj)
def test_broadcast_error_skip_invalid(self): obj = object() l = unittest.mock.Mock() l.is_valid.return_value = False nh = TagDispatcher() nh.add_listener("tag", l) nh.broadcast_error(obj) self.assertSequenceEqual([unittest.mock.call.is_valid()], l.mock_calls)
def test_unicast_fails_for_invalid(self): obj = object() l = unittest.mock.Mock() l.is_valid.return_value = False nh = TagDispatcher() nh.add_listener("tag", l) with self.assertRaises(KeyError): nh.unicast("tag", obj)
def test_add_listener(self): mock = unittest.mock.Mock() l = TagListener(mock) nh = TagDispatcher() nh.add_listener("tag", l) with self.assertRaisesRegex(ValueError, "only one listener is allowed"): nh.add_listener("tag", l)
def test_unicast_error_skip_and_remove_invalid_and_raise_KeyError(self): obj = object() l = unittest.mock.Mock() l.is_valid.return_value = False nh = TagDispatcher() nh.add_listener("tag", l) with self.assertRaises(KeyError): nh.unicast_error("tag", obj) self.assertSequenceEqual([unittest.mock.call.is_valid()], l.mock_calls)
def test_add_listener(self): mock = unittest.mock.Mock() l = TagListener(mock) nh = TagDispatcher() nh.add_listener("tag", l) with self.assertRaisesRegex(ValueError, "only one listener is allowed"): nh.add_listener("tag", l)
def test_broadcast_error_skip_invalid(self): obj = object() l = unittest.mock.Mock() l.is_valid.return_value = False nh = TagDispatcher() nh.add_listener("tag", l) nh.broadcast_error(obj) self.assertSequenceEqual( [ unittest.mock.call.is_valid() ], l.mock_calls )
def test_unicast_to_oneshot(self): mock = unittest.mock.Mock() obj = object() l = OneshotTagListener(mock) nh = TagDispatcher() nh.add_listener("tag", l) nh.unicast("tag", obj) with self.assertRaises(KeyError): nh.unicast("tag", obj) self.assertSequenceEqual([unittest.mock.call(obj)], mock.mock_calls)
def test_unicast_error_skip_and_remove_invalid_and_raise_KeyError(self): obj = object() l = unittest.mock.Mock() l.is_valid.return_value = False nh = TagDispatcher() nh.add_listener("tag", l) with self.assertRaises(KeyError): nh.unicast_error("tag", obj) self.assertSequenceEqual( [ unittest.mock.call.is_valid() ], l.mock_calls )
def test_broadcast_error_to_oneshot(self): data = unittest.mock.Mock() error = unittest.mock.Mock() obj = object() l = OneshotTagListener(data, error) nh = TagDispatcher() nh.add_listener("tag", l) nh.broadcast_error(obj) with self.assertRaises(KeyError): nh.unicast("tag", obj) self.assertSequenceEqual([unittest.mock.call(obj)], error.mock_calls) self.assertFalse(data.mock_calls)
def test_unicast_to_cancelled_oneshot(self): mock = unittest.mock.Mock() obj = object() l = OneshotTagListener(mock) nh = TagDispatcher() nh.add_listener("tag", l) l.cancel() with self.assertRaises(KeyError): nh.unicast("tag", obj) self.assertSequenceEqual( [], mock.mock_calls )
def test_broadcast_error_removes_on_true_result(self): data = unittest.mock.Mock() error1 = unittest.mock.Mock() error1.return_value = True l1 = TagListener(data, error1) obj = object() nh = TagDispatcher() nh.add_listener("tag1", l1) nh.broadcast_error(obj) nh.broadcast_error(obj) data.assert_not_called() self.assertSequenceEqual([ unittest.mock.call(obj), ], error1.mock_calls)
def test_broadcast_error_to_cancelled_oneshot(self): data = unittest.mock.Mock() error = unittest.mock.Mock() obj = object() l = OneshotTagListener(data, error) nh = TagDispatcher() nh.add_listener("tag", l) l.cancel() nh.broadcast_error(obj) with self.assertRaises(KeyError): nh.unicast("tag", obj) self.assertSequenceEqual( [], error.mock_calls ) self.assertFalse(data.mock_calls)
def test_broadcast_error_removes_on_true_result(self): data = unittest.mock.Mock() error1 = unittest.mock.Mock() error1.return_value = True l1 = TagListener(data, error1) obj = object() nh = TagDispatcher() nh.add_listener("tag1", l1) nh.broadcast_error(obj) nh.broadcast_error(obj) data.assert_not_called() self.assertSequenceEqual( [ unittest.mock.call(obj), ], error1.mock_calls )