예제 #1
0
    def test_board_card_plays(self):
        bet_sequences = [(PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL),
                         (PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL)]
        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=0).get_payoffs([0, 2])
        self.assertEqual([2, 0], payoffs.tolist())

        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=0).get_payoffs([2, 0])
        self.assertEqual([0, 2], payoffs.tolist())
예제 #2
0
    def test_bet_fold(self):
        bet_sequences = [(PlayerActions.BET_RAISE, PlayerActions.FOLD), ()]
        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=0).get_payoffs([1, 2])
        self.assertEqual([2, 0], payoffs.tolist())

        bet_sequences = [(PlayerActions.CHECK_CALL, PlayerActions.BET_RAISE,
                          PlayerActions.FOLD), ()]
        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=0).get_payoffs([2, 1])
        self.assertEqual([0, 2], payoffs.tolist())
예제 #3
0
 def test_round2_bets_are_4_check_reraise(self):
     bet_sequences = [(PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL),
                      (PlayerActions.CHECK_CALL, PlayerActions.BET_RAISE,
                       PlayerActions.BET_RAISE, PlayerActions.CHECK_CALL)]
     payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                        board_card=0).get_payoffs([1, 2])
     self.assertEqual([0, 18], payoffs.tolist())
예제 #4
0
 def test_game_rrc_is_round_1(self):
     bet_sequence = (PlayerActions.BET_RAISE, PlayerActions.BET_RAISE,
                     PlayerActions.CHECK_CALL)
     self.assertEqual(
         1,
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).game_round)
예제 #5
0
 def test_r2_cannot_raise_after_crr(self):
     r1_actions = (PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL)
     bet_sequence = (PlayerActions.CHECK_CALL, PlayerActions.BET_RAISE,
                     PlayerActions.BET_RAISE)
     self.assertFalse(
         LeducPokerGame.LeducNode([r1_actions, bet_sequence],
                                  board_card=0).can_raise)
예제 #6
0
 def test_call_reraise_r2(self):
     cost = LeducPokerGame.LeducNode(
         bet_sequences=[(PlayerActions.CHECK_CALL,
                         PlayerActions.CHECK_CALL),
                        (PlayerActions.BET_RAISE, PlayerActions.BET_RAISE)],
         board_card=0).add_action(PlayerActions.CHECK_CALL)
     self.assertEqual(4, cost)
예제 #7
0
    def test_suits_are_equivalent(self):
        bet_sequences = [(PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL),
                         (PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL)]
        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=0).get_payoffs([3, 2])
        self.assertEqual([2, 0], payoffs.tolist())

        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=3).get_payoffs([0, 2])
        self.assertEqual([2, 0], payoffs.tolist())

        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=2).get_payoffs([0, 5])
        self.assertEqual([0, 2], payoffs.tolist())

        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=5).get_payoffs([0, 2])
        self.assertEqual([0, 2], payoffs.tolist())

        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=1).get_payoffs([0, 4])
        self.assertEqual([0, 2], payoffs.tolist())

        payoffs = LeducPokerGame.LeducNode(bet_sequences=bet_sequences,
                                           board_card=4).get_payoffs([0, 1])
        self.assertEqual([0, 2], payoffs.tolist())
예제 #8
0
 def test_first_check_is_free_r2(self):
     cost = LeducPokerGame.LeducNode(
         bet_sequences=[(PlayerActions.CHECK_CALL,
                         PlayerActions.CHECK_CALL), ()],
         board_card=0).add_action(PlayerActions.CHECK_CALL)
     self.assertEqual(0, cost)
예제 #9
0
 def test_final_call_r1(self):
     cost = LeducPokerGame.LeducNode(
         bet_sequences=[(PlayerActions.BET_RAISE, PlayerActions.BET_RAISE,
                         PlayerActions.BET_RAISE), ()],
         board_card=None).add_action(PlayerActions.CHECK_CALL)
     self.assertEqual(2, cost)
예제 #10
0
 def test_raisecall_showdown_is_terminal(self):
     bet_sequences = [(PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL),
                      (PlayerActions.BET_RAISE, PlayerActions.CHECK_CALL)]
     self.assertTrue(
         LeducPokerGame.LeducNode(bet_sequences, board_card=1).is_terminal)
