def test_13_simple_strategy_2(self): # player == 17 player_cards = [BlackJackCard('7', 'C'), BlackJackCard('A', 'C')] dealer_cards = [BlackJackCard('3', 'S'), BlackJackCard('J', 'C')] deck = CardDecks(2, BlackJackCard) hand = BlackJackHand(deck) hand.set_initial_cards(player_cards, dealer_cards) self.assertEqual(hand.simple_strategy(), BlackJackHand.stand, simple_error_message % ( hand.simple_strategy(), get_printable_cards(player_cards), get_printable_cards(dealer_cards), BlackJackHand.stand))
def test_07_mimic_dealer_strategy_1(self): # less than 17, hit player_cards = [BlackJackCard('5', 'C'), BlackJackCard('K', 'C')] dealer_cards = [BlackJackCard('6', 'C'), BlackJackCard('3', 'C')] deck = CardDecks(2, BlackJackCard) hand = BlackJackHand(deck) hand.set_initial_cards(player_cards, dealer_cards) self.assertEqual(hand.mimic_dealer_strategy(), BlackJackHand.hit, dealer_error_message % ( hand.mimic_dealer_strategy(), get_printable_cards(player_cards), get_printable_cards(dealer_cards), BlackJackHand.hit))
def test_15_doubledown_strategy_2(self): # player > 11 (has 17) player_cards = [BlackJackCard('9', 'C'), BlackJackCard('8', 'D')] dealer_cards = [BlackJackCard('3', 'S'), BlackJackCard('J', 'C')] deck = CardDecks(2, BlackJackCard) hand = BlackJackHand(deck, initial_bet=2.0) hand.set_initial_cards(player_cards, dealer_cards) self.assertEqual(hand.doubledown_strategy(), BlackJackHand.stand, doubledown_error_message % ( hand.doubledown_strategy(), get_printable_cards(player_cards), get_printable_cards(dealer_cards), BlackJackHand.stand))
def test_11_peek_strategy_3(self): # player > dealer, stand player_cards = [BlackJackCard('9', 'C'), BlackJackCard('A', 'C')] dealer_cards = [BlackJackCard('3', 'S'), BlackJackCard('J', 'C')] deck = CardDecks(2, BlackJackCard) hand = BlackJackHand(deck) hand.set_initial_cards(player_cards, dealer_cards) self.assertEqual(hand.peek_strategy(), BlackJackHand.stand, peek_error_message % ( hand.peek_strategy(), get_printable_cards(player_cards), get_printable_cards(dealer_cards), BlackJackHand.stand))
def test_09_peek_strategy_1(self): # player < dealer, hit player_cards = [BlackJackCard('9', 'C'), BlackJackCard('K', 'C')] dealer_cards = [BlackJackCard('K', 'S'), BlackJackCard('J', 'C')] deck = CardDecks(2, BlackJackCard) hand = BlackJackHand(deck) hand.set_initial_cards(player_cards, dealer_cards) self.assertEqual(hand.peek_strategy(), BlackJackHand.hit, peek_error_message % ( hand.peek_strategy(), get_printable_cards(player_cards), get_printable_cards(dealer_cards), BlackJackHand.hit))
def test_08_mimic_dealer_strategy_2(self): # 17, stand player_cards = [BlackJackCard('7', 'C'), BlackJackCard('K', 'C')] dealer_cards = [BlackJackCard('6', 'C'), BlackJackCard('3', 'C')] deck = CardDecks(2, BlackJackCard) hand = BlackJackHand(deck) hand.set_initial_cards(player_cards, dealer_cards) self.assertEqual(hand.mimic_dealer_strategy(), BlackJackHand.stand, dealer_error_message % ( hand.mimic_dealer_strategy(), get_printable_cards(player_cards), get_printable_cards(dealer_cards), BlackJackHand.stand))
def test_16_doubledown_strategy_3(self): # player == 11 player_cards = [BlackJackCard('2', 'C'), BlackJackCard('9', 'H')] dealer_cards = [BlackJackCard('3', 'S'), BlackJackCard('J', 'C')] deck = CardDecks(2, BlackJackCard) hand = BlackJackHand(deck) hand.set_initial_cards(player_cards, dealer_cards) self.assertEqual(hand.doubledown_strategy(), BlackJackHand.doubledown, doubledown_error_message % ( hand.doubledown_strategy(), get_printable_cards(player_cards), get_printable_cards(dealer_cards), BlackJackHand.doubledown)) # make sure the bet doubles when doubling down cards_to_deal = [BlackJackCard('9', 'D'), BlackJackCard('9', 'S'), *dealer_cards, *player_cards] mockdeck = MockCardDecks(4, BlackJackCard, cards_to_deal) hand = BlackJackHand(mockdeck, initial_bet=2.0) hand.set_initial_cards(player_cards, dealer_cards) initial_bet = hand.get_bet() self.assertEqual(initial_bet, 2.0, "Inaccurate initial bet, found %s, expected %s" % (initial_bet, 2.0)) def strategy(hand): if hand.deck.num_cards_left() == 2: return BlackJackHand.doubledown # trigger play_player_turn to double the bet else: return BlackJackHand.stand hand.play_player_turn(strategy) new_bet = hand.get_bet() self.assertEqual(new_bet, 4.0, "Your doubledown strategy did not double the current bet to %s, found %s" % (4.0, new_bet))
def test_19_play_dealer_turn_1(self): # dealer busts player_hand = [BlackJackCard('2', 'S'), BlackJackCard('2', 'S')] dealer_hand = [BlackJackCard('2', 'S'), BlackJackCard('2', 'S')] cards_to_deal = [BlackJackCard('K', 'S'), BlackJackCard( 'K', 'S'), *dealer_hand, *player_hand] deck = MockCardDecks(4, BlackJackCard, cards_to_deal) hand = BlackJackHand(deck) self.assertRaises(Busted, hand.play_dealer_turn)
def test_20_play_dealer_turn_2(self): # dealer does not bust player_hand = [BlackJackCard('2', 'S'), BlackJackCard('2', 'S')] dealer_hand = [BlackJackCard('2', 'S'), BlackJackCard('2', 'S')] cards_to_deal = [BlackJackCard('3', 'S'), BlackJackCard( 'K', 'S'), *dealer_hand, *player_hand] deck = MockCardDecks(4, BlackJackCard, cards_to_deal) hand = BlackJackHand(deck) try: hand.play_dealer_turn() except: self.fail('Your play_dealer_turn busted when it should not have.')
def test_17_play_player_turn_1(self): # player busts player_hand = [BlackJackCard('2', 'S'), BlackJackCard('2', 'S')] dealer_hand = [BlackJackCard('2', 'S'), BlackJackCard('2', 'S')] cards_to_deal = [BlackJackCard('K', 'S'), BlackJackCard( 'K', 'S'), *dealer_hand, *player_hand] def strategy(hand): if hand.deck.num_cards_left() > 0: return BlackJackHand.hit return BlackJackHand.stand deck = MockCardDecks(4, BlackJackCard, cards_to_deal) hand = BlackJackHand(deck) self.assertRaises(Busted, hand.play_player_turn, strategy)
def test_18_play_player_turn_2(self): # player does not bust player_hand = [BlackJackCard('2', 'S'), BlackJackCard('2', 'S')] dealer_hand = [BlackJackCard('2', 'S'), BlackJackCard('2', 'S')] cards_to_deal = [BlackJackCard('3', 'S'), BlackJackCard( '3', 'S'), *dealer_hand, *player_hand] def strategy(hand): if hand.deck.num_cards_left() > 0: return BlackJackHand.hit return BlackJackHand.stand deck = MockCardDecks(4, BlackJackCard, cards_to_deal) hand = BlackJackHand(deck) try: hand.play_player_turn(strategy) except: self.fail('Your play_player_turn busted when it should not have.')
def test_04_best_value_one_ace_2(self): # less than 21, A with value 1 cards = [BlackJackCard('2', 'C'), BlackJackCard( 'A', 'C'), BlackJackCard('K', 'S')] self.assertEqual(BlackJackHand.best_value(cards), 13, best_value_error_message % ( BlackJackHand.best_value(cards), get_printable_cards(cards), 13))
def test_03_best_value_one_ace_1(self): # less than 21, A with value 11 cards = [BlackJackCard('2', 'C'), BlackJackCard( 'A', 'C'), BlackJackCard('7', 'H')] self.assertEqual(BlackJackHand.best_value(cards), 20, best_value_error_message % ( BlackJackHand.best_value(cards), get_printable_cards(cards), 20))
def test_02_best_value_no_aces_2(self): # less than 21 cards = [BlackJackCard('2', 'C'), BlackJackCard( '3', 'C'), BlackJackCard('K', 'H')] self.assertEqual(BlackJackHand.best_value(cards), 15, best_value_error_message % ( BlackJackHand.best_value(cards), get_printable_cards(cards), 15))
def test_05_best_value_multiple_aces_1(self): # one A with value 1, one A with value 11 cards = [BlackJackCard('2', 'C'), BlackJackCard( 'A', 'C'), BlackJackCard('A', 'H')] self.assertEqual(BlackJackHand.best_value(cards), 14, best_value_error_message % ( BlackJackHand.best_value(cards), get_printable_cards(cards), 14))
def test_06_best_value_multiple_aces_2(self): # two A with value 1 cards = [BlackJackCard('2', 'C'), BlackJackCard('A', 'C'), BlackJackCard( 'A', 'S'), BlackJackCard('8', 'H'), BlackJackCard('K', 'H')] self.assertEqual(BlackJackHand.best_value(cards), 22, best_value_error_message % ( BlackJackHand.best_value(cards), get_printable_cards(cards), 22))
def test_06_best_value_multiple_aces_4(self): cards = [BlackJackCard('A', 'C'), BlackJackCard('A', 'C'), BlackJackCard( '3', 'S'), BlackJackCard('A', 'H'), BlackJackCard('5', 'H')] self.assertEqual(BlackJackHand.best_value(cards), 21, best_value_error_message % ( BlackJackHand.best_value(cards), get_printable_cards(cards), 21))