def setUp(self): self.three_of_clubs = Card(rank="3", suit="Clubs") self.four_of_diamonds = Card(rank="4", suit="Diamonds") self.five_of_spades = Card(rank="5", suit="Spades") self.six_of_hearts = Card(rank="6", suit="Hearts") self.seven_of_diamonds = Card(rank="7", suit="Diamonds") self.seven_of_hearts = Card(rank="7", suit="Hearts") self.eight_of_clubs = Card(rank="8", suit="Clubs") self.nine_of_clubs = Card(rank="9", suit="Clubs") self.ace_of_spades = Card(rank="Ace", suit="Spades") self.cards = [ self.three_of_clubs, self.four_of_diamonds, self.five_of_spades, self.six_of_hearts, self.seven_of_diamonds, self.seven_of_hearts, self.eight_of_clubs, self.nine_of_clubs, self.ace_of_spades ]
def test_detect_and_cmp_integration(self): board = [ Card(14, 3), Card(14, 2), Card(14, 1), Card(14, 0), Card(13, 0) ] player1 = [Card(12, 3), Card(9, 2)] player2 = [Card(11, 3), Card(7, 2)] sd = HoldemPokerScoreDetector() score1 = sd.get_score(player1 + board) score2 = sd.get_score(player2 + board) self.assertEquals(0, score1.cmp(score2)) self.assertEquals(0, score2.cmp(score1))
def setUp(self): self.three_of_clubs = Card(rank="3", suit="Clubs") self.three_of_diamonds = Card(rank="3", suit="Diamonds") self.three_of_hearts = Card(rank="3", suit="Hearts") self.three_of_spades = Card(rank="3", suit="Spades") Card(rank="9", suit="Spades") self.cards = [ Card(rank="2", suit="Clubs"), self.three_of_clubs, self.three_of_diamonds, self.three_of_hearts, self.three_of_spades, Card(rank="7", suit="Hearts"), Card(rank="9", suit="Spades") ]
def test_poker_game_compare_hands_tie_breaker_royal_flush(poker_client): poker_client.hands = [] first_hand = Hand([ Card('A', 'hearts'), Card('K', 'hearts'), Card('Q', 'hearts'), Card('J', 'hearts'), Card('10', 'hearts') ]) second_hand = Hand([ Card('A', 'spades'), Card('K', 'spades'), Card('Q', 'spades'), Card('J', 'spades'), Card('10', 'spades') ]) poker_client.add_single_hand_to_game(first_hand) poker_client.add_single_hand_to_game(second_hand) result = poker_client.compare_two_hands() assert result == 'Second Hand Wins'
def test_poker_game_compare_hands_first_hand_wins(poker_client): poker_client.hands = [] first_hand = Hand([ Card('3', 'hearts'), Card('4', 'hearts'), Card('5', 'diamonds'), Card('4', 'diamonds'), Card('2', 'hearts') ]) second_hand = Hand([ Card('3', 'hearts'), Card('4', 'hearts'), Card('7', 'diamonds'), Card('9', 'hearts'), Card('2', 'hearts') ]) poker_client.add_single_hand_to_game(first_hand) poker_client.add_single_hand_to_game(second_hand) result = poker_client.compare_two_hands() assert result == 'First Hand Wins'
def test_hands_low_pair_vs_high_card(self): hand_a = [ Card("Ace", "Clubs"), Card("Queen", "Diamonds"), Card("Jack", "Clubs"), Card("King", "Diamonds"), Card("9", "Diamonds") ] hand_b = [ Card("2", "Clubs"), Card("4", "Diamonds"), Card("2", "Clubs"), Card("3", "Diamonds"), Card("5", "Diamonds") ] cards_a = Hand() cards_a.add_cards(hand_a) cards_b = Hand() cards_b.add_cards(hand_b) self.assertEqual(cards_a < cards_b, True)
def test_poker_game_compare_hands_flush(poker_client): poker_client.hands = [] first_hand = Hand([ Card('3', 'hearts'), Card('4', 'hearts'), Card('7', 'hearts'), Card('8', 'hearts'), Card('2', 'hearts') ]) second_hand = Hand([ Card('3', 'spades'), Card('4', 'spades'), Card('7', 'spades'), Card('9', 'spades'), Card('2', 'spades') ]) poker_client.add_single_hand_to_game(first_hand) poker_client.add_single_hand_to_game(second_hand) result = poker_client.compare_two_hands() assert result == 'Second Hand Wins'
def test_sorts_cards(self): two_of_spades = Card(rank="2", suit="Spades") five_of_diamonds = Card(rank="5", suit="Diamonds") five_of_hearts = Card(rank="5", suit="Hearts") eight_of_hearts = Card(rank="8", suit="Hearts") ace_of_clubs = Card(rank="Ace", suit="Clubs") unsorted_cards = [ five_of_hearts, five_of_diamonds, two_of_spades, ace_of_clubs, eight_of_hearts ] unsorted_cards.sort() self.assertEqual(unsorted_cards, [ two_of_spades, five_of_diamonds, five_of_hearts, eight_of_hearts, ace_of_clubs, ])
def test_points_a_draw_between_two_out_of_three_players(self): two_of_clubs = Card(rank="2", suit="Clubs") two_of_hearts = Card(rank="2", suit="Hearts") two_of_diamonds = Card(rank="2", suit="Diamonds") two_of_spades = Card(rank="2", suit="Spades") seven_of_hearts = Card(rank="7", suit="Hearts") eight_of_clubs = Card(rank="8", suit="Clubs") mock_hand1 = MagicMock() mock_hand1.best_rank.return_value = (9, "Pair", [two_of_clubs, two_of_diamonds]) mock_hand2 = MagicMock() mock_hand2.best_rank.return_value = (9, "Pair", [two_of_hearts, two_of_spades]) mock_hand3 = MagicMock() mock_hand3.best_rank.return_value = (10, "High Card", [seven_of_hearts, eight_of_clubs]) player1 = Player(name="Kimberly", hand=mock_hand1) player2 = Player(name="Debbie", hand=mock_hand2) player3 = Player(name="Amanda", hand=mock_hand3) players = [player1, player2, player3] self.assertEqual(player1, player2) self.assertGreater(player1, player3) self.assertGreater(player2, player3)
def test_representation(): assert str(Card('As')) == b'A♠' assert unicode(Card('As')) == 'A♠' assert repr(Card('As')) == b"Card('A♠')" assert repr(Card('Ad')) == b"Card('A♦')" assert repr(Card('Kh')) == b"Card('K♥')" assert repr(Card('Jc')) == b"Card('J♣')"
def setUp(self): self.first_two_cards = [ Card(rank = "2", suit = "Hearts"), Card(rank = "6", suit = "Clubs") ] self.next_two_cards = [ Card(rank = "9", suit = "Diamonds"), Card(rank = "4", suit = "Spades") ] self.flop_cards = [ Card(rank = "2", suit = "Diamonds"), Card(rank = "4", suit = "Hearts"), Card(rank = "10", suit = "Spades") ] self.turn_card = [Card(rank = "2", suit = "Hearts")], self.river_card = [Card(rank ="Queen", suit ="Clubs")]
def setUp(self): two = Card(rank="2", suit="Spades") six = Card(rank="6", suit="Hearts") self.seven = Card(rank="7", suit="Diamonds") self.eight = Card(rank="8", suit="Spades") self.nine = Card(rank="9", suit="Clubs") self.ten = Card(rank="10", suit="Clubs") self.jack = Card(rank="Jack", suit="Hearts") # Here we had used self in certain cards because, they form the straight card. self.cards = [ two, six, self.seven, self.eight, self.nine, self.ten, self.jack ]
def setUp(self): two = Card(rank="2", suit="Spades") six = Card(rank="6", suit="Hearts") self.seven = Card(rank="7", suit="Diamonds") self.eight = Card(rank="8", suit="Spades") self.nine = Card(rank="9", suit="Clubs") self.ten = Card(rank="10", suit="Clubs") self.jack = Card(rank="Jack", suit="Hearts") self.cards = [ two, six, self.seven, self.eight, self.nine, self.ten, self.jack ]
def test_flush_cards_length(self): hand = [ Card("2", "Diamonds"), Card("4", "Diamonds"), Card("6", "Diamonds"), Card("8", "Diamonds"), Card("10", "Diamonds"), Card("King", "Diamonds"), Card("Ace", "Diamonds") ] flush = Flush(hand) self.assertEqual(len(flush.cards), 5)
def test_mixed_flush(self): hand = [ Card("2", "Diamonds"), Card("4", "Diamonds"), Card("6", "Diamonds"), Card("8", "Diamonds"), Card("10", "Hearts"), Card("8", "Hearts"), Card("5", "Diamonds") ] flush = Flush(hand) self.assertEqual(flush.is_valid, True)
def setUp(self): self.seven_of_hearts = Card(rank="7", suit="Hearts") self.seven_of_spades = Card(rank="7", suit="Spades") self.ten_of_hearts = Card(rank="10", suit="Hearts") self.ten_of_spades = Card(rank="10", suit="Spades") self.cards = [ Card(rank="5", suit="Clubs"), Card(rank="5", suit="Diamonds"), self.seven_of_hearts, self.seven_of_spades, self.ten_of_hearts, self.ten_of_spades, Card(rank="Jack", suit="Spades") ]
def setUp(self): self.first_two_cards = [ Card(rank='8', suit='Spades'), Card(rank='Ace', suit='Diamonds') ] self.next_two_cards = [ Card(rank='King', suit='Hearts'), Card(rank='2', suit='Clubs') ] self.flop_cards = [ Card(rank='10', suit='Hearts'), Card(rank='Jack', suit='Spades'), Card(rank='8', suit='Diamonds'), ] self.turn_card = [Card(rank='9', suit='Hearts')] self.river_card = [Card(rank='Queen', suit='Clubs')]
def setUp(self): self.eight_of_diamonds = Card(rank='8', suit='Diamonds') self.eight_of_clubs = Card(rank='8', suit='Clubs') self.ten_of_spades = Card(rank='10', suit='Spades') self.ten_of_diamonds = Card(rank='10', suit='Diamonds') self.ten_of_clubs = Card(rank='10', suit='Clubs') self.cards = [ self.eight_of_clubs, self.eight_of_diamonds, self.ten_of_clubs, self.ten_of_diamonds, Card(rank='5', suit='Clubs'), self.ten_of_spades, Card(rank='Queen', suit='Hearts') ]
def test_straight_and_extra(self): hand = [ Card("2", "Clubs"), Card("3", "Diamonds"), Card("4", "Hearts"), Card("5", "Diamonds"), Card("Queen", "Diamonds"), Card("Ace", "Diamonds"), Card("6", "Diamonds") ] ranks = CheckRanks(hand) straight = Straight(ranks.list_ranks, ranks.list_suits) self.assertEqual(straight.is_valid, True)
def setUp(self): self.two_of_hearts = Card(rank="2", suit="Hearts") self.five_of_hearts = Card(rank="5", suit="Hearts") self.seven_of_hearts = Card(rank="7", suit="Hearts") self.eight_of_hearts = Card(rank="8", suit="Hearts") self.ten_of_hearts = Card(rank="10", suit="Hearts") self.ace_of_hearts = Card(rank="Ace", suit="Hearts") self.cards = [ self.two_of_hearts, self.five_of_hearts, self.seven_of_hearts, self.eight_of_hearts, self.ten_of_hearts, Card(rank="Jack", suit="Clubs"), self.ace_of_hearts ]
def test_hand_value_low_straight_7_cards(self): hand = [ Card("2", "Clubs"), Card("3", "Diamonds"), Card("4", "Hearts"), Card("5", "Diamonds"), Card("6", "Diamonds"), Card("10", "Diamonds"), Card("3", "Hearts") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.hand, "Straight")
def parseBoard(boardInput): if len(boardInput) % 2 != 0: raise ValueError("incorrect board input") handList = list(boardInput) board = () i = 0 while i < len(boardInput): card = Card(handList[i], handList[i + 1]) board += (card, ) i += 2 return board
def test_determines_there_five_consectuive_cards_with_same_suit(self): cards = [ Card(rank="3", suit="Clubs"), Card(rank="4", suit="Clubs"), Card(rank="5", suit="Clubs"), Card(rank="6", suit="Clubs"), Card(rank="7", suit="Clubs"), Card(rank="King", suit="Clubs"), Card(rank="Ace", suit="Diamonds") ] validator = StraightFlushValidator(cards=cards) self.assertEqual(validator.is_valid(), True)
def test_validates_that_cards_have_straight_flush_ending_in_ace(self): cards = [ Card(rank='2', suit='Spades'), Card(rank='10', suit='Diamonds'), Card(rank='Jack', suit='Diamonds'), Card(rank='Queen', suit='Diamonds'), Card(rank='King', suit='Diamonds'), Card(rank='Ace', suit='Diamonds'), Card(rank='Ace', suit='Clubs') ] validator = RoyalFlushValidator(cards=cards) self.assertEqual(validator.is_valid(), True)
def setUp(self): self.two_of_clubs = Card(rank="2", suit="Clubs") self.four_of_diamonds = Card(rank="4", suit="Diamonds") self.four_of_spades = Card(rank="4", suit="Spades") self.four_of_hearts = Card(rank="4", suit="Hearts") self.eight_of_hearts = Card(rank="8", suit="Hearts") self.ten_of_hearts = Card(rank="10", suit="Hearts") self.ace_of_clubs = Card(rank="Ace", suit="Spades") self.cards = [ self.two_of_clubs, self.four_of_diamonds, self.four_of_hearts, self.four_of_spades, self.eight_of_hearts, self.ten_of_hearts, self.ace_of_clubs ]
def setUp(self): self.eight_of_spades = Card(rank="8", suit="Spades") self.nine_of_spades = Card(rank="9", suit="Spades") self.ten_of_spades = Card(rank="10", suit="Spades") self.jack_of_spades = Card(rank="Jack", suit="Spades") self.queen_of_spades = Card(rank="Queen", suit="Spades") self.king_of_spades = Card(rank="King", suit="Spades") self.ace_of_spades = Card(rank="Ace", suit="Spades") self.cards = [ self.eight_of_spades, self.nine_of_spades, self.ten_of_spades, self.jack_of_spades, self.queen_of_spades, self.king_of_spades, self.ace_of_spades ]
def setUp(self): two_of_spades = Card(rank="2", suit="Spades") self.six_of_hearts = Card(rank="6", suit="Hearts") self.seven_of_diamonds = Card(rank="7", suit="Diamonds") self.eight_of_spades = Card(rank="8", suit="Spades") self.nine_of_clubs = Card(rank="9", suit="Clubs") self.ten_of_clubs = Card(rank="10", suit="Clubs") self.jack_of_hearts = Card(rank="Jack", suit="Hearts") self.cards = [ two_of_spades, self.six_of_hearts, self.seven_of_diamonds, self.eight_of_spades, self.nine_of_clubs, self.ten_of_clubs, self.jack_of_hearts ]
def test_validates_that_cards_do_not_have_straight_flush_ending_in_ace( self): cards = [ Card(rank="2", suit="Spades"), Card(rank="10", suit="Clubs"), Card(rank="Jack", suit="Clubs"), Card(rank="Queen", suit="Clubs"), Card(rank="King", suit="Clubs"), Card(rank="Ace", suit="Clubs"), Card(rank="Ace", suit="Diamonds") ] validator = RoyalFlushValidator(cards=cards) self.assertEqual(validator.is_valid(), True)
def test_determines_that_there_are_not_five_consecutive_cards_with_the_same_suit( self): cards = [ Card(rank='7', suit='Diamonds'), Card(rank='8', suit='Diamonds'), Card(rank='9', suit='Diamonds'), Card(rank='10', suit='Diamonds'), Card(rank='Jack', suit='Hearts'), Card(rank='King', suit='Diamonds'), Card(rank='Ace', suit='Clubs'), ] validator = StraightFlushValidator(cards=cards) self.assertEqual(validator.is_valid(), False)
def test_returns_five_straight_cards_with_same_rank_ending_in_ace(self): ten = Card(rank="10", suit="Clubs") jack = Card(rank="Jack", suit="Clubs") queen = Card(rank="Queen", suit="Clubs") king = Card(rank="King", suit="Clubs") ace = Card(rank="Ace", suit="Clubs") cards = [ Card(rank="2", suit="Spades"), ten, jack, queen, king, ace, Card(rank="Ace", suit="Diamonds") ] validator = RoyalFlushValidator(cards=cards) self.assertEqual(validator.valid_cards(), [ten, jack, queen, king, ace])