예제 #11
0
 def test_can_fold_after_cr_r2(self):
     r1_bet_sequence = (PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL)
     bet_sequence = (PlayerActions.CHECK_CALL, PlayerActions.BET_RAISE)
     self.assertTrue(
         LeducPokerGame.LeducNode([r1_bet_sequence, bet_sequence],
                                  board_card=0).can_fold)
예제 #12
0
 def test_checkraise_is_not_terminal(self):
     bet_sequences = [(PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL),
                      (PlayerActions.CHECK_CALL, PlayerActions.BET_RAISE)]
     self.assertFalse(
         LeducPokerGame.LeducNode(bet_sequences, board_card=1).is_terminal)
예제 #13
0
 def test_cannot_raise_after_rr(self):
     bet_sequence = (PlayerActions.BET_RAISE, PlayerActions.BET_RAISE)
     self.assertFalse(
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).can_raise)
예제 #14
0
 def test_r2_can_raise_after_c(self):
     r1_actions = (PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL)
     bet_sequence = (PlayerActions.CHECK_CALL, )
     self.assertTrue(
         LeducPokerGame.LeducNode([r1_actions, bet_sequence],
                                  board_card=0).can_raise)
예제 #15
0
 def test_can_raise_after_cr(self):
     bet_sequence = (PlayerActions.CHECK_CALL, PlayerActions.BET_RAISE)
     self.assertTrue(
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).can_raise)
예제 #16
0
 def test_can_open_raise(self):
     bet_sequence = ()
     self.assertTrue(
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).can_raise)
예제 #17
0
 def test_p2_folds_is_terminal(self):
     bet_sequence = (PlayerActions.BET_RAISE, PlayerActions.BET_RAISE,
                     PlayerActions.FOLD)
     self.assertTrue(
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).is_terminal)
예제 #18
0
 def test_nonterminal_payoff_raises_exception(self):
     with self.assertRaises(RuntimeError):
         LeducPokerGame.LeducNode(bet_sequences=[(), ()],
                                  board_card=0).get_payoffs([0, 0])
예제 #19
0
 def test_round1_is_not_terminal(self):
     bet_sequences = [(PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL),
                      ()]
     self.assertFalse(
         LeducPokerGame.LeducNode(bet_sequences, board_card=1).is_terminal)
예제 #20
0
 def test_can_fold_after_r(self):
     bet_sequence = (PlayerActions.BET_RAISE, )
     self.assertTrue(
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).can_fold)
예제 #21
0
 def test_game_start_is_round_0(self):
     bet_sequence = ()
     self.assertEqual(
         0,
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).game_round)
예제 #22
0
 def test_cannot_fold_after_c(self):
     bet_sequence = (PlayerActions.CHECK_CALL, )
     self.assertFalse(
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).can_fold)
예제 #23
0
 def test_cannot_open_fold(self):
     bet_sequence = ()
     self.assertFalse(
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).can_fold)
예제 #24
0
 def test_first_bet(self):
     cost = LeducPokerGame.LeducNode(bet_sequences=[(), ()],
                                     board_card=None).add_action(
                                         PlayerActions.BET_RAISE)
     self.assertEqual(3, cost)
예제 #25
0
 def test_cannot_fold_after_c_r2(self):
     r1_bet_sequence = (PlayerActions.CHECK_CALL, PlayerActions.CHECK_CALL)
     bet_sequence = (PlayerActions.CHECK_CALL, )
     self.assertFalse(
         LeducPokerGame.LeducNode([r1_bet_sequence, bet_sequence],
                                  board_card=0).can_fold)
예제 #26
0
 def test_game_start_is_not_terminal(self):
     bet_sequence = ()
     self.assertFalse(
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).is_terminal)
예제 #27
0
 def test_cc_r1(self):
     cost = LeducPokerGame.LeducNode(
         bet_sequences=[(PlayerActions.CHECK_CALL, ), ()],
         board_card=None).add_action(PlayerActions.CHECK_CALL)
     self.assertEqual(1, cost)
예제 #28
0
 def test_game_r_is_round_0(self):
     bet_sequence = (PlayerActions.BET_RAISE, )
     self.assertEqual(
         0,
         LeducPokerGame.LeducNode([bet_sequence, ()],
                                  board_card=0).game_round)
예제 #29
0
 def test_reraise_r1(self):
     cost = LeducPokerGame.LeducNode(
         bet_sequences=[(PlayerActions.BET_RAISE, ), ()],
         board_card=None).add_action(PlayerActions.BET_RAISE)
     self.assertEqual(5, cost)