コード例 #1
0
    async def _test_movement(self):
        async with ClientSession() as session:
            ws_url = f'{self.live_server_url}/{GAME_WS_URL}'
            async with session.ws_connect(ws_url) as ws:
                response = await ws.receive()
                data = json.loads(response.data)
                self.assertEqual(data['event'],
                                 MazeConsumer.NEW_MAZE_EVENT,
                                 msg='First event not new maze')

                # create maze on data from response
                maze = Maze(is_generate=False)
                maze.matrix_walls = data['content']['maze']['matrix']
                maze.x = data['content']['maze']['current_x']
                maze.y = data['content']['maze']['current_y']
                maze.max_depth_x = data['content']['maze']['current_x']
                maze.max_depth_y = data['content']['maze']['max_depth_y']

                # go to some free path direction
                free_path = maze.get_access_paths()[0]
                await ws.send_json({
                    'event': MazeConsumer.MOVE_EVENT,
                    'content': free_path
                })
                maze.go_to(free_path)

                while True:
                    # possible events: TIMER_EVENT and NEW_COORD_EVENT
                    response = await ws.receive()
                    data = json.loads(response.data)

                    if data['event'] == MazeConsumer.TIMER_EVENT:
                        continue
                    elif data['event'] == MazeConsumer.NEW_COORD_EVENT:
                        self.assertEqual(
                            (maze.x, maze.y),
                            (data['content'][0], data['content'][1]),
                            msg='Bad coordinates')
                        break
                    else:
                        self.assertTrue(False, msg='Unexpected event')