def test_finish_round(self): player = Player("Jill", 100) # (case name, expected prints, player cards, dealer cards) cases = [ ( "player_loss", ["loss"], [Card(Card.HEART, Card.TEN), Card(Card.HEART, Card.NINE)], [Card(Card.SPADE, Card.TEN), Card(Card.DIAMOND, Card.TEN)] ), ( "player_tie", ["tie"], [Card(Card.HEART, Card.TEN), Card(Card.CLUB, Card.TEN)], [Card(Card.SPADE, Card.TEN), Card(Card.DIAMOND, Card.TEN)] ), ( "player_win", ["win"], [Card(Card.SPADE, Card.TEN), Card(Card.DIAMOND, Card.TEN)], [Card(Card.HEART, Card.TEN), Card(Card.HEART, Card.NINE)] ), ( "player_blackjack_dealer_blackjack", ["tie"], [Card(Card.HEART, Card.TEN), Card(Card.HEART, Card.ACE)], [Card(Card.SPADE, Card.JACK), Card(Card.SPADE, Card.ACE)] ), ( "player_blackjack_dealer_non_blackjack", ["Blackjack"], [Card(Card.HEART, Card.TEN), Card(Card.HEART, Card.ACE)], [Card(Card.HEART, Card.TEN), Card(Card.HEART, Card.NINE)] ), ] for case in cases: expected_prints = list(reversed(case[1])) def test_print(statement): self.assertTrue(expected_prints.pop() in statement) blackjack = Blackjack([player], test_print) blackjack._holders[0].set_hand(case[2]) blackjack._holders[1].set_hand(case[3]) blackjack._finish_round()