Example #1
0
class TestRouter(TestCase):
    def setUp(self) -> None:
        self.router = Router()

    def test_add_endpoint(self):
        endpoint = Mock()
        self.router.add_endpoint(endpoint)
        endpoints_in_router = self.router.get_endpoints()
        self.assertEqual(len(endpoints_in_router), 1)
        self.assertEqual(endpoints_in_router[0], endpoint)

    def test_broadcast(self):
        receiver1 = Mock()
        receiver2 = Mock()
        sender = Mock()
        self.router.add_endpoint(receiver1)
        self.router.add_endpoint(receiver2)
        self.router.add_endpoint(sender)
        message_sent = Packet(sender, "Hello world", None)
        self.router.broadcast(message_sent)
        self.router.distribute()
        receiver1.receive.assert_called_once()
        self.router.distribute()
        receiver2.receive.assert_called_once()

    def test_send(self):
        sender = Mock()
        receiver = Mock()
        message = Packet(sender, "Hello world", 1)
        self.router.add_endpoint(sender)
        self.router.add_endpoint(receiver)
        self.router.send(message)
        self.router.distribute()
        receiver.receive.assert_called_once()

    def test_send_not_broadcast(self):
        message = Packet(0, "Hello world", None)
        self.assertRaises(AssertionError, self.router.send, message)

    def tearDown(self) -> None:
        print(self.router.get_log())