68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
import sys
|
|
from pathlib import Path
|
|
import pytest
|
|
from gametree import Game, PlayerId, Street, ActionType
|
|
|
|
def make_players(n, stack):
|
|
return [(PlayerId(i, f"p{i}"), stack) for i in range(n)]
|
|
|
|
def test_player_states():
|
|
sb = 5
|
|
bb = 10
|
|
d_idx = 1
|
|
n_player = 4
|
|
stack = 500
|
|
players_init = make_players(n_player, stack)
|
|
g = Game(players_init=players_init, small_blind=sb, big_blind=bb, dealer_idx=d_idx)
|
|
|
|
assert g.current_street == Street.PREFLOP
|
|
sb_idx = (d_idx + 1) % n_player
|
|
bb_idx = (d_idx + 2) % n_player
|
|
next_idx = (d_idx + 3) % n_player
|
|
# init_bet
|
|
assert g.get_sb_amt == sb
|
|
assert g.get_bb_amt == bb
|
|
assert g.get_sb_idx == sb_idx
|
|
assert g.get_bb_idx == bb_idx
|
|
assert g.get_next_act_idx == next_idx
|
|
|
|
# init_players
|
|
players = g.get_active_players
|
|
assert len(players) == n_player
|
|
for idx, p in enumerate(players):
|
|
assert p.hand_cards is not None and len(p.hand_cards) == 2
|
|
if idx == sb_idx:
|
|
assert p.stack == stack - sb
|
|
assert p.committed == sb
|
|
elif idx == bb_idx:
|
|
assert p.stack == stack - bb
|
|
assert p.committed == bb
|
|
else:
|
|
assert p.stack == stack
|
|
assert p.committed == 0
|
|
|
|
# init_deck
|
|
deck = getattr(g, 'deck_manager', None)
|
|
rem_cards = getattr(deck, 'remaining_cards', None)
|
|
assert rem_cards is not None
|
|
assert rem_cards() == 28 # 36-8
|
|
|
|
# first_player
|
|
legal_actions = g.legal_actions(g.players[next_idx].pid)
|
|
assert legal_actions is not None and len(legal_actions) == 4
|
|
assert set(legal_actions) == {ActionType.FOLD, ActionType.CALL,
|
|
ActionType.RAISE, ActionType.ALLIN}
|
|
|
|
# n_players = len(players_init)
|
|
# if n_players < 2:
|
|
# expected_sb = None
|
|
# expected_bb = None
|
|
# elif n_players == 2:
|
|
# expected_sb = d_idx
|
|
# expected_bb = (d_idx + 1) % n_players
|
|
# else:
|
|
# expected_sb = (d_idx + 1) % len(players_init)
|
|
# expected_bb = (d_idx + 2) % len(players_init)
|
|
# assert g.get_sb_idx == expected_sb
|
|
# assert g.get_bb_idx == expected_bb
|