Пример #1
0
 def test_Action_ante(self):
     """Test ante Action"""
     action = Action.new_ante(1)
     self.assertIsNotNone(action)
     self.assertTrue(action.is_ante())
     self.assertEqual(action.amount, 1)
     self.assertFalse(action.is_all_in())
     self.assertEqual(str(action), "ante 1")
Пример #2
0
 def test_ante_ActionRequest(self):
     """Test ActionRequest for ante"""
     amount = 20
     request = ActionRequest.new_ante_request(amount)
     self.assertIsNotNone(request)
     self.assertTrue(request.is_ante_request())
     self.assertEqual(request.amount, amount)
     request.validate_action(Action.new_ante(amount))
     request.validate_action(Action.new_fold())
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_ante(amount+1))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_call(amount))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_bet(amount))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_raise(amount))
Пример #3
0
 def test_ActionRequest(self):
     """Test ActionRequest class"""
     request = ActionRequest(ActionRequest.ANTE_REQUEST, 10)
     self.assertIsNotNone(request)
     self.assertTrue(request.is_ante_request())
     self.assertEqual(request.amount, 10)
     self.assertEqual(str(request), "ante request for 10")
     request.validate_action(Action.new_ante(10))
Пример #4
0
 def test_opening_bet_ActionRequest(self):
     """Test ActionRequest for opening bet"""
     amount = 50
     request = ActionRequest.new_opening_bet_request(amount)
     self.assertIsNotNone(request)
     self.assertTrue(request.is_opening_bet_request())
     self.assertEqual(request.amount, amount)
     request.validate_action(Action.new_check())
     request.validate_action(Action.new_bet(amount))
     request.validate_action(Action.new_fold())
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_ante(amount))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_blind(amount))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_call(amount))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_bet(amount+1))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_raise(amount))
Пример #5
0
 def test_call_ActionRequest(self):
     """Test ActionRequest for call"""
     amount = 50
     request = ActionRequest.new_call_request(amount, raise_amount=amount*2)
     self.assertIsNotNone(request)
     self.assertTrue(request.is_call_request())
     self.assertEqual(request.amount, amount)
     self.assertEqual(request.raise_amount, amount*2)
     self.assertEqual(str(request), "call request for 50 or raise of 100")
     request.validate_action(Action.new_call(amount))
     request.validate_action(Action.new_raise(amount*2))
     request.validate_action(Action.new_fold())
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_ante(amount))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_blind(amount))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_call(amount+1))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_bet(amount))
     with self.assertRaises(InvalidActionException):
         request.validate_action(Action.new_raise(amount*2-1))
Пример #6
0
 def test_BettingRound(self):
     """Test BettingRound class"""
     players = [ Player(stack=1000),
                 Player(stack=1000),
                 Player(stack=1000),
                 Player(stack=1000) ]
     table = Table()
     table.seat_players(players, in_order=True)
     message_handler = MessageHandler(table, self.console)
     pot = Pot(players)
     round = BettingRound(table, pot, message_handler)
     self.assertIsNotNone(round)
     self.assertEqual(round.table, table)
     self.assertEqual(round.pot, pot)
     self.assertRaises(PokerGameStateException, round.get_action_player)
     action_is_on = players[1]
     round.set_action(action_is_on)
     self.assertEqual(round.get_action_player(), action_is_on)
     self.assertIsNone(round.last_to_bet)
     self.assertEqual(len(round.action_record), 0)
     self.assertEqual(round.action_to_next_player(), players[2])
     self.assertEqual(round.action_to_next_player(), players[3])
     self.assertEqual(round.action_to_next_player(), players[0])
     self.assertEqual(round.action_to_next_player(), players[1])
     self.assertEqual(round.required_to_call(players[0]), 0)
     self.assertFalse(round.is_pot_good())
     # Have all players ante
     round.process_action(Action.new_ante(5))
     self.assertEqual(players[1].stack, 995)
     self.assertEqual(round.get_action_player(), players[2])
     self.assertEqual(round.last_to_bet, players[1])
     round.process_action(Action.new_ante(5))
     self.assertEqual(players[2].stack, 995)
     self.assertEqual(round.get_action_player(), players[3])
     self.assertEqual(round.last_to_bet, players[1])
     round.process_action(Action.new_ante(5))
     self.assertEqual(players[3].stack, 995)
     self.assertEqual(round.get_action_player(), players[0])
     self.assertEqual(round.last_to_bet, players[1])
     round.process_action(Action.new_ante(5))
     self.assertEqual(players[0].stack, 995)
     self.assertEqual(round.get_action_player(), players[1])
     self.assertEqual(round.last_to_bet, players[1])
     self.assertTrue(round.is_pot_good())
     self.assertEqual(round.sweep_bets_into_pot(), pot)
     self.assertEqual(pot.amount, 20)
     # New round
     round = BettingRound(table, pot, message_handler)
     self.assertIsNotNone(round)
     round.set_action(action_is_on)
     # Player 1 blinds, 2 blinds, 3 fold, 0 raises to 300
     round.process_action(Action.new_blind(50))
     self.assertEqual(players[1].bet, 50)
     round.process_action(Action.new_blind(100))
     round.process_action(Action.new_fold())
     self.assertTrue(players[3].is_folded())
     round.process_action(Action.new_raise(300))
     self.assertFalse(round.is_pot_good())
     self.assertEqual(round.get_action_player(), players[1])
     self.assertEqual(len(round.action_record), 4)
     self.assertEqual(round.total_pot(), 470)
     # Player 1 calls, 2 raises all in, 3 has folded, 0 folds
     self.assertEqual(round.required_to_call(), 250)
     round.process_action(Action.new_call(250))
     self.assertEqual(round.required_to_call(), 200)
     round.process_action(Action.new_raise(895, all_in=True))
     self.assertTrue(players[2].is_all_in())
     # Make sure we skipped player 3 who folded earlier
     self.assertEqual(round.get_action_player(), players[0])
     self.assertEqual(round.required_to_call(), 695)
     round.process_action(Action.new_fold())
     self.assertFalse(round.is_pot_good())
     self.assertEqual(round.total_pot(), 1615)
     # Plater 1 calls and pot should be good
     self.assertEqual(round.required_to_call(), 695)
     round.process_action(Action.new_call(695, all_in=True))
     self.assertTrue(round.is_pot_good())
     self.assertEqual(round.total_pot(), 2310)
     round.sweep_bets_into_pot()
     # Should only be main pot
     self.assertIsNone(pot.parent)
     # All players bets should have beet swept into pot
     for player in players:
         self.assertEqual(0, player.bet,
                          "Bet for %s == %d != 0" % (player, player.bet))
     self.assertEqual(pot.amount, 2310)