def test_foldwithnopostfloppairorbetter_call_preflop(): table = Table() num_players = 3 for i in xrange(num_players): player = Player(10, 'FoldWithNoPostFlopPairOrBetter') player.sit(table, i) table.initialize_hand() table.players[0].hole_cards.append(Card('D', 2)) table.players[0].hole_cards.append(Card('H', 9)) assert table.players[0].decide() == Decision.CALL
def test_callpairorbetter_fold_preflop(): table = Table() num_players = 3 for i in xrange(num_players): player = Player(10, 'CallPairOrBetter') player.sit(table, i) table.initialize_hand() table.players[0].hole_cards.append(Card('H', 10)) table.players[0].hole_cards.append(Card('H', 9)) assert table.players[0].decide() == Decision.FOLD
def test_callpairorbetter_call_postflop(): table = Table() num_players = 3 for i in xrange(num_players): player = Player(10, 'CallPairOrBetter') player.sit(table, i) table.initialize_hand() table.players[0].hole_cards.append(Card('D', 9)) table.players[0].hole_cards.append(Card('H', 9)) table.board.append(Card('S', 'A')) assert table.players[0].decide() == Decision.CALL
def test_hand_straight_high_card_wins(): hand1 = Hand([ Card('D', '7'), Card('H', '6'), Card('C', '5'), Card('H', '4'), Card('D', '3') ]) hand2 = Hand([ Card('S', '7'), Card('C', '8'), Card('S', '9'), Card('C', '10'), Card('D', 'J') ]) assert hand1 < hand2
def test_hand_two_pair_beats_one_pair(): hand1 = Hand([ Card('D', '5'), Card('H', '5'), Card('C', 'Q'), Card('H', 'Q'), Card('D', '3') ]) hand2 = Hand([ Card('H', '10'), Card('C', '4'), Card('S', 'A'), Card('C', '2'), Card('D', 'A') ]) assert hand1 > hand2
def test_hand_flush_beats_straight(): hand1 = Hand([ Card('D', 'A'), Card('H', 'K'), Card('C', 'Q'), Card('H', 'J'), Card('D', '10') ]) hand2 = Hand([ Card('S', 'J'), Card('S', '8'), Card('S', '6'), Card('S', '4'), Card('S', '2') ]) assert hand1 < hand2
def test_hand_pair_two(): hand1 = Hand([ Card('H', '3'), Card('C', '3'), Card('H', '2'), Card('H', '5'), Card('D', 'A') ]) hand2 = Hand([ Card('C', 'Q'), Card('H', 'Q'), Card('C', '8'), Card('C', '2'), Card('D', 'K') ]) assert hand1 < hand2
def test_hand_pair_kicker(): hand1 = Hand([ Card('H', '2'), Card('H', '5'), Card('C', 'Q'), Card('H', 'Q'), Card('D', '3') ]) hand2 = Hand([ Card('H', '10'), Card('C', '4'), Card('S', 'Q'), Card('C', '2'), Card('D', 'Q') ]) assert hand1 < hand2
def test_hand_straight_flush_highest_wins(): hand1 = Hand([ Card('H', '9'), Card('H', '8'), Card('H', '7'), Card('H', '6'), Card('H', '5') ]) hand2 = Hand([ Card('S', '6'), Card('S', '5'), Card('S', '4'), Card('S', '3'), Card('S', '2') ]) assert hand1 > hand2
def test_hand_four_of_a_kind_high_quad_wins(): hand1 = Hand([ Card('D', '4'), Card('H', '4'), Card('S', '4'), Card('C', '4'), Card('D', '9') ]) hand2 = Hand([ Card('S', '10'), Card('D', '10'), Card('H', '10'), Card('C', '10'), Card('S', '2') ]) assert hand1 < hand2
def test_hand_full_house_high_triplet_wins(): hand1 = Hand([ Card('D', 'K'), Card('C', 'K'), Card('H', 'K'), Card('D', '2'), Card('S', '2') ]) hand2 = Hand([ Card('S', '10'), Card('D', '10'), Card('H', '10'), Card('D', '9'), Card('S', '9') ]) assert hand1 > hand2
def test_hand_four_of_a_kind_beats_full_house(): hand1 = Hand([ Card('D', '4'), Card('H', '4'), Card('S', '4'), Card('C', '4'), Card('D', '9') ]) hand2 = Hand([ Card('S', '10'), Card('D', '10'), Card('H', '10'), Card('D', '2'), Card('S', '2') ]) assert hand1 > hand2
def test_hand_flush_kicker_five(): hand1 = Hand([ Card('D', 'J'), Card('D', '8'), Card('D', '6'), Card('D', '4'), Card('D', '3') ]) hand2 = Hand([ Card('S', 'J'), Card('S', '8'), Card('S', '6'), Card('S', '4'), Card('S', '2') ]) assert hand1 > hand2
def test_hand_full_house_beats_flush(): hand1 = Hand([ Card('D', 'J'), Card('D', '8'), Card('D', '6'), Card('D', '4'), Card('D', '3') ]) hand2 = Hand([ Card('S', '10'), Card('D', '10'), Card('H', '10'), Card('D', '2'), Card('S', '2') ]) assert hand1 < hand2
def test_hand_two_pair_top_wins(): hand1 = Hand([ Card('D', '5'), Card('H', '5'), Card('C', 'Q'), Card('H', 'Q'), Card('D', '3') ]) hand2 = Hand([ Card('H', '4'), Card('C', '4'), Card('S', 'A'), Card('C', '2'), Card('D', 'A') ]) assert hand1 < hand2
def test_hand_flush_kicker_four(): hand1 = Hand([ Card('D', 'J'), Card('D', '8'), Card('D', '5'), Card('D', '3'), Card('D', '2') ]) hand2 = Hand([ Card('S', 'J'), Card('S', '8'), Card('S', '5'), Card('S', '4'), Card('S', '2') ]) assert hand1 < hand2
def test_hand_straight_ace_high_wins(): hand1 = Hand([ Card('D', 'A'), Card('H', 'K'), Card('C', 'Q'), Card('H', 'J'), Card('D', '10') ]) hand2 = Hand([ Card('S', '7'), Card('C', '8'), Card('S', '9'), Card('C', '10'), Card('D', 'J') ]) assert hand1 > hand2
def test_hand_ace_low_straight_beats_three_of_a_kind(): hand1 = Hand([ Card('D', '5'), Card('H', '4'), Card('C', '3'), Card('H', '2'), Card('D', 'A') ]) hand2 = Hand([ Card('S', '4'), Card('C', '7'), Card('S', 'A'), Card('C', 'A'), Card('D', 'A') ]) assert hand1 > hand2
def test_hand_three_of_a_kind_value_wins(): hand1 = Hand([ Card('D', '5'), Card('H', '5'), Card('C', '5'), Card('H', 'Q'), Card('D', '3') ]) hand2 = Hand([ Card('H', '4'), Card('C', '7'), Card('S', 'A'), Card('C', 'A'), Card('D', 'A') ]) assert hand1 < hand2
def test_hand_three_of_a_kind_beats_two_pair(): hand1 = Hand([ Card('D', '5'), Card('H', '5'), Card('C', '5'), Card('H', 'Q'), Card('D', '3') ]) hand2 = Hand([ Card('H', '4'), Card('C', '4'), Card('S', 'A'), Card('C', '2'), Card('D', 'A') ]) assert hand1 > hand2
def test_hand_two_pair_kicker_wins(): hand1 = Hand([ Card('D', '5'), Card('H', '5'), Card('C', 'Q'), Card('H', 'Q'), Card('D', '3') ]) hand2 = Hand([ Card('S', '5'), Card('C', '5'), Card('S', 'Q'), Card('C', '2'), Card('D', 'Q') ]) assert hand1 > hand2
def test_hand_straight_flush_beats_four_of_a_kind(): hand1 = Hand([ Card('D', '9'), Card('H', '9'), Card('S', '9'), Card('C', '9'), Card('D', 'K') ]) hand2 = Hand([ Card('S', '6'), Card('S', '5'), Card('S', '4'), Card('S', '3'), Card('S', '2') ]) assert hand1 < hand2
def test_hand_high_card_one(): hand1 = Hand([ Card('H', '2'), Card('H', '5'), Card('C', '6'), Card('H', 'Q'), Card('D', 'A') ]) hand2 = Hand([ Card('H', '3'), Card('H', '7'), Card('C', '8'), Card('C', '2'), Card('D', 'K') ]) assert hand1 > hand2
def test_hand_straight_tie(): hand1 = Hand([ Card('H', '9'), Card('H', '8'), Card('D', '7'), Card('H', '6'), Card('H', '5') ]) hand2 = Hand([ Card('H', '9'), Card('H', '8'), Card('S', '7'), Card('H', '6'), Card('H', '5') ]) assert not hand1 > hand2 assert not hand1 < hand2 assert hand1 == hand2
def test_card_string(): card1 = Card('C', 'J') assert str(card1) == 'JC'
def test_card_cmp_value(): card1 = Card('C', '10') card2 = Card('C', 'Q') assert card1.cmp_value(card2) < 0 assert card2.cmp_value(card1) > 0
def test_card_repr(): card1 = Card('C', '10') assert repr(card1) == '<Card 10C>'
def test_card_sort_with_cmp_value(): cards = [ Card('C', '10'), Card('S', '2'), Card('C', '5'), Card('S', 'A'), Card('H', 'K'), Card('D', 'K'), ] cards.sort(cmp=Card.cmp_value) assert cards == [ Card('S', '2'), Card('C', '5'), Card('C', '10'), Card('H', 'K'), Card('D', 'K'), Card('S', 'A') ]
def test_blank_card(): card = Card() assert card.suit is None assert card.value is None
def test_single_card(): card = Card('H', '10') assert card.suit == 'H' assert card.value == 10