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")

        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")
        ]
Пример #2
0
    def __init__(self, pocket_cards, table_cards):
        """
        :type pocket_cards: list
        :type table_cards: list
        """
        self.pocket_cards = pocket_cards
        self.table_cards = table_cards
        self.kicker_cards = []

        self.combination = None
        self.combination_cards = []
        self.kicker_cards = []
        self.power_cards = []
        self.power = 0

        self.seven_cards = Card.sort_desc(self.table_cards + self.pocket_cards)
        self.process()
    def setUp(self):

        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.eight_of_clubs = Card(rank="8", suit="Clubs")
        self.eight_of_spades = Card(rank="8", suit="Spades")
        self.ten_of_hearts = Card(rank="10", suit="Hearts")

        self.cards = [
            self.four_of_diamonds, self.four_of_hearts, self.four_of_spades,
            self.eight_of_clubs, self.eight_of_hearts, self.eight_of_spades,
            self.ten_of_hearts
        ]
    def test_determines_there_are_not_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="Diamonds"),
            Card(rank="King", suit="Clubs"),
            Card(rank="Ace", suit="Diamonds")
        ]

        validator = StraightFlushValidator(cards=cards)

        self.assertEqual(validator.is_valid(), False)
    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)
Пример #6
0
    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])
Пример #7
0
    def setUp(self):
        self.eight_of_clubs = Card(rank='8', suit='Clubs')
        self.eight_of_diamonds = Card(rank='8', suit='Diamonds')
        self.eight_of_hearts = Card(rank='8', suit='Hearts')
        self.eight_of_spades = Card(rank='8', suit='Spades')

        self.cards = [
            self.eight_of_clubs,
            self.eight_of_diamonds,
            self.eight_of_hearts,
            self.eight_of_spades,
            Card(rank='10', suit='Hearts'),
            Card(rank='King', suit='Clubs'),
            Card(rank='Ace', suit='Spades')

        ]
    def test_returns_five_consectuive_cards_with_same_suit(self):
        three = Card(rank="3", suit="Clubs")
        four = Card(rank="4", suit="Clubs")
        five = Card(rank="5", suit="Clubs")
        six = Card(rank="6", suit="Clubs")
        seven = Card(rank="7", suit="Clubs")

        cards = [
            three, four, five, six, seven,
            Card(rank="King", suit="Clubs"),
            Card(rank="Ace", suit="Diamonds")
        ]

        validator = StraightFlushValidator(cards=cards)

        self.assertEqual(validator.valid_cards(),
                         [three, four, five, six, seven])
    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")
        ]

        # TODO: there is a bugh for straight if we have two cards with the same rank

        valdiator = RoyalFlushValidator(cards=cards)

        self.assertEqual(valdiator.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_straigh_flush_is_not_valid(self):
     '''
     straight flush occurs when
     all rank are sequential and
     suite is same
     '''
     cards = [
         Card(rank="3", suite="clubs"),
         Card(rank="4", suite="hearts"),
         Card(rank="5", suite="hearts"),
         Card(rank="6", suite="hearts"),
         Card(rank="7", suite="hearts"),
         Card(rank="8", suite="clubs"),
         Card(rank="King", suite="hearts")
     ]
     validator = StraightFlushValidator(cards=cards)
     self.assertEqual(validator.is_valid(), False)
Пример #12
0
    def setUp(self):
        self.two_of_diamonds = Card(rank='2', suit='Diamonds')
        self.three_of_diamonds = Card(rank='3', suit='Diamonds')
        self.five_of_diamonds = Card(rank='5', suit='Diamonds')
        self.seven_of_diamonds = Card(rank='7', suit='Diamonds')
        self.eight_of_diamonds = Card(rank='8', suit='Diamonds')
        self.queen_of_diamonds = Card(rank='Queen', suit='Diamonds')

        self.cards = [
            self.two_of_diamonds,
            self.three_of_diamonds,
            self.five_of_diamonds,
            self.seven_of_diamonds,
            self.eight_of_diamonds,
            Card(rank='Jack', suit='Hearts'),
            self.queen_of_diamonds
        ]
    def setUp(self):

        self.three_of_hearts = Card(rank="3", suite="hearts")
        self.four_of_hearts = Card(rank="4", suite="hearts")
        self.five_of_hearts = Card(rank="5", suite="hearts")

        self.ten_of_hearts = Card(rank="10", suite="hearts")
        self.ace_of_hearts = Card(rank="Ace", suite="hearts")

        self.cards = [
            self.three_of_hearts, self.four_of_hearts, self.five_of_hearts,
            Card(rank="7", suite="clubs"), self.ten_of_hearts,
            self.ace_of_hearts
        ]
    def test_validates_that_cards_do_not_have_straight_flush_ending_in_ace(
            self):
        cards = [
            Card(rank='9', suit='Diamonds'),
            Card(rank='10', suit='Diamonds'),
            Card(rank='Jack', suit='Diamonds'),
            Card(rank='Queen', suit='Diamonds'),
            Card(rank='King', suit='Diamonds'),
            Card(rank='Ace', suit='Clubs')
        ]

        validator = RoyalFlushValidator(cards=cards)

        self.assertEqual(validator.is_valid(), False)
    def test_validates_that_card_do_not_have_a_straight_flush_ending_with_an_ace(
            self):
        cards = [
            Card(rank="9", suit="Clubs"),
            Card(rank="10", suit="Clubs"),
            Card(rank="Jack", suit="Clubs"),
            Card(rank="Queen", suit="Clubs"),
            Card(rank="King", suit="Clubs"),
            Card(rank="Ace", suit="Diamonds"),
        ]

        validator = RoyalFlushValidator(cards=cards)

        self.assertEqual(validator.is_valid(), False)
    def setUp(self):
        self.seven_of_spades = Card(rank = "7", suit = "Spades")
        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_clubs = Card(rank = "King", suit = "Clubs")

        self.cards = [
            self.seven_of_spades,
            self.eight_of_spades,
            self.nine_of_spades,
            self.ten_of_spades,
            self.jack_of_spades,
            self.queen_of_spades,
            self.king_of_clubs
        ]
Пример #17
0
    def setUp(self):
        self.three_of_clubs = Card(rank = "3", suit = "Clubs")
        self.five_of_clubs = Card(rank = "5", suit = "Clubs")
        self.six_of_clubs = Card(rank = "6", suit = "Clubs")
        self.ten_of_clubs = Card(rank = "10", suit = "Clubs")
        self.ace_of_clubs = Card(rank = "Ace", suit = "Clubs")
        self.jack_of_hearts = Card(rank = "Jack", suit = "Hearts")
        self.eight_of_clubs = Card(rank = "8", suit = "Clubs")

        self.cards = [
            self.three_of_clubs,
            self.five_of_clubs,
            self.six_of_clubs,
            self.eight_of_clubs,
            self.ten_of_clubs,
            self.jack_of_hearts,
            self.ace_of_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")

        self.cards = [
            two,
            six,
            self.seven,
            self.eight,
            self.nine,
            self.ten,
            self.jack
        ]
    def setUp(self):
        two_of_diamonds = Card(rank='2', suit='Diamonds')
        six_of_diamonds = Card(rank='6', suit='Diamonds')
        self.seven_of_clubs = Card(rank='7', suit='Clubs')
        self.eight_of_spades = Card(rank='8', suit='Spades')
        self.nine_of_spades = Card(rank='9', suit='Spades')
        self.ten_of_clubs = Card(rank='10', suit='Clubs')
        self.jack_of_spades = Card(rank='Jack', suit='Spades')

        self.cards = [
            two_of_diamonds,
            six_of_diamonds,
            self.seven_of_clubs,
            self.eight_of_spades,
            self.nine_of_spades,
            self.ten_of_clubs,
            self.jack_of_spades
        ]
Пример #20
0
 def test_hands_value_vs_other_hand_value(self):
     hand_a = [
         Card("Ace", "Clubs"),
         Card("Ace", "Diamonds"),
         Card("2", "Clubs"),
         Card("3", "Diamonds")
     ]
     # hand_a_value = (20 * sum([13, 13])) + sum([13, 13, 1, 2])
     # print(hand_a_value)
     hand_b = [
         Card("Ace", "Clubs"),
         Card("Queen", "Diamonds"),
         Card("10", "Clubs"),
         Card("10", "Diamonds")
     ]
     # hand_b_value = (20 * sum([10, 10])) + sum([13, 11, 10, 10])
     # print(hand_b_value)
     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)
Пример #21
0
def create_players(number):
    deck = CardDeck()
    cards = Card.create_cards()
    deck.add_cards(cards)
    hand = Hand()
    player = Player(f"Player", hand)
    players.append(player)
    human = Human(player=player)
    for i in range(number):
        hand = Hand()
        player = Player(f"Opponent {i}", hand)
        players.append(player)
        ai = AI(player=player)
    hide_buttons()
    for player in players:
        player.add_chips(60)
    game = GameRound(players=players, deck=deck)
    # game.set_game_qty(game_qty=10)
    game.set_game_qty(infinite=True)
    game.play()
 def setUp(self):
     self.four_of_hearts  =    Card(rank = "4", suite = "hearts")
     self.four_of_diamonds=    Card(rank = "4", suite = "diamonds")
     self.four_of_clubs   =    Card(rank = "4", suite = "clubs")
     five_of_clubs   =    Card(rank = "5", suite = "clubs")
     self.two_of_diamonds =    Card(rank = "2", suite = "diamonds")
     self.two_of_spades   =    Card(rank = "2", suite = "spades")
     
     self.cards = [
         self.two_of_diamonds,
         self.two_of_spades,
         self.four_of_clubs,
         self.four_of_diamonds,
         self.four_of_hearts,
         five_of_clubs
     ]
Пример #23
0
class CardTest(unittest.TestCase):

    def setUp(self):
        self.low = Card(2, 0)
        self.low2 = Card(2, 1)
        self.high = Card(14, 2)
        self.high2 = Card(14, 2)

    def test_comparisons(self):
        self.assertTrue(self.low < self.high)
        self.assertTrue(self.high > self.low)
        self.assertTrue(self.high == self.high2)
        self.assertTrue(self.low <= self.high)
        self.assertTrue(self.high >= self.low)
        self.assertTrue(self.low != self.low2)
    
    def test_rank_from_zero(self):
        self.assertEqual(self.low.rank_from_zero(), 0)
        self.assertEqual(self.high.rank_from_zero(), 12)
    
    def test_rank_name(self):
        self.assertEqual(self.low.rank_name(), 'Two')
        self.assertEqual(self.high.rank_name(), 'Ace')
    
    def test_suit_name(self):
        self.assertEqual(self.low.suit_name(), 'Club')
        self.assertEqual(self.high.suit_name(), 'Heart')
    
    #maybe belongs in a different test class
    def test_straights_by_high_rank(self):
        self.assertEqual(straights_by_high_rank(2), [5, 6])
        self.assertEqual(straights_by_high_rank(3), [5, 6, 7])
        self.assertEqual(straights_by_high_rank(4), [5, 6, 7, 8])
        self.assertEqual(straights_by_high_rank(5), [5, 6, 7, 8, 9])
        self.assertEqual(straights_by_high_rank(6), [6, 7, 8, 9, 10])
        self.assertEqual(straights_by_high_rank(7), [7, 8, 9, 10, 11])
        self.assertEqual(straights_by_high_rank(8), [8, 9, 10, 11, 12])
        self.assertEqual(straights_by_high_rank(9), [9, 10, 11, 12, 13])
        self.assertEqual(straights_by_high_rank(10), [10, 11, 12, 13, 14])
        self.assertEqual(straights_by_high_rank(11), [11, 12, 13, 14])
        self.assertEqual(straights_by_high_rank(12), [12, 13, 14])
        self.assertEqual(straights_by_high_rank(13), [13, 14])
        self.assertEqual(straights_by_high_rank(14), [5, 14])

    def test_bad_inputs(self):
        self.assertRaises(CardError, Card, 100, 100)
 def test_to_royal_flush_is_best_rank(self):
     '''
     royal flush occurs when
     all rank are sequential and
     suite is same and the last card is Ace
     '''
     cards = [
         Card(rank = "9", suite = "hearts"),
         Card(rank = "10", suite = "hearts"),
         Card(rank = "Jack", suite = "hearts"),
         Card(rank = "Queen", suite = "hearts"),
         Card(rank = "King", suite = "hearts"),
         Card(rank = "Ace", suite = "diamonds"),
     ]
     validator = RoyalFlushValidator(cards= cards)
     self.assertEqual(
         validator.is_valid(),
         False
     )
    def test_determines_that_there_are_five_consecutive_cards_with_the_same_suit(
            self):
        seven_of_diamonds = Card(rank='7', suit='Diamonds')
        eight_of_diamonds = Card(rank='8', suit='Diamonds')
        nine_of_diamonds = Card(rank='9', suit='Diamonds')
        ten_of_diamonds = Card(rank='10', suit='Diamonds')
        jack_of_diamonds = Card(rank='Jack', suit='Diamonds')

        cards = [
            seven_of_diamonds,
            eight_of_diamonds,
            nine_of_diamonds,
            ten_of_diamonds,
            jack_of_diamonds,
            Card(rank='King', suit='Diamonds'),
            Card(rank='Ace', suit='Clubs'),
        ]

        validator = StraightFlushValidator(cards=cards)

        self.assertEqual(validator.valid_cards(), [
            seven_of_diamonds, eight_of_diamonds, nine_of_diamonds,
            ten_of_diamonds, jack_of_diamonds
        ])
Пример #26
0
    def test_sort_players_with_Pair_in_correct_order(self):
        two_of_clubs = Card(rank="2", suit="Clubs")
        two_of_hearts = Card(rank="2", suit="Hearts")
        king_of_clubs = Card(rank="King", suit="Clubs")

        ten_of_clubs = Card(rank="10", suit="Clubs")
        queen_of_diamonds = Card(rank="Queen", suit="Diamonds")
        queen_of_hearts = Card(rank="Queen", suit="Hearts")

        cards1 = [king_of_clubs, two_of_clubs, two_of_hearts]
        cards2 = [ten_of_clubs, queen_of_diamonds, queen_of_hearts]

        mock_hand1 = MagicMock()
        mock_hand2 = MagicMock()

        mock_hand1.best_rank.return_value = (8, "Pair", cards1)
        mock_hand2.best_rank.return_value = (8, "Pair", cards2)

        player1 = Player(name="Kimberly", hand=mock_hand1)
        player2 = Player(name="Debbie", hand=mock_hand2)
        players = [player1, player2]

        self.assertEqual(max(players), player2)
Пример #27
0
 def _test_card(self):
     card = Card(3, 2)
     self.assertEquals(3, card.rank)
     self.assertEquals(2, card.suit)
Пример #28
0
 def test_pair_with_longer_sequence(self):
     expected_category = HoldemPokerScore.PAIR
     cards = [
         Card(9, 0),
         Card(8, 0),
         Card(2, 2),
         Card(3, 0),
         Card(4, 3),
         Card(13, 3),
         Card(8, 3)
     ]
     expected_cards = [
         Card(8, 3),
         Card(8, 0),
         Card(13, 3),
         Card(9, 0),
         Card(4, 3)
     ]
     self._test_detect(cards, expected_category, expected_cards)
Пример #29
0
 def test_detect_full_houses_over_flush(self):
     expected_category = HoldemPokerScore.FULL_HOUSE
     cards = [
         Card(8, 0),
         Card(8, 1),
         Card(8, 2),
         Card(9, 0),
         Card(9, 1),
         Card(2, 3),
         Card(3, 3),
         Card(4, 3),
         Card(5, 3),
         Card(7, 3),
     ]
     expected_cards = [
         Card(8, 2),
         Card(8, 1),
         Card(8, 0),
         Card(9, 1),
         Card(9, 0)
     ]
     self._test_detect(cards, expected_category, expected_cards)
Пример #30
0
 def test_detect_shorter_sequence(self):
     expected_category = HoldemPokerScore.TRIPS
     cards = [Card(8, 0), Card(7, 3), Card(8, 1), Card(8, 2)]
     expected_cards = [Card(8, 2), Card(8, 1), Card(8, 0), Card(7, 3)]
     self._test_detect(cards, expected_category, expected_cards)
Пример #31
0
 def test_detect_longer_sequence(self):
     expected_category = TraditionalPokerScore.TRIPS
     cards = [
         Card(7, 0),
         Card(7, 2),
         Card(8, 0),
         Card(7, 3),
         Card(8, 1),
         Card(8, 2),
         Card(14, 0)
     ]
     expected_cards = [
         Card(8, 2),
         Card(8, 1),
         Card(8, 0),
         Card(14, 0),
         Card(7, 3)
     ]
     self._test_detect(cards, expected_category, expected_cards)
Пример #32
0
def test_make_random_is_instance_of_Card_Rank_and_Suit():
    card = Card.make_random()
    assert isinstance(card, Card)
    assert isinstance(card.rank, Rank)
    assert isinstance(card.suit, Suit)
Пример #33
0
 def setUp(self):
     self.low = Card(2, 0)
     self.low2 = Card(2, 1)
     self.high = Card(14, 2)
     self.high2 = Card(14, 2)