def test_initial_deal(self): """ Test that dealing works correctly """ player_list = self.test_player_list dealer = self.dealer shoe = self.test_shoe initial_deal(shoe, player_list, dealer) self.assertEqual(len(player_list[0].get_hand()), 2) self.assertTrue(dealer.get_hidden_card_only()) self.assertEqual(len(dealer.get_hand()), 1)
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)
def test_user_stands_with_blackjack(self): """ Test that a user automatically stands when they have 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(2, card(1, "H")) initial_deal(test_shoe, player_list, dealer) self.assertEqual(player.get_score(), 21) self.assertTrue(check_blackjack(player.get_score(), player.get_hand()))
def test_user_busts(self): """ Test that a user's turn ends when they bust and that they also lose """ 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(2, card(3, "H")) test_shoe.cards.insert(4, card(10, "D")) initial_deal(test_shoe, player_list, dealer) with mock.patch('builtins.input', return_value="hit"): user_play(test_shoe, player, dealer) self.assertTrue(player.check_bust)
def test_user_wins_with_blackjack(self): """ Test that the user wins when they get blackjack and they get the custom message """ 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(2, card(1, "H")) initial_deal(test_shoe, player_list, dealer) self.assertEqual(player.get_score(), 21) self.assertTrue(check_blackjack(player.get_score(), player.get_hand())) dealer_play(test_shoe, dealer) results = check_results(player_list, dealer) blackjack_winners = results[3] self.assertIn(player, blackjack_winners)
def test_user_stands_on_21(self): """ Test that a user automatically stands when they hit 21 """ 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(2, card(3, "H")) test_shoe.cards.insert(4, card(8, "D")) initial_deal(test_shoe, player_list, dealer) with mock.patch('builtins.input', return_value="hit"): user_play(test_shoe, player, dealer) self.assertEqual(player.get_score(), 21) self.assertFalse(check_blackjack(player.get_score(), player.get_hand()))
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)
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)
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)
def test_user_wins_when_dealer_busts(self): """ Test that a user wins when the dealer exceeds 21 as long as they have not also bust themselves """ 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")) test_shoe.cards.insert(4, card(10, "D")) initial_deal(test_shoe, player_list, dealer) dealer_play(test_shoe, dealer) self.assertTrue(dealer.check_bust()) self.assertFalse(check_blackjack(player.get_score(), player.get_hand())) results = check_results(player_list, dealer) winners = results[0] self.assertIn(player, winners)
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())