Exemple #1
0
def test_deserialize_should_deserialize_start_game_msg():
    deserializer = MessageDeserializer()
    msg_json = json.dumps({'message': 'start the game', 'player_id': 0})

    actual = deserializer.deserialize(msg_json)

    assert actual == StartGameMsg(0)
Exemple #2
0
def test_deserialize_should_deserialize_want_to_join_msg():
    deserializer = MessageDeserializer()
    msg_json = json.dumps({'message': 'want to join the game', 'player_id': 0})

    actual = deserializer.deserialize(msg_json)

    assert actual == WantToJoinMsg(0)
Exemple #3
0
def test_deserialize_should_deserialize_ready_to_receive_game_state_msg():
    deserializer = MessageDeserializer()
    msg_json = json.dumps({
        'message': 'ready to receive game state',
        'player_id': 0
    })

    actual = deserializer.deserialize(msg_json)

    assert actual == ReadyToReceiveGameState(0)
Exemple #4
0
def test_deserialize_should_deserialize_hello_server_msg():
    deserializer = MessageDeserializer()
    msg_json = json.dumps({
        'message': 'hello server',
        'player_name': 'Piotr',
        'player_id': 0
    })

    actual = deserializer.deserialize(msg_json)

    assert actual == HelloServerMsg(0, 'Piotr')
Exemple #5
0
def test_deserialize_should_deserialize_play_card_msg():
    deserializer = MessageDeserializer()
    msg_json = json.dumps({
        'message': 'play card',
        'player_id': 0,
        'card_id': 10,
        'picked_color': 'RED'
    })

    actual = deserializer.deserialize(msg_json)

    assert actual == PlayCardMsg(0, 10, 'RED')
Exemple #6
0
                    await msg.send()
            else:
                await messages.send()

    async def clear_disconnected(self):
        while True:
            await asyncio.sleep(CLEAR_DISCONNECTED_PERIOD)
            logging.info('Clearing disconnected players')
            await self._send_messages(self.controller.clear_disconnected())


if __name__ == '__main__':
    addr = '0.0.0.0'
    port = 8000
    logging.basicConfig(
        format='%(asctime)s %(levelname)-8s %(message)s',
        level=logging.INFO,
        datefmt='%Y-%m-%d %H:%M:%S')

    logging.info(f'Starting server... Address: {addr}, port: {port}')

    controller = GameController()
    deserializer = MessageDeserializer()
    server = GameServer(controller, deserializer)

    start_server = websockets.serve(server.serve, addr, port)

    asyncio.get_event_loop().run_until_complete(start_server)
    asyncio.get_event_loop().run_until_complete(server.clear_disconnected())
    asyncio.get_event_loop().run_forever()
Exemple #7
0
def test_deserialize_should_raise_when_not_all_fields_are_present():
    deserializer = MessageDeserializer()
    msg_json = json.dumps({'message': 'hello server'})

    with pytest.raises(ValueError):
        deserializer.deserialize(msg_json)
Exemple #8
0
def test_deserialize_should_raise_when_unknown_message():
    deserializer = MessageDeserializer()
    msg_json = json.dumps({'message': 'unknown type'})

    with pytest.raises(ValueError):
        deserializer.deserialize(msg_json)
Exemple #9
0
def test_deserialize_should_raise_when_no_message_field():
    deserializer = MessageDeserializer()

    with pytest.raises(ValueError):
        deserializer.deserialize('{}')