Spaces:
Running
Running
| import pytest | |
| from primitives import Effect, get_primitive, primitive_allowed_for_school, primitive_ids, render_effect, school_bias, school_primitives | |
| # Verify the fixed primitive vocabulary stays complete. | |
| def test_primitive_ids_are_the_locked_thirteen() -> None: | |
| assert primitive_ids() == ( | |
| "deal", | |
| "burn", | |
| "bomb", | |
| "block", | |
| "ward", | |
| "weak", | |
| "draw", | |
| "energy", | |
| "initiative", | |
| "multi_hit", | |
| "vulnerable", | |
| "conditional", | |
| "scaling", | |
| ) | |
| # Verify school draft pools match the README. | |
| def test_school_primitives_match_spec() -> None: | |
| assert school_primitives("fire") == ("deal", "burn", "bomb", "scaling", "draw", "energy", "block", "conditional") | |
| assert school_primitives("ice") == ("deal", "initiative", "vulnerable", "multi_hit", "conditional", "draw", "energy", "block") | |
| assert school_primitives("earth") == ("deal", "ward", "block", "weak", "scaling", "conditional", "draw", "energy") | |
| assert primitive_allowed_for_school("deal", "fire") | |
| assert primitive_allowed_for_school("deal", "ice") | |
| assert not primitive_allowed_for_school("bomb", "ice") | |
| # Verify school bias explains generation weights. | |
| def test_school_bias() -> None: | |
| assert "immediate Deal" in school_bias("fire") | |
| assert "shield charge" in school_bias("earth") | |
| # Verify primitive lookup returns the stored schema. | |
| def test_get_primitive_returns_spec() -> None: | |
| primitive = get_primitive("ward") | |
| assert primitive.name == "Ward" | |
| assert primitive.category == "defense" | |
| # Verify every effect renders to fixed parseable text. | |
| def test_render_effect(effect: Effect, text: str) -> None: | |
| assert render_effect(effect) == text | |