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
        ]
Exemple #2
0
    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))
Exemple #3
0
    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'
Exemple #6
0
 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)
Exemple #10
0
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
        ]
Exemple #14
0
 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)
Exemple #15
0
 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)
Exemple #16
0
    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')]
Exemple #18
0
    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')
        ]
Exemple #19
0
 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)
Exemple #20
0
    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
        ]
Exemple #21
0
 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")
Exemple #22
0
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)
Exemple #25
0
    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])