예제 #1
0
    def test_send_winner_socket_closed(self):
        server = Mock()
        socket = AsyncMock()
        socket.send.side_effect = websockets.ConnectionClosed(0, "")
        viewer = SocketViewer(server, socket)
        viewer.logger = Mock()

        gs = GameState(GameMap(3))
        ps = PlayerState(1, "p1", gs.game_map, Position(1, 1))
        asyncio.run(viewer.send_winner(123, ps))

        viewer.logger.warning.assert_called_once()
        server.game.unregister_viewer.assert_called_once()
예제 #2
0
    def test_send_tick_socket_closed(self):
        server = Mock()
        server.game.max_nb_ticks = 500
        socket = AsyncMock()
        socket.send.side_effect = websockets.ConnectionClosed(0, "")
        viewer = SocketViewer(server, socket)
        viewer.logger = Mock()

        gs = GameState(GameMap(3))
        asyncio.run(viewer.send_tick(123, gs))

        viewer.logger.warning.assert_called_once()
        server.game.unregister_viewer.assert_called_once()
예제 #3
0
    def test_send_winner(self):
        server = Mock()
        server.game.max_nb_ticks = 500
        socket = AsyncMock()
        viewer = SocketViewer(server, socket)

        gs = GameState(GameMap(3))
        ps = PlayerState(1, "p1", gs.game_map, Position(1, 1))
        asyncio.run(viewer.send_winner(123, ps))

        socket.send.assert_called_once()
        data = json.loads(socket.send.call_args[0][0])

        self.assertEqual(data["type"], "winner")
        self.assertEqual(data["tick"], 123)
        self.assertEqual(data["winner"]["name"], "p1")
예제 #4
0
    def test_send_tick(self):
        server = Mock()
        server.game.max_nb_ticks = 500
        socket = AsyncMock()
        viewer = SocketViewer(server, socket)

        gs = GameState(GameMap(3))
        nb = 10
        for i in range(nb):
            asyncio.run(viewer.send_tick(100 + i, gs))

        self.assertEqual(nb, socket.send.call_count)
        data = json.loads(socket.send.call_args[0][0])

        self.assertEqual(data["type"], "tick")
        self.assertEqual(data["game"]["tick"], 100 + nb - 1)
예제 #5
0
 async def register_viewer(
         self, websocket: websockets.WebSocketServerProtocol) -> None:
     viewer = SocketViewer(self, websocket=websocket)
     self.logger.info(f"A new viewer just joined: '{viewer.uid}'")
     self.game.register_viewer(viewer)
     await self.wait_for_game_to_finish()