Exemplo n.º 1
0
 def test_dealer_stands_on_soft_17(self):
     """
     Test that a dealer always stands when they have a soft 17 (a 17 that could also be a 7 e.g. 6 + A or 3 + 3 + A)
     """
     dealer = self.dealer
     test_shoe = self.test_shoe
     test_shoe.cards.insert(0, card(1, "S"))
     test_shoe.cards.insert(3, card(3, "S"))
     player_list = self.test_player_list
     initial_deal(test_shoe, player_list, dealer)
     self.assertTrue(dealer.soft_score_check())
     self.assertFalse(dealer_play(test_shoe, dealer))
     self.assertEqual(dealer.get_score(), 17)
Exemplo n.º 2
0
 def test_user_pushes_with_blackjack(self):
     """
     Test that the user pushes with blackjack when the dealer also has a blackjack
     """
     test_shoe = self.test_shoe
     player_list = self.test_player_list
     dealer = self.dealer
     player = player_list[0]
     test_shoe.cards.insert(0, card(10, "H"))
     test_shoe.cards.insert(1, card(10, "C"))
     test_shoe.cards.insert(2, card(1, "H"))
     initial_deal(test_shoe, player_list, dealer)
     self.assertEqual(player.get_score(), 21)
     dealer_play(test_shoe, dealer)
     self.assertTrue(check_blackjack(dealer.get_score(), dealer.get_hand()))
     self.assertTrue(check_blackjack(player.get_score(), player.get_hand()))
     results = check_results(player_list, dealer)
     pushers = results[2]
     self.assertIn(player, pushers)
Exemplo n.º 3
0
def dealer_play(play_shoe, dealer):
    """
    Logic for if the dealer should hit or stand based on their score
    """
    dealer.reveal_hidden_card()
    print("Now for the dealer")
    print("Dealer reveals: " +
          dealer.get_hidden_card_only().get_card_details())
    print("Dealer's hand:" + dealer.get_viewable_hand())
    decide_soft_score_print(dealer)
    if dealer.get_score() < 17:
        hit = True
        while hit:
            print("Dealer hits")
            dealer.hit_hand(play_shoe)
            print("Dealer's hand " + dealer.get_viewable_hand())
            decide_soft_score_print(dealer)
            hit = dealer.check_hit(play_shoe)
    check_stand(dealer)
Exemplo n.º 4
0
 def test_user_pushes(self):
     """
     Test that when a user's score and the dealer's score are the same they push
     """
     test_shoe = self.test_shoe
     player_list = self.test_player_list
     dealer = self.dealer
     player = player_list[0]
     test_shoe.cards.insert(0, card(8, "H"))
     test_shoe.cards.insert(1, card(10, "C"))
     test_shoe.cards.insert(2, card(9, "C"))
     test_shoe.cards.insert(3, card(6, "D"))
     initial_deal(test_shoe, player_list, dealer)
     dealer_play(test_shoe, dealer)
     self.assertEqual(player.get_score(), dealer.get_score())
     self.assertFalse(check_blackjack(player.get_score(),
                                      player.get_hand()))
     results = check_results(player_list, dealer)
     pushers = results[2]
     self.assertIn(player, pushers)
Exemplo n.º 5
0
 def test_user_loses(self):
     """
     Test that a user loses when the dealer's score exceeds theirs and the dealer doesn't bust
     """
     test_shoe = self.test_shoe
     player_list = self.test_player_list
     dealer = self.dealer
     player = player_list[0]
     test_shoe.cards.insert(0, card(8, "H"))
     test_shoe.cards.insert(1, card(10, "C"))
     test_shoe.cards.insert(2, card(8, "C"))
     test_shoe.cards.insert(3, card(6, "D"))
     initial_deal(test_shoe, player_list, dealer)
     dealer_play(test_shoe, dealer)
     self.assertLess(player.get_score(), dealer.get_score())
     self.assertFalse(check_blackjack(player.get_score(),
                                      player.get_hand()))
     results = check_results(player_list, dealer)
     losers = results[1]
     self.assertIn(player, losers)
Exemplo n.º 6
0
def check_results(player_list, dealer):
    """
    Function that checks if each user has more or less than the dealer and decides if they have
    won or lost then adds them to a list accordingly.
    """
    dealer_score = dealer.get_score()
    dealer_hand = dealer.get_hand()
    blackjack_winners = []
    winners = []
    losers = []
    pushers = []
    dealer_plays = True
    if dealer_score > 21:
        dealer_plays = False
    for player in player_list:
        player_score = player.get_score()
        player_hand = player.get_hand()
        if dealer_plays and check_blackjack(dealer_score, dealer_hand):
            if check_blackjack(player_score, player_hand):
                pushers.append(player)
            else:
                losers.append(player)
        elif dealer_plays:
            if player_score > dealer_score and not (player.check_bust()):
                if check_blackjack(player_score, player_hand):
                    blackjack_winners.append(player)
                else:
                    winners.append(player)
            elif player_score == dealer_score:
                pushers.append(player)
            else:
                losers.append(player)
        else:
            if check_blackjack(player_score, player.get_hand()):
                blackjack_winners.append(player)
                break
            elif player_score <= 21:
                winners.append(player)
            else:
                losers.append(player)
    return winners, losers, pushers, blackjack_winners
Exemplo n.º 7
0
    def test_score_calculation(self):
        """
        Test that score is calculated correctly both for the initial deal and
        in cases of soft scores
        """
        test_shoe = self.test_shoe
        dealer = self.dealer
        player_list = self.test_player_list
        player = player_list[0]

        initial_deal(test_shoe, player_list, dealer)
        self.assertEqual(player.get_score(), 14)
        self.assertEqual(
            dealer.get_hidden_card_only().get_score() + dealer.get_score(), 6)
        player.hit_hand(test_shoe)
        self.assertEqual(player.get_score(), 19)
        self.assertTrue(player.soft_score_check())
        player.hit_hand(test_shoe)
        self.assertEqual(player.get_score(), 15)
        self.assertFalse(player.soft_score_check())
        dealer.reveal_hidden_card()
        self.assertFalse(dealer.soft_score_check())