Exemplo n.º 1
0
 def test_play_round__when_players_allin_with_unequal_stacks__side_pots_are_formed(
         self):
     stack_player1 = 1000
     stack_player2 = 3300
     stack_player3 = 7500
     stack_player4 = 30000
     player1 = self.setup_new_player("Button", stack_player1)
     player2 = self.setup_new_player("SmallBlind", stack_player2)
     player3 = self.setup_new_player("BigBlind", stack_player3)
     player4 = self.setup_new_player("UTG", stack_player4)
     player1.act = TestDealer.action_raise(stack_player1)
     player2.act = TestDealer.action_raise(stack_player2)
     player3.act = TestDealer.action_raise(stack_player3)
     player4.act = TestDealer.action_raise(stack_player4)
     seating = Seating([player1, player2, player3, player4])
     dealer = Dealer(None, seating, 1)
     # with seed 1 SmallBlind wins with pair of 6s
     # side pot goes to UTG with pair of 4s
     round = Round(dealer)
     round.play_round(5)
     self.assertEqual(0, player1.stack)
     self.assertEqual(stack_player2 * 3 + stack_player1, player2.stack)
     self.assertEqual(0, player3.stack)
     self.assertEqual(stack_player4 - stack_player2 * 2 + stack_player3,
                      player4.stack)
Exemplo n.º 2
0
 def test_is_winner_determined__when_one_player_left_with_chips__returns_true(
         self):
     stack_player1 = 200
     stack_player2 = 0
     player1 = self.setup_new_player("Player1", stack_player1)
     player2 = self.setup_new_player("Player2", stack_player2)
     seating = Seating([player1, player2])
     dealer = Dealer(None, seating)
     round = Round(dealer)
     self.assertTrue(round.is_winner_determined())
Exemplo n.º 3
0
 def test_play_round__when_round_concludes___button_is_moved(self):
     stack_player1 = 100
     stack_player2 = 100
     player1 = self.setup_new_player("Player1", stack_player1)
     player2 = self.setup_new_player("Player2", stack_player2)
     player1.act = TestDealer.action_fold()
     player2.act = TestDealer.action_fold()
     seating = Seating([player1, player2])
     dealer = Dealer(None, seating)
     dealer.move_button = MagicMock()
     # draw for Button and SmallBlind, both have 2 pairs with same kicker
     round = Round(dealer)
     round.play_round(5)
     self.assertTrue(dealer.move_button.called)
Exemplo n.º 4
0
 def test_play_round__when_player_wins_in_turn__round_concludes(self):
     initial_stack = 1000
     button_player = self.setup_new_player("Button", initial_stack)
     sb_player = self.setup_new_player("SmallBlind", initial_stack)
     bb_player = self.setup_new_player("BigBlind", initial_stack)
     utg_player = self.setup_new_player("UTG", initial_stack)
     button_player.act = TestDealer.action_call_fold(2)
     sb_player.act = TestDealer.action_call_fold(2)
     bb_player.act = TestDealer.action_call_fold(2)
     utg_player.act = TestDealer.action_call_fold(2)
     seating = Seating([button_player, sb_player, bb_player, utg_player])
     dealer = Dealer(None, seating)
     round = Round(dealer)
     round.play_round(5)
     self.assertEqual(40, len(dealer.deck.cards))
Exemplo n.º 5
0
 def test_play_round__when_played_with_fixed_deck_and_player_keeps_raising__expected_player_wins(
         self):
     initial_stack = 1000
     button_player = self.setup_new_player("Button", initial_stack)
     sb_player = self.setup_new_player("SmallBlind", initial_stack)
     bb_player = self.setup_new_player("BigBlind", initial_stack)
     utg_player = self.setup_new_player("UTG", initial_stack)
     button_player.act = TestDealer.action_check_call()
     sb_player.act = TestDealer.action_check_call()
     bb_player.act = self.action_raise(10)
     utg_player.act = TestDealer.action_check_call()
     seating = Seating([button_player, sb_player, bb_player, utg_player])
     # seed value 2 results in shuffling where SmallBlind has best hand (Pair)
     seed = 2
     dealer = Dealer(None, seating, seed)
     round = Round(dealer)
     round.play_round(5)
     self.assertEqual(1150, sb_player.stack)
Exemplo n.º 6
0
 def test_play_round__when_draw__pot_is_shared(self):
     stack_player1 = 10000
     stack_player2 = 3000
     stack_player3 = 1001  # 1 chip will be dropped when splitting pot
     player1 = self.setup_new_player("Button", stack_player1)
     player2 = self.setup_new_player("SmallBlind", stack_player2)
     player3 = self.setup_new_player("BigBlind", stack_player3)
     player1.act = TestDealer.action_raise(stack_player3)
     player2.act = TestDealer.action_raise(stack_player2)
     player3.act = TestDealer.action_raise(stack_player3)
     seating = Seating([player1, player2, player3])
     dealer = Dealer(None, seating, 27)
     # draw for Button and SmallBlind, both have 2 pairs with same kicker
     round = Round(dealer)
     round.play_round(5)
     self.assertEqual(stack_player1 + 500, player1.stack)
     self.assertEqual(stack_player2 + 500, player2.stack)
     self.assertEqual(0, player3.stack)
Exemplo n.º 7
0
 def test_play_round__when_round_ends__cards_are_collected(self):
     stack_player1 = 100
     stack_player2 = 100
     stack_player3 = 100
     player1 = self.setup_new_player("Player1", stack_player1)
     player2 = self.setup_new_player("Player2", stack_player2)
     player3 = self.setup_new_player("Player3", stack_player3)
     player1.act = TestDealer.action_raise(100)
     player2.act = TestDealer.action_raise(100)
     player3.act = TestDealer.action_raise(100)
     seating = Seating([player1, player2, player3])
     dealer = Dealer(None, seating, 27)
     # draw for Button and SmallBlind, both have 2 pairs with same kicker
     round = Round(dealer)
     round.play_round(5)
     self.assertEqual(0, len(dealer.community_cards))
     self.assertEqual(0, len(player1.cards))
     self.assertEqual(0, len(player2.cards))
     self.assertEqual(0, len(player3.cards))
Exemplo n.º 8
0
from engine.dealer import Dealer
from engine.game_settings import DefaultGameSettings
from engine.round import Round

game_settings = DefaultGameSettings()
dealer = Dealer(None, game_settings.seating)
round = Round(dealer)
while not round.is_winner_determined():
    round.play_round(game_settings.small_blind_size)