def test_hand_cards_are_sorted(self): cards = [ Card(rank = "5", suite = "hearts"), Card(rank = "Ace", suite = "clubs"), Card(rank = "King", suite = "clubs"), ] hand = Hand() hand.add_cards(cards) self.assertEqual( hand.cards, [ Card(rank = "5", suite = "hearts"), Card(rank = "King", suite = "clubs"), Card(rank = "Ace", suite = "clubs") ] ) def test_best_Rank(self): cards = [ Card(rank = "5", suite = "hearts"), Card(rank = "Ace", suite = "clubs"), Card(rank = "King", suite = "clubs"), ] hand = Hand() hand.add_cards(cards) self.assertEqual( hand.best_rank(), (9,"Highest card",[Card(rank = "Ace", suite = "clubs")]) )
def test_shows_all_its_cards_in_technical_representation(self): cards = [ Card(rank="Ace", suit="Diamonds"), Card(rank="7", suit="Clubs") ] hand = Hand() hand.add_cards(cards) self.assertEqual(repr(hand), "7 of Clubs, Ace of Diamonds")
def test_receives_and_stores_cards(self): ace_of_spades = Card(rank='Ace', suit='Diamonds') two_of_clubs = Card(rank='2', suit='Clubs') cards = [ace_of_spades, two_of_clubs] hand = Hand() hand.add_cards(cards) self.assertEqual(hand.cards, [two_of_clubs, ace_of_spades])
def test_hand_return_three_of_kind(self): hand = [ Card("Ace", "Clubs"), Card("Ace", "Diamonds"), Card("Ace", "Spades"), ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.hand, "Three of a Kind")
def test_receive_and_stores_cards(self): ace_of_spades = Card(rank="Ace", suit="Spades") six_of_clubs = Card(rank="6", suit="Clubs") cards = [ace_of_spades, six_of_clubs] hand = Hand() hand.add_cards(cards) self.assertEqual(hand.cards, [six_of_clubs, ace_of_spades])
def test_figures_out_best_hand_when_flush(self): cards = [ Card(rank=rank, suit="Hearts") for rank in ["2", "5", "8", "10", "Ace"] ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "Flush")
def test_figures_out_high_card_is_best_rank(self): cards = [ Card(rank="Ace", suit="Spades"), Card(rank="7", suit="Diamonds") ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "High Card")
def test_hand_return_four_of_kind(self): hand = [ Card("Ace", "Clubs"), Card("Ace", "Diamonds"), Card("Ace", "Hearts"), Card("Ace", "Spades") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.hand, "Four of a Kind")
def test_hand_return_two_pair(self): hand = [ Card("Ace", "Clubs"), Card("Ace", "Diamonds"), Card("7", "Clubs"), Card("7", "Diamonds") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.hand, "Two Pair")
def test_figures_out_pair_is_best_rank(self): cards = [ Card(rank="Ace", suit="Spades"), Card(rank="Ace", suit="Clubs") ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "Pair")
def test_hand_value_pair(self): hand = [ Card("2", "Clubs"), Card("2", "Diamonds"), Card("8", "Clubs"), Card("7", "Diamonds") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.score, (200 + sum([1, 1])))
def test_does_not_deem_two_consecutive_cards_as_straight(self): cards = [ Card(rank="6", suit="Hearts"), Card(rank="7", suit="Diamonds"), ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "High Card")
def test_hand_return_straight_flush(self): hand = [ Card("2", "Diamonds"), Card("3", "Diamonds"), Card("4", "Diamonds"), Card("5", "Diamonds"), Card("6", "Diamonds") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.hand, "Straight Flush")
def test_hand_return_straight(self): hand = [ Card("2", "Clubs"), Card("3", "Diamonds"), Card("4", "Hearts"), Card("5", "Diamonds"), Card("6", "Diamonds") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.hand, "Straight")
def test_hand_return_flush(self): hand = [ Card("2", "Diamonds"), Card("4", "Diamonds"), Card("6", "Diamonds"), Card("8", "Diamonds"), Card("10", "Diamonds") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.hand, "Flush")
def test_hand_return_full_house(self): hand = [ Card("Ace", "Clubs"), Card("Ace", "Diamonds"), Card("Ace", "Hearts"), Card("7", "Spades"), Card("7", "Spades") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.hand, "Full House")
def test_hand_high_card_hand_value(self): hand = [ Card("Ace", "Clubs"), Card("3", "Diamonds"), Card("4", "Hearts"), Card("5", "Diamonds"), Card("6", "Diamonds") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.score, (100 + sum([13])))
def test_hand_value_low_straight(self): hand = [ Card("2", "Clubs"), Card("3", "Diamonds"), Card("4", "Hearts"), Card("5", "Diamonds"), Card("6", "Diamonds") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.score, 500 + sum([1, 2, 3, 4, 5]))
def test_to_check_technical_representation_of_hand(self): hand = Hand() cards = [ Card(rank = "7", suite = "spades"), Card(rank = "Ace", suite = "clubs") ] hand.add_cards(cards) self.assertEqual( repr(hand), "7 of spades, Ace of clubs" )
def test_hand_return_royal_flush(self): hand = [ Card("Ace", "Diamonds"), Card("King", "Diamonds"), Card("Queen", "Diamonds"), Card("10", "Diamonds"), Card("Jack", "Diamonds") ] cards = Hand() cards.add_cards(hand) self.assertEqual(cards.hand, "Royal Flush")
def test_hand_value_royal_flush(self): hand = [ Card("Ace", "Diamonds"), Card("King", "Diamonds"), Card("Queen", "Diamonds"), Card("10", "Diamonds"), Card("Jack", "Diamonds") ] cards = Hand() cards.add_cards(hand) # as it stands ((hand score ** hand score) * sum of hand cards values) self.assertEqual(cards.score, 1000 + sum([13, 12, 11, 10, 9]))
def test_hands_equality(self): hand_a = [ Card("Ace", "Clubs"), Card("Ace", "Diamonds"), Card("2", "Clubs"), Card("3", "Diamonds") ] cards_a = Hand() cards_a.add_cards(hand_a) cards_b = Hand() cards_b.add_cards(hand_a) self.assertEqual(cards_a == cards_b, True)
def test_figures_out_straight_is_best_hand(self): cards = [ Card(rank="6", suit="Hearts"), Card(rank="7", suit="Diamonds"), Card(rank="8", suit="Spades"), Card(rank="9", suit="Clubs"), Card(rank="10", suit="Clubs") ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "Straight")
def test_figures_out_three_of_a_kind_is_best_rank(self): cards = [ Card(rank="King", suit="Clubs"), Card(rank="King", suit="Hearts"), Card(rank="King", suit="Diamonds"), Card(rank="Ace", suit="Spades"), Card(rank="5", suit="Clubs") ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "Three of a Kind")
def test_figures_out_two_pair_is_best_rank(self): cards = [ Card(rank="Ace", suit="Spades"), Card(rank="5", suit="Clubs"), Card(rank="Ace", suit="Clubs"), Card(rank="King", suit="Hearts"), Card(rank="King", suit="Diamonds") ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "Two Pair")
def test_hand_has_cards(self): cards = [ Card(rank = "7", suite = "spades"), Card(rank = "Ace", suite = "clubs") ] hand = Hand() hand.add_cards(cards) self.assertEqual( hand.cards, cards )
def test_figures_out_royal_flush_is_best_rank(self): cards = [ 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") ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "Royal Flush")
def test_figures_out_straight_flush_is_best_rank(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") ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "Straight Flush")
def test_figures_out_four_of_a_kind_is_best_rank(self): cards = [ Card(rank="3", suit="Clubs"), Card(rank="3", suit="Hearts"), Card(rank="3", suit="Spades"), Card(rank="3", suit="Diamonds"), Card(rank="9", suit="Spades") ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "Four of a Kind")
def test_figures_out_full_house_is_best_rank(self): cards = [ Card(rank="3", suit="Clubs"), Card(rank="3", suit="Hearts"), Card(rank="3", suit="Spades"), Card(rank="9", suit="Diamonds"), Card(rank="9", suit="Spades") ] hand = Hand() hand.add_cards(cards=cards) self.assertEqual(hand.best_rank(), "Full House")