Spaces:
Sleeping
Sleeping
File size: 1,400 Bytes
463f868 9bd4ce5 | 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 | from engine.models.ability import Ability, Condition, Effect, explain_filter_attr, format_filter_attr
from engine.models.generated_enums import ConditionType, EffectType, TargetType, TriggerType
from tools.verify.bytecode_decoder import decode_bytecode
def test_any_stage_filter_summary_uses_named_fields():
ability = Ability(raw_text="test", trigger=TriggerType.CONSTANT, effects=[])
condition = Condition(type=ConditionType.COUNT_STAGE, params={"filter": "COST_GE_13", "area": "ANY_STAGE"})
packed_attr = ability._pack_filter_attr(condition)
explained = explain_filter_attr(packed_attr)
assert explained["target_player"] == 3
assert explained["value_threshold"] == 13
assert explained["is_cost_type"] is True
assert "target=both" in format_filter_attr(packed_attr)
assert "cost>=13" in format_filter_attr(packed_attr)
def test_decoder_renders_named_filter_summary_for_compiled_condition():
condition = Condition(type=ConditionType.COUNT_STAGE, params={"filter": "COST_GE_13", "area": "ANY_STAGE"}, value=1)
effect = Effect(effect_type=EffectType.ADD_BLADES, value=2, target=TargetType.SELF)
ability = Ability(raw_text="test", trigger=TriggerType.CONSTANT, effects=[effect], conditions=[condition])
decoded = decode_bytecode(ability.compile())
assert "target=both" in decoded
assert "cost>=13" in decoded |