def test_player_final_hands(): # lots of splits, doesn't split more than 4 deck = Deck() player = Player( bankroll=np.inf, hard_policy=hard_policy, soft_policy=soft_policy, split_policy=split_policy, betting_policy=betting_policy, ) player.increment_num_hands() deck.set_cards( [ Cards.TEN, Cards.QUEEN, Cards.KING, Cards.NINE, Cards.EIGHT, Cards.ACE, Cards.TEN, Cards.FOUR, Cards.EIGHT, Cards.NINE, Cards.TWO, Cards.TWO, Cards.TWO, Cards.TWO, Cards.TWO, Cards.TWO, Cards.TWO, ] ) output = resolve_player_action( Hand([Cards.TWO, Cards.TWO]), Cards.SEVEN, player, deck ) assert output == [ (PlayerResultTypes.LIVE, 21), (PlayerResultTypes.DOUBLE, 14), (PlayerResultTypes.LIVE, 21), (PlayerResultTypes.DOUBLE, 21), ] player.next_round() player.increment_num_hands() deck.set_cards( [ Cards.FIVE, Cards.FIVE, Cards.TWO, Cards.KING, Cards.ACE, Cards.ACE, Cards.ACE, Cards.ACE, ] ) output = resolve_player_action( Hand([Cards.ACE, Cards.ACE]), Cards.SEVEN, player, deck ) assert output == [ (PlayerResultTypes.LIVE, 12), (PlayerResultTypes.LIVE, 12), (PlayerResultTypes.LIVE, 21), (PlayerResultTypes.LIVE, 13), ] player.next_round() player.increment_num_hands() output = resolve_player_action( Hand([Cards.ACE, Cards.JACK]), Cards.SEVEN, player, deck ) assert output == [(PlayerResultTypes.BLACKJACK, 21)] player.next_round() player.increment_num_hands() deck.set_cards( [ Cards.FIVE, Cards.FIVE, Cards.TWO, Cards.KING, Cards.ACE, Cards.ACE, Cards.ACE, Cards.ACE, ] ) output = resolve_player_action( Hand([Cards.ACE, Cards.SIX]), Cards.SIX, player, deck ) assert output == [(PlayerResultTypes.DOUBLE, 18)] player.next_round() player.increment_num_hands() output = resolve_player_action( Hand([Cards.JACK, Cards.SIX]), Cards.ACE, player, deck ) assert output == [(PlayerResultTypes.SURRENDER, 16)] player.next_round() player.increment_num_hands() output = resolve_player_action( Hand([Cards.JACK, Cards.SEVEN]), Cards.ACE, player, deck ) assert output == [(PlayerResultTypes.SURRENDER, 17)] player.next_round() player.increment_num_hands() deck.set_cards([Cards.TEN, Cards.THREE]) output = resolve_player_action( Hand([Cards.ACE, Cards.TWO]), Cards.TWO, player, deck ) assert output == [(PlayerResultTypes.LIVE, 16)] player.next_round() player.increment_num_hands() deck.set_cards([Cards.SIX, Cards.TEN, Cards.THREE]) output = resolve_player_action( Hand([Cards.ACE, Cards.TWO]), Cards.SEVEN, player, deck ) assert output == [(PlayerResultTypes.BUST, 22)] player.next_round() player.increment_num_hands() deck.set_cards([Cards.THREE]) output = resolve_player_action( Hand([Cards.ACE, Cards.SEVEN]), Cards.TWO, player, deck ) assert output == [(PlayerResultTypes.DOUBLE, 21)] player.next_round() player.increment_num_hands() deck.set_cards([Cards.FIVE]) output = resolve_player_action( Hand([Cards.ACE, Cards.SEVEN]), Cards.TWO, player, deck ) assert output == [(PlayerResultTypes.DOUBLE, 13)] player.next_round() player.increment_num_hands() deck.set_cards([Cards.FIVE]) output = resolve_player_action( Hand([Cards.ACE, Cards.EIGHT]), Cards.TWO, player, deck ) assert output == [(PlayerResultTypes.LIVE, 19)] player.next_round() player.increment_num_hands() deck.set_cards([Cards.FIVE]) output = resolve_player_action( Hand([Cards.NINE, Cards.NINE]), Cards.SEVEN, player, deck ) assert output == [(PlayerResultTypes.LIVE, 18)] player.next_round() player.increment_num_hands() deck.set_cards([Cards.FIVE]) output = resolve_player_action( Hand([Cards.EIGHT, Cards.EIGHT]), Cards.ACE, player, deck ) assert output == [(PlayerResultTypes.SURRENDER, 16)] player.next_round() player.increment_num_hands() deck.set_cards([Cards.FIVE]) output = resolve_player_action( Hand([Cards.TEN, Cards.TEN]), Cards.ACE, player, deck ) assert output == [(PlayerResultTypes.LIVE, 20)]