This commit is contained in:
2026-02-11 00:02:35 -08:00
parent be37eb9d5b
commit ccadea0576
59 changed files with 4569 additions and 2510 deletions

View File

@@ -3,8 +3,9 @@ Tests for Tarot deck and card classes.
"""
import pytest
from src.tarot.deck import Deck, Card, MajorCard, MinorCard, PipCard, AceCard, CourtCard
from src.tarot.attributes import Meaning, Suit, CardImage
from src.tarot.attributes import CardImage, Meaning, Suit
from src.tarot.deck import AceCard, Card, CourtCard, Deck, MajorCard, MinorCard, PipCard
class TestCard:
@@ -30,7 +31,7 @@ class TestMajorCard:
name="The Magician",
meaning=Meaning("Upright", "Reversed"),
arcana="Major",
kabbalistic_number=1
kabbalistic_number=1,
)
assert card.number == 1
assert card.arcana == "Major"
@@ -42,7 +43,7 @@ class TestMajorCard:
name="Test",
meaning=Meaning("Up", "Rev"),
arcana="Major",
kabbalistic_number=-1
kabbalistic_number=-1,
)
def test_major_card_invalid_high(self):
@@ -52,16 +53,13 @@ class TestMajorCard:
name="Test",
meaning=Meaning("Up", "Rev"),
arcana="Major",
kabbalistic_number=22
kabbalistic_number=22,
)
def test_major_card_valid_range(self):
for i in range(22):
card = MajorCard(
number=i,
name=f"Card {i}",
meaning=Meaning("Up", "Rev"),
arcana="Major"
number=i, name=f"Card {i}", meaning=Meaning("Up", "Rev"), arcana="Major"
)
assert card.number == i
@@ -75,7 +73,7 @@ class TestMinorCard:
meaning=Meaning("Upright", "Reversed"),
arcana="Minor",
suit=suit,
pip=1
pip=1,
)
assert card.number == 1
assert card.suit.name == "Cups"
@@ -90,7 +88,7 @@ class TestMinorCard:
meaning=Meaning("Up", "Rev"),
arcana="Minor",
suit=suit,
pip=0
pip=0,
)
def test_minor_card_invalid_pip_high(self):
@@ -102,7 +100,7 @@ class TestMinorCard:
meaning=Meaning("Up", "Rev"),
arcana="Minor",
suit=suit,
pip=15
pip=15,
)
def test_minor_card_valid_pips(self):
@@ -114,7 +112,7 @@ class TestMinorCard:
meaning=Meaning("Up", "Rev"),
arcana="Minor",
suit=suit,
pip=i
pip=i,
)
assert card.pip == i
@@ -137,10 +135,10 @@ class TestDeck:
def test_deck_shuffle(self):
deck1 = Deck()
cards_before = [c.name for c in deck1.cards]
deck1.shuffle()
cards_after = [c.name for c in deck1.cards]
# After shuffle, order should change (with high probability)
# We don't assert they're different since shuffle could randomly give same order
assert len(cards_after) == 78
@@ -148,18 +146,18 @@ class TestDeck:
def test_deck_draw_single(self):
deck = Deck()
initial_count = len(deck.cards)
drawn = deck.draw(1)
assert len(drawn) == 1
assert len(deck.cards) == initial_count - 1
def test_deck_draw_multiple(self):
deck = Deck()
initial_count = len(deck.cards)
drawn = deck.draw(5)
assert len(drawn) == 5
assert len(deck.cards) == initial_count - 5
@@ -177,28 +175,28 @@ class TestDeck:
deck = Deck()
deck.draw(5)
assert len(deck.cards) < 78
deck.reset()
assert len(deck.cards) == 78
def test_deck_remaining(self):
deck = Deck()
assert deck.remaining() == 78
deck.draw(1)
assert deck.remaining() == 77
def test_deck_len(self):
deck = Deck()
assert len(deck) == 78
deck.draw(1)
assert len(deck) == 77
def test_deck_repr(self):
deck = Deck()
assert "78 cards" in repr(deck)
deck.draw(1)
assert "77 cards" in repr(deck)