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