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()