示例#1
0
def test_game_stops(monkeypatch):
    monkeypatch.setattr(game, "random", Random(0))

    game.delete_room("test")
    game.register("test", "a", "blah a")
    game.increment_balance("test", "a", name="blah a", amount=100)
    game.register("test", "b", "blah b")
    game.increment_balance("test", "a", name="blah b", amount=100)

    game.start("test", "a")

    # Pre-flop
    game.add_bet("test", "b", 100)
    game.add_bet("test", "a", 100)

    room_state = _room("test").get()[1]
    assert len(room_state.log) == 1
    assert room_state.game is None
示例#2
0
def test_fold_to_big_blind(monkeypatch):
    monkeypatch.setattr(game, "random", Random(0))

    game.delete_room("test")
    game.register("test", "a", "blah a")
    game.increment_balance("test", "a", name="blah a", amount=100)
    game.register("test", "b", "blah b")
    game.increment_balance("test", "a", name="blah b", amount=100)
    game.register("test", "c", "other")
    game.increment_balance("test", "a", name="other", amount=100)

    game.start("test", "a")
    assert len(_room("test").get()[1].log) == 0

    # Pre-flop
    game.fold("test", "b")
    assert _get_game("test").stage == 0
    game.fold("test", "a")
    assert _get_game("test").stage == 0

    state = _get_game("test")

    # Game should have ended
    assert len(_room("test").get()[1].log) == 1
    assert state.stage == 0
    assert state.pot == 3
示例#3
0
def test_play_hand(monkeypatch):
    monkeypatch.setattr(game, "random", Random(0))

    game.delete_room("test")
    game.register("test", "a", "blah a")
    game.increment_balance("test", "a", name="blah a", amount=100)
    game.register("test", "b", "blah b")
    game.increment_balance("test", "a", name="blah b", amount=100)
    game.register("test", "c", "other")
    game.increment_balance("test", "a", name="other", amount=100)

    view_a = game.get_player_view("test", "a")
    assert view_a.game is None

    game.start("test", "a")
    assert len(_room("test").get()[1].log) == 0
    deck = _get_game("test").deck

    view_a = game.get_player_view("test", "a")
    assert view_a.game.community_cards == ""
    assert view_a.game.hole_cards == deck[0:4]

    view_c = game.get_player_view("test", "c")
    assert view_c.game.hole_cards == deck[4:8]

    view_b = game.get_player_view("test", "b")
    assert view_b.game.hole_cards == deck[8:12]

    # Pre-flop
    game.add_bet("test", "b", 5)
    assert _get_game("test").stage == 0
    game.add_bet("test", "a", 5)
    assert _get_game("test").stage == 0
    game.add_bet("test", "c", 5)

    # Flop
    state = _get_game("test")
    assert state.stage == 1
    assert state.pot == 15

    view_a = game.get_player_view("test", "a")
    assert view_a.game.community_cards == deck[12:18]
    assert view_a.game.hole_cards == deck[0:4]

    game.add_bet("test", "a", 1)
    assert _get_game("test").stage == 1
    game.add_bet("test", "c", 2)
    assert _get_game("test").stage == 1
    game.add_bet("test", "b", 4)
    assert _get_game("test").stage == 1
    game.fold("test", "a")
    assert _get_game("test").stage == 1
    game.add_bet("test", "c", 4)

    # Turn
    view_a = game.get_player_view("test", "a")
    assert view_a.game.community_cards == deck[12:20]
    assert view_a.game.hole_cards == deck[0:4]

    state = _get_game("test")
    assert state.stage == 2
    assert state.pot == 24

    game.add_bet("test", "c", 0)
    game.add_bet("test", "b", 0)

    # River
    state = _get_game("test")
    assert state.stage == 3
    assert state.pot == 24

    final_hands = dict(state._get_final_hands())
    assert len(final_hands) == 2
    assert final_hands["c"][1] == deck[12:22]
    assert final_hands["c"][2] == deck[4:8]
    assert final_hands["b"][1] == deck[12:22]
    assert final_hands["b"][2] == deck[8:12]

    game.add_bet("test", "c", 1)
    game.add_bet("test", "b", 1)

    # Payout

    state = _get_game("test")
    assert len(_room("test").get()[1].log) == 1
    assert state.stage == 0
    assert state.pot == 3
    assert state.players[0].session_id == "c"
    assert state.players[0].bet == 1
    assert state.players[1].session_id == "b"
    assert state.players[1].bet == 2
    assert state.players[2].session_id == "a"
    assert state.players[2].bet == 0

    players = game.get_player_view("test", "a").players
    assert len(players) == 3
    assert players["other"]["balance"] == 115
    assert players["blah b"]["balance"] == 88
    assert players["blah a"]["balance"] == 94
示例#4
0
文件: http.py 项目: ievans/poker
def route_cash(request, room_name) -> Response:
    data = json.load(request.stream)
    try:
        game.increment_balance(room_name, request.session_id, **data)
    except game.NotAdmin as ex:
        return ex.as_response()