def test_card_validation():
    with pytest.raises(Exception, match="Cards must be a list of type Card"):
        Player(cards=[1])
    with pytest.raises(Exception, match="Cards must be a list of type Card"):
        cards = index.serialize_cards(make_cards([1, 2]))
        Player(cards=cards)
    with pytest.raises(Exception, match="Cards must be a list of type Card"):
        Player(cards=Card(1))
def test_cards():
    # No cards should make empty list
    assert Player().cards == []
    assert Dealer().cards == []

    # Provided cards should be set on player
    actual_cards = make_cards([4, 5])
    player = Player(cards=actual_cards)
    dealer = Dealer(cards=actual_cards)
    assert player.cards == actual_cards
    assert dealer.cards == actual_cards
Exemple #3
0
def test_double_down():
    player_cards = index.serialize_cards(make_cards([4, 5]))
    dealer_cards = index.serialize_cards(make_cards([6, 7]))

    response = index.play(
        json={
            "type": "DOUBLE",
            "bet": 5,
            "balance": 95,
            "player_cards": player_cards,
            "dealer_cards": dealer_cards,
        },
        deck_nums=[9, 10],
    )

    assert response["deck"] == []
    assert response["status"] == "WIN"
    assert response["player_cards"] == index.serialize_cards(make_cards([4, 5, 10]))
    assert response["dealer_cards"] == index.serialize_cards(make_cards([6, 7, 9]))
    assert response["player_total"] == 19
    assert response["dealer_total"] == 22
    assert response["balance"] == 110
Exemple #4
0
def test_stay():
    player_cards = index.serialize_cards(make_cards([4, 5]))
    dealer_cards = index.serialize_cards(make_cards([6, 7]))

    response = index.play(
        json={
            "type": "STAY",
            "bet": 5,
            "balance": 95,
            "player_cards": player_cards,
            "dealer_cards": dealer_cards,
        },
        deck_nums=[9, 10],
    )

    assert response["deck"] == [9]
    assert response["status"] == "WIN"
    assert response["player_cards"] == player_cards
    assert response["dealer_cards"] == index.serialize_cards(make_cards([6, 7, 10]))
    assert response["player_total"] == 9
    assert response["dealer_total"] == 23
    # should win double original bet
    assert response["balance"] == 105
Exemple #5
0
def test_hit():
    player_cards = index.serialize_cards(make_cards([4, 5]))
    dealer_cards = index.serialize_cards(make_cards([6, 7]))

    response = index.play(
        json={
            "type": "HIT",
            "bet": 5,
            "balance": 95,
            "player_cards": player_cards,
            "dealer_cards": dealer_cards,
        },
        deck_nums=[9, 10],
    )

    # original cards should be in hand, plus one removed from deck
    assert response["deck"] == [9]
    assert response["status"] == "PLAYING"
    assert response["player_cards"] == index.serialize_cards(make_cards([4, 5, 10]))
    assert response["dealer_cards"] == dealer_cards
    assert response["player_total"] == 19
    assert response["dealer_total"] == 13
    assert response["balance"] == 95
def test_hit(client):
    player_cards = index.serialize_cards(make_cards([4, 5]))
    dealer_cards = index.serialize_cards(make_cards([6, 7]))

    result = client.post(
        "/game",
        json={
            "type": "HIT",
            "bet": 5,
            "balance": 95,
            "player_cards": player_cards,
            "dealer_cards": dealer_cards,
        },
    )
    data = result.get_json()["data"]

    assert "status" in data
    assert "balance" in data
    assert "player_cards" in data
    assert "player_total" in data
    assert "dealer_cards" in data
    assert "dealer_total" in data
    assert "deck" not in data