2025-10-28 21:04:39 +01:00
|
|
|
import pytest
|
|
|
|
|
from pyjack.deck import Deck
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
|
def default_deck() -> Deck:
|
|
|
|
|
deck = Deck()
|
|
|
|
|
return deck
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_deck_init(default_deck):
|
|
|
|
|
"""Tests if the right amount of cards is created"""
|
|
|
|
|
assert len(default_deck.cards) == 52
|
|
|
|
|
|
|
|
|
|
|
2025-10-29 17:37:55 +01:00
|
|
|
def test_deck_shuffle_order_changes(default_deck):
|
|
|
|
|
"""Tests if the order of the cards have been changed."""
|
|
|
|
|
# saves a list of cards before shufflening
|
|
|
|
|
ordered_cards = list(default_deck.cards)
|
|
|
|
|
#shuffle cards
|
|
|
|
|
default_deck.shuffle()
|
2025-10-28 21:04:39 +01:00
|
|
|
|
2025-10-29 17:37:55 +01:00
|
|
|
assert default_deck.cards != ordered_cards
|
2025-10-28 21:04:39 +01:00
|
|
|
|
2025-10-29 17:37:55 +01:00
|
|
|
def test_deck_shuffle_content_is_preserved(default_deck):
|
|
|
|
|
# 1. Capture the unique cards of the original list (as a set)
|
|
|
|
|
original_card_set = set(str(card) for card in default_deck.cards)
|
|
|
|
|
# 2. Shuffle the deck
|
|
|
|
|
default_deck.shuffle()
|
|
|
|
|
# 3. Check if the number of cards is still 52
|
|
|
|
|
assert len(default_deck.cards) == 52
|
|
|
|
|
# 4. Check if the card contents are still identical (all 52 unique cards must be present)
|
|
|
|
|
shuffled_card_set = set(str(card) for card in default_deck.cards)
|
|
|
|
|
assert shuffled_card_set == original_card_set
|
|
|
|
|
|
2025-10-28 21:04:39 +01:00
|
|
|
def test_card_dealing(default_deck):
|
|
|
|
|
"""Tests if the a card is correctly removed from the deck."""
|
|
|
|
|
default_deck.shuffle()
|
|
|
|
|
removed_card = default_deck.deal_card()
|
|
|
|
|
assert len(default_deck.cards) == 51
|
|
|
|
|
assert removed_card is not None
|