57 lines
1.8 KiB
GDScript
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")
|