def test_game_stops(monkeypatch): monkeypatch.setattr(game, "random", Random(0)) game.delete_room("test") game.register("test", "a", "blah a") game.register("test", "b", "blah b") 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
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
def test_no_bad_characters(monkeypatch): monkeypatch.setattr(game, "random", Random(0)) game.delete_room("test") with raises(CannotRegister): game.register("test", "a", "blah\ta") # Unicode Roman Numeral I game.register("test", "b", "\u2160") with raises(CannotRegister): game.register("test", "c", "I")
def test_play_hand(monkeypatch): monkeypatch.setattr(game, "random", Random(0)) game.delete_room("test") game.register("test", "a", "blah a") game.register("test", "b", "blah b") game.register("test", "c", "other") 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
def route_join(request, room_name) -> Response: data = json.load(request.stream) try: game.register(room_name, request.session_id, data["name"].strip()) except game.CannotRegister as ex: return Response(ex.args[0], status=400)