コード例 #1
0
def test_add_update(mocker, playerset):
    data = copy.deepcopy(DEFAULT_DICT)
    s = gameset.Gameset(playerset=playerset)
    newgame = mocker.Mock()
    s.newGame.connect(newgame)

    s[1] = game.Game(playerset=playerset, **data)
    assert 1 in s
    g = s[1]
    newgame.assert_called_with(g)
    newgame.reset_mock()

    data["title"] = "Something"
    s[1].update(**data)
    assert 1 in s
    assert g is s[1]
    assert not newgame.called
    newgame.reset_mock()

    data["uid"] = 2
    s[2] = game.Game(playerset=playerset, **data)
    assert 2 in s
    g2 = s[2]
    assert g is not g2
    newgame.assert_called_with(g2)
コード例 #2
0
def test_new_states_one_object(playerset, mocker):
    s = gameset.Gameset(playerset=playerset)
    lobby = mocker.Mock()
    live = mocker.Mock()
    closed = mocker.Mock()
    s.newLobby.connect(lobby)
    s.newLiveGame.connect(live)
    s.newClosedGame.connect(closed)

    def reset():
        lobby.reset_mock()
        live.reset_mock()
        closed.reset_mock()

    data = copy.deepcopy(DEFAULT_DICT)

    g = game.Game(playerset=playerset, **data)
    s[1] = g
    assert lobby.called
    assert not live.called
    assert not closed.called
    reset()

    data["state"] = game.GameState.PLAYING
    s[1].update(**data)
    assert not lobby.called
    assert live.called
    assert not closed.called
    reset()

    data["state"] = game.GameState.CLOSED
    s[1].update(**data)
    assert not lobby.called
    assert not live.called
    assert closed.called
コード例 #3
0
def test_iter(playerset):
    s = gameset.Gameset(playerset=playerset)
    data = copy.deepcopy(DEFAULT_DICT)
    s[1] = game.Game(playerset=playerset, **data)

    num = 0
    for g in s.values():
        assert g is s[1]
        num += 1
    assert num == 1
コード例 #4
0
def test_clear(playerset):
    s = gameset.Gameset(playerset=playerset)
    data = copy.deepcopy(DEFAULT_DICT)
    s[1] = game.Game(playerset=playerset, **data)
    s.clear()

    num = 0
    for g in s:
        num += 1
    assert num == 0
コード例 #5
0
ファイル: test_game.py プロジェクト: GrotheFAF/client
def test_can_update_partially(playerset, mocker):
    data = copy.deepcopy(DEFAULT_DICT)
    g = game.Game(playerset=playerset, **data)
    d1 = g.to_dict()
    g.update(launched_at=20000)
    d2 = g.to_dict()

    assert d2["launched_at"] == 20000
    del d1["launched_at"]
    del d2["launched_at"]
    assert d1 == d2
コード例 #6
0
def test_new_states_new_objects(playerset, mocker):
    s = gameset.Gameset(playerset=playerset)
    lobby = mocker.Mock()
    live = mocker.Mock()
    closed = mocker.Mock()
    s.newLobby.connect(lobby)
    s.newLiveGame.connect(live)
    s.newClosedGame.connect(closed)

    def reset():
        lobby.reset_mock()
        live.reset_mock()
        closed.reset_mock()

    data = copy.deepcopy(DEFAULT_DICT)
    data["uid"] = 1

    s[1] = game.Game(playerset=playerset, **data)
    assert lobby.called
    assert not live.called
    assert not closed.called
    reset()

    data["uid"] = 2
    data["state"] = game.GameState.PLAYING
    s[2] = game.Game(playerset=playerset, **data)
    assert not lobby.called
    assert live.called
    assert not closed.called
    reset()

    data["uid"] = 3
    data["state"] = game.GameState.CLOSED
    with pytest.raises(ValueError):
        s[3] = game.Game(playerset=playerset, **data)
    assert not lobby.called
    assert not live.called
    # A new closed game does *not* get reported.
    assert not closed.called
コード例 #7
0
ファイル: test_game.py プロジェクト: GrotheFAF/client
def test_closed_determined_by_gamestate(playerset):
    data = copy.deepcopy(DEFAULT_DICT)

    g = game.Game(playerset=playerset, **data)
    assert not g.closed()
    g.update(**data)
    assert not g.closed()
    data["state"] = game.GameState.PLAYING
    g.update(**data)
    assert not g.closed()
    data["state"] = game.GameState.CLOSED
    g.update(**data)
    assert g.closed()
