class TestBlackWinnerLogic(unittest.TestCase): def setUp(self): self.testPlayer = Player() self.testDealer = Dealer() self.winner = None def tearDown(self): del self.testPlayer del self.testDealer def test_Winnner_push(self): # both player and dealer have Ace and Face card self.testPlayer.recieve_card( Card(CardFaceType.ACE, SuitType.CLUB, CardFaceState.UP)) self.testPlayer.recieve_card( Card(CardFaceType.JACK, SuitType.HEART, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.KING, SuitType.DIAMOND, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.ACE, SuitType.SPADE, CardFaceState.UP)) self.winner = blackjack.determine_blackjack_winner( self.testPlayer, self.testDealer) self.assertTrue((self.winner is None), "there should be no winner here") def test_Winner_playerBust(self): # dealer has lower hand, player busts self.testPlayer.recieve_card( Card(CardFaceType.KING, SuitType.CLUB, CardFaceState.UP)) self.testPlayer.recieve_card( Card(CardFaceType.JACK, SuitType.HEART, CardFaceState.UP)) self.testPlayer.recieve_card( Card(CardFaceType.FIVE, SuitType.DIAMOND, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.KING, SuitType.DIAMOND, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.ACE, SuitType.SPADE, CardFaceState.UP)) self.winner = blackjack.determine_blackjack_winner( self.testPlayer, self.testDealer) self.assertIsInstance(self.winner, Dealer, "Dealer should have won") def test_winner_dealerBust(self): # player has lower hand, dealer busts self.testPlayer.recieve_card( Card(CardFaceType.SIX, SuitType.CLUB, CardFaceState.UP)) self.testPlayer.recieve_card( Card(CardFaceType.JACK, SuitType.HEART, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.KING, SuitType.DIAMOND, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.TEN, SuitType.DIAMOND, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.ACE, SuitType.SPADE, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.FOUR, SuitType.DIAMOND, CardFaceState.UP)) self.winner = blackjack.determine_blackjack_winner( self.testPlayer, self.testDealer) self.assertIsInstance(self.winner, Player, "Player should have won") def test_winner_playerBlackjack(self): # player has a blackjack self.testPlayer.recieve_card( Card(CardFaceType.ACE, SuitType.CLUB, CardFaceState.UP)) self.testPlayer.recieve_card( Card(CardFaceType.JACK, SuitType.HEART, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.KING, SuitType.DIAMOND, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.NINE, SuitType.SPADE, CardFaceState.UP)) self.winner = blackjack.determine_blackjack_winner( self.testPlayer, self.testDealer) self.assertIsInstance(self.winner, Player, "Player Should have won") def test_winner_dealerBlackJack(self): # dealer has blackjack self.testPlayer.recieve_card( Card(CardFaceType.SEVEN, SuitType.CLUB, CardFaceState.UP)) self.testPlayer.recieve_card( Card(CardFaceType.JACK, SuitType.HEART, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.KING, SuitType.DIAMOND, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.ACE, SuitType.SPADE, CardFaceState.UP)) self.winner = blackjack.determine_blackjack_winner( self.testPlayer, self.testDealer) self.assertIsInstance(self.winner, Dealer, "Dealer should have won") def test_winner_player(self): #player has better hand < blackJack self.testPlayer.recieve_card( Card(CardFaceType.NINE, SuitType.CLUB, CardFaceState.UP)) self.testPlayer.recieve_card( Card(CardFaceType.EIGHT, SuitType.HEART, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.KING, SuitType.DIAMOND, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.THREE, SuitType.SPADE, CardFaceState.UP)) self.winner = blackjack.determine_blackjack_winner( self.testPlayer, self.testDealer) self.assertIsInstance(self.winner, Player, "Player should have won") def test_winner_dealer(self): #dealer has better hand < blackJack self.testPlayer.recieve_card( Card(CardFaceType.TWO, SuitType.CLUB, CardFaceState.UP)) self.testPlayer.recieve_card( Card(CardFaceType.NINE, SuitType.HEART, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.KING, SuitType.DIAMOND, CardFaceState.UP)) self.testDealer.recieve_card( Card(CardFaceType.SIX, SuitType.SPADE, CardFaceState.UP)) self.winner = blackjack.determine_blackjack_winner( self.testPlayer, self.testDealer) self.assertIsInstance(self.winner, Dealer, "Dealer should have won")
class TestDealer(unittest.TestCase): def setUp(self): self.testDealer = Dealer() def tearDown(self): del self.testDealer def test_hittable_case1(self): # draw some cards , face up, value > 13 < 17 # assert on return of hittable status self.testDealer.recieve_card(Card(CardFaceType.KING, SuitType.CLUB)) self.testDealer.recieve_card(Card(CardFaceType.FIVE, SuitType.DIAMOND)) self.assertTrue(self.testDealer.should_hit(True), "dealer should have hit") def test_hittable_case2(self): # draw some cards , face up, one ace, value > 13 < 17 # assert on return of hittable status self.testDealer.recieve_card(Card(CardFaceType.ACE, SuitType.CLUB)) self.testDealer.recieve_card(Card(CardFaceType.THREE, SuitType.HEART)) self.assertTrue(self.testDealer.should_hit(True), "dealer should have hit") def test_hittable_case3(self): # draw some cards, face up with a value greater than 17 self.testDealer.recieve_card(Card(CardFaceType.KING, SuitType.CLUB)) self.testDealer.recieve_card(Card(CardFaceType.FIVE, SuitType.CLUB)) self.testDealer.recieve_card(Card(CardFaceType.FIVE, SuitType.HEART)) self.assertFalse(self.testDealer.should_hit(True), "dealer sould have stayed") def test_hittable_case4(self): self.testDealer.recieve_card(Card(CardFaceType.ACE, SuitType.CLUB)) self.testDealer.recieve_card(Card(CardFaceType.ACE, SuitType.SPADE)) self.testDealer.recieve_card(Card(CardFaceType.SEVEN, SuitType.HEART)) # draw cards, at least 2 aces self.assertFalse(self.testDealer.should_hit(True), "dealer should have stayed") def test_visable_value_case1(self): self.testDealer.recieve_card(Card(CardFaceType.EIGHT, SuitType.SPADE)) self.testDealer.recieve_card( Card(CardFaceType.JACK, SuitType.HEART, CardFaceState.DOWN)) visible_value = self.testDealer.get_visible_hand_value() self.assertEqual(visible_value, 8, "error on visible hand value") self.testDealer.show_card_faces() visible_value = self.testDealer.get_visible_hand_value() self.assertEqual(visible_value, 18, "error in visible hand value after turning cards") def test_visable_value_case2(self): self.testDealer.recieve_card(Card(CardFaceType.EIGHT, SuitType.SPADE)) self.testDealer.recieve_card( Card(CardFaceType.ACE, SuitType.HEART, CardFaceState.DOWN)) visible_value = self.testDealer.get_visible_hand_value() self.assertEqual(visible_value, 8, "error on visible hand value") self.testDealer.show_card_faces() visible_value = self.testDealer.get_visible_hand_value() self.assertEqual(visible_value, 19, "error in visible hand value after turning cards")