Files
FFCardGame/tests/unit/test_ability_system.gd
2026-02-02 16:28:53 -05:00

57 lines
1.8 KiB
GDScript

extends GutTest
## Tests for the AbilitySystem and related components
func test_target_selector_instantiates() -> void:
var selector = TargetSelector.new()
assert_not_null(selector, "TargetSelector should instantiate")
func test_trigger_matcher_instantiates() -> void:
var matcher = TriggerMatcher.new()
assert_not_null(matcher, "TriggerMatcher should instantiate")
func test_effect_resolver_instantiates() -> void:
var resolver = EffectResolver.new()
assert_not_null(resolver, "EffectResolver should instantiate")
func test_field_effect_manager_instantiates() -> void:
var manager = FieldEffectManager.new()
assert_not_null(manager, "FieldEffectManager should instantiate")
func test_field_effect_manager_clear() -> void:
var manager = FieldEffectManager.new()
manager.clear_all()
assert_eq(manager.get_active_ability_count(), 0, "Should have no active abilities after clear")
func test_target_selector_empty_spec() -> void:
var selector = TargetSelector.new()
var result = selector.get_valid_targets({}, null, null)
assert_eq(result.size(), 0, "Empty spec should return empty array")
func test_trigger_matcher_event_matching() -> void:
var matcher = TriggerMatcher.new()
# Test direct event match
assert_true(matcher._event_matches("ATTACKS", "ATTACKS"), "Direct match should work")
# Test enters field variations
assert_true(matcher._event_matches("ENTERS_FIELD", "CARD_PLAYED"), "ENTERS_FIELD should match CARD_PLAYED")
# Test leaves field variations
assert_true(matcher._event_matches("LEAVES_FIELD", "FORWARD_BROKEN"), "LEAVES_FIELD should match FORWARD_BROKEN")
func test_trigger_matcher_source_matching() -> void:
var matcher = TriggerMatcher.new()
# ANY should always match
var event_data = {"card": null}
assert_true(matcher._source_matches("ANY", event_data, null, null), "ANY source should always match")