コード例 #8
0
ファイル: test_game.py プロジェクト: GrotheFAF/client
def test_update_signal(playerset, mocker):
    data = copy.deepcopy(DEFAULT_DICT)
    g = game.Game(playerset=playerset, **data)
    updated = mocker.Mock()

    def check_signal(new, old):
        assert old.host == "IllIIIlIlIIIlI"
        assert new.host == "OtherName"

    g.gameUpdated.connect(updated)
    g.gameUpdated.connect(check_signal)
    data["host"] = "OtherName"
    g.update(**data)
    assert updated.called
コード例 #9
0
def test_no_state_changes(playerset, mocker):
    s = gameset.Gameset(playerset=playerset)
    lobby = mocker.Mock()
    live = mocker.Mock()
    closed = mocker.Mock()
    s.newLobby.connect(lobby)
    s.newLiveGame.connect(live)
    s.newClosedGame.connect(closed)

    def reset():
        lobby.reset_mock()
        live.reset_mock()
        closed.reset_mock()

    data = copy.deepcopy(DEFAULT_DICT)

    s[1] = game.Game(playerset=playerset, **data)
    reset()
    data['title'] = "New"
    s[1].update(**data)
    assert not lobby.called
    assert not live.called
    assert not closed.called
コード例 #10
0
def test_cant_add_mismatched_uid(mocker, playerset):
    s = gameset.Gameset(playerset=playerset)
    g = game.Game(playerset=playerset, **DEFAULT_DICT)
    with pytest.raises(ValueError):
        s[2] = g
コード例 #11
0
def test_cant_add_twice(mocker, playerset):
    s = gameset.Gameset(playerset=playerset)
    g = game.Game(playerset=playerset, **DEFAULT_DICT)
    s[1] = g
    with pytest.raises(ValueError):
        s[1] = g
コード例 #12
0
ファイル: test_game.py プロジェクト: GrotheFAF/client
def test_simple_correct_init(playerset):
    game.Game(playerset=playerset, **DEFAULT_DICT)
コード例 #13
0
ファイル: test_game.py プロジェクト: GrotheFAF/client
def test_copy(playerset, mocker):
    data = copy.deepcopy(DEFAULT_DICT)
    g = game.Game(playerset=playerset, **data)
    gc = g.copy()
    assert g.to_dict() == gc.to_dict()
コード例 #14
0
ファイル: test_game.py プロジェクト: GrotheFAF/client
def test_abort_closes(playerset, mocker):
    data = copy.deepcopy(DEFAULT_DICT)
    g = game.Game(playerset=playerset, **data)
    assert not g.closed()
    g.abort_game()
    assert g.closed()
コード例 #15
0
ファイル: test_game.py プロジェクト: GrotheFAF/client
def test_uid_required_for_init(playerset):
    data = copy.deepcopy(DEFAULT_DICT)
    del data["uid"]
    with pytest.raises(TypeError):
        game.Game(playerset=playerset, **data)
コード例 #16
0
ファイル: test_game.py プロジェクト: GrotheFAF/client
def test_can_update_to_none(playerset, mocker):
    data = copy.deepcopy(DEFAULT_DICT)
    g = game.Game(playerset=playerset, **data)
    g.update(launched_at=None)
    assert g.launched_at is None
コード例 #17
0
ファイル: main.py プロジェクト: ajevans99/Euchre-AI

def configure_logging():
    root = logging.getLogger()
    root.setLevel(logging.WARN)

    handler = logging.StreamHandler(sys.stdout)
    handler.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)
    root.addHandler(handler)


GAMES_TO_PLAY = 1000

game = game.Game([MDPPlayer, RandomPlayer, MDPPlayer, RandomPlayer])

team0_wins, team1_wins = 0, 0
team0_points, team1_points = 0, 0
number_games_played = 0

progressbar.streams.wrap_stderr()
configure_logging()

for _ in progressbar.progressbar(range(GAMES_TO_PLAY), redirect_stdout=True):
    hands0, hands1 = 0, 0
    points0, points1 = 0, 0

    while points0 < 10 and points1 < 10:
        result = game.play_tricks()
        hands0 += result[0]