Exemple #1
0
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)]