Coverage for tests / test_core / test_deck.py: 100.0%
50 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-05 20:45 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-05 20:45 +0000
1import pytest
3from beaverbunch.core.card import Card, Suit
6def _card(value: int, suit: Suit = Suit.HEARTS) -> Card:
7 if value == 0:
8 return Card(suit=None, value=0)
9 return Card(suit=suit, value=value)
12class TestCard:
13 def test_card_points(self):
14 assert _card(1).points == 1 # Ace
15 assert _card(10).points == 0 # Ten
16 assert _card(11).points == 10 # Jack
17 assert _card(12).points == 10 # Queen
18 assert _card(13).points == 10 # King
19 assert _card(5).points == 5 # Standard card
20 assert _card(0).points == 50 # Joker
22 def test_post_init_validations(self):
23 with pytest.raises(ValueError):
24 Card(suit=Suit.CLUBS, value=0) # Joker with suit
25 with pytest.raises(ValueError):
26 Card(suit=None, value=5) # Non-joker without suit
27 with pytest.raises(TypeError):
28 Card(suit="Diamonds", value=5) # Invalid value type
29 with pytest.raises(TypeError):
30 Card(suit=Suit.SPADES, value="Ace") # Invalid value type
31 with pytest.raises(ValueError):
32 Card(suit=Suit.HEARTS, value=14) # Invalid card value
35class TestDeck:
36 def test_create_new_deck(self):
37 from beaverbunch.core.deck import Deck
39 deck = Deck.create_new()
40 assert len(deck) == 54 # 52 standard cards + 2 jokers
42 def test_draw_card(self):
43 from beaverbunch.core.deck import Deck
45 deck = Deck.create_custom(cards=[_card(1), _card(10), _card(0)])
46 card1 = deck.draw()
47 assert card1.value == 0
48 assert len(deck) == 2
50 def test_draw_multiple_cards(self):
51 from beaverbunch.core.deck import Deck
53 deck = Deck.create_custom(cards=[_card(1), _card(10), _card(0)])
54 cards = deck.draw(n=2)
55 assert len(cards) == 2
56 assert cards[0].value == 0
57 assert cards[1].value == 10
58 assert len(deck) == 1
60 def test_draw_from_empty_deck(self):
61 from beaverbunch.core.deck import Deck
63 deck = Deck.create_custom(cards=[])
64 with pytest.raises(IndexError):
65 deck.draw()