Spaces:
Running
Running
File size: 3,238 Bytes
bb3fbf9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
import numpy as np
import pytest
from engine.game.game_state import GameState, LiveCard, MemberCard
class TestCardInjection:
@pytest.fixture(autouse=True)
def setup(self, game_state):
# Create a fresh game state for each test
self.state = game_state
# Ensure we have dummy DBs
GameState.member_db = {
101: MemberCard(
card_id=101,
card_no="m1",
name="M1",
cost=1,
hearts=np.zeros(6, dtype=np.int32),
blade_hearts=np.zeros(7, dtype=np.int32),
blades=1,
),
102: MemberCard(
card_id=102,
card_no="m2",
name="M2",
cost=2,
hearts=np.zeros(6, dtype=np.int32),
blade_hearts=np.zeros(7, dtype=np.int32),
blades=1,
),
}
GameState.live_db = {
201: LiveCard(card_id=201, card_no="l1", name="L1", score=100, required_hearts=np.zeros(7, dtype=np.int32))
}
def test_inject_hand(self):
# Inject into empty hand
self.state.players[0].hand = []
self.state.inject_card(0, 101, "hand")
assert len(self.state.players[0].hand) == 1
assert self.state.players[0].hand[0] == 101
# Inject at position 0
self.state.inject_card(0, 102, "hand", 0)
assert self.state.players[0].hand[0] == 102
assert self.state.players[0].hand[1] == 101
def test_inject_stage(self):
self.state.inject_card(0, 101, "stage", 0) # Left
self.state.inject_card(0, 102, "stage", 2) # Right
assert self.state.players[0].stage[0] == 101
assert self.state.players[0].stage[1] == -1 # Center empty
assert self.state.players[0].stage[2] == 102
def test_inject_energy(self):
self.state.players[0].energy_zone = []
self.state.inject_card(0, 200, "energy")
assert len(self.state.players[0].energy_zone) == 1
assert self.state.players[0].energy_zone[0] == 200
def test_inject_live(self):
self.state.players[0].live_zone = []
self.state.inject_card(0, 201, "live")
assert len(self.state.players[0].live_zone) == 1
assert self.state.players[0].live_zone[0] == 201
# Check revealed array grew
assert len(self.state.players[0].live_zone_revealed) == 1
assert self.state.players[0].live_zone_revealed[0] == 0
def test_inject_opponent(self):
# Verify we can mess with player 1
self.state.players[1].hand = []
self.state.inject_card(1, 101, "hand")
assert len(self.state.players[1].hand) == 1
assert self.state.players[1].hand[0] == 101
def test_invalid_input(self):
with pytest.raises(ValueError):
self.state.inject_card(2, 101, "hand") # Bad player
with pytest.raises(ValueError):
self.state.inject_card(0, 101, "invalid_zone") # Bad zone
with pytest.raises(ValueError):
self.state.inject_card(0, 101, "stage", 3) # Bad stage pos
|