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()
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()
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")
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)
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()