Initial project sync
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
extends SceneTree
|
||||
|
||||
var failures: Array[String] = []
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
_run.call_deferred()
|
||||
|
||||
|
||||
func _run() -> void:
|
||||
var effect_definition_script: Script = load("res://resources/effects/effect_definition.gd")
|
||||
var effect_instance_script: Script = load("res://resources/effects/effect_instance.gd")
|
||||
var stat_modifier_script: Script = load("res://resources/effects/stat_modifier.gd")
|
||||
var defense_modifier_script: Script = load("res://resources/effects/defense_modifier.gd")
|
||||
var action_rule_modifier_script: Script = load("res://resources/effects/action_rule_modifier.gd")
|
||||
|
||||
_expect(effect_definition_script != null, "EffectDefinition script should load")
|
||||
_expect(effect_instance_script != null, "EffectInstance script should load")
|
||||
_expect(stat_modifier_script != null, "StatModifier script should load")
|
||||
_expect(defense_modifier_script != null, "DefenseModifier script should load")
|
||||
_expect(action_rule_modifier_script != null, "ActionRuleModifier script should load")
|
||||
if effect_definition_script == null or effect_instance_script == null or stat_modifier_script == null or defense_modifier_script == null or action_rule_modifier_script == null:
|
||||
_finish()
|
||||
return
|
||||
|
||||
var definition: Resource = effect_definition_script.new()
|
||||
definition.set("id", &"test_effect")
|
||||
definition.set("duration_type", &"beats")
|
||||
definition.set("duration", 4.0)
|
||||
_expect_int(int(definition.get("max_stacks")), 1, "EffectDefinition max_stacks default")
|
||||
|
||||
var stat_modifier: Resource = stat_modifier_script.new()
|
||||
stat_modifier.set("stat", &"damage")
|
||||
stat_modifier.set("operation", "multiply")
|
||||
stat_modifier.set("value", 1.2)
|
||||
var stat_modifiers: Array[Resource] = [stat_modifier]
|
||||
definition.set("stat_modifiers", stat_modifiers)
|
||||
|
||||
var defense_modifier: Resource = defense_modifier_script.new()
|
||||
defense_modifier.set("defense_state", &"SuperArmor")
|
||||
var defense_modifiers: Array[Resource] = [defense_modifier]
|
||||
definition.set("defense_modifiers", defense_modifiers)
|
||||
|
||||
var action_rule_modifier: Resource = action_rule_modifier_script.new()
|
||||
action_rule_modifier.set("block_movement", true)
|
||||
var action_rule_modifiers: Array[Resource] = [action_rule_modifier]
|
||||
definition.set("action_rule_modifiers", action_rule_modifiers)
|
||||
|
||||
var instance: RefCounted = effect_instance_script.call("create", definition, &"test")
|
||||
_expect(instance != null, "EffectInstance.create should return an instance")
|
||||
if instance != null:
|
||||
_expect_float(float(instance.get("remaining")), 4.0, "EffectInstance should copy beat duration")
|
||||
instance.call("tick_beats", 1.0)
|
||||
_expect_float(float(instance.get("remaining")), 3.0, "EffectInstance should tick beat duration")
|
||||
_expect_bool(bool(instance.call("matches_event_context", {"action_tags": [&"melee"]})), true, "EffectInstance should accept unrestricted context")
|
||||
|
||||
_expect_int((definition.get("stat_modifiers") as Array).size(), 1, "EffectDefinition should hold stat modifiers")
|
||||
_expect_int((definition.get("defense_modifiers") as Array).size(), 1, "EffectDefinition should hold defense modifiers")
|
||||
_expect_int((definition.get("action_rule_modifiers") as Array).size(), 1, "EffectDefinition should hold action rule modifiers")
|
||||
_finish()
|
||||
|
||||
|
||||
func _expect(condition: bool, label: String) -> void:
|
||||
if not condition:
|
||||
failures.append(label)
|
||||
|
||||
|
||||
func _expect_bool(actual: bool, expected: bool, label: String) -> void:
|
||||
if actual != expected:
|
||||
failures.append("%s: expected %s, got %s" % [label, expected, actual])
|
||||
|
||||
|
||||
func _expect_int(actual: int, expected: int, label: String) -> void:
|
||||
if actual != expected:
|
||||
failures.append("%s: expected %d, got %d" % [label, expected, actual])
|
||||
|
||||
|
||||
func _expect_float(actual: float, expected: float, label: String) -> void:
|
||||
if not is_equal_approx(actual, expected):
|
||||
failures.append("%s: expected %.3f, got %.3f" % [label, expected, actual])
|
||||
|
||||
|
||||
func _finish() -> void:
|
||||
if failures.is_empty():
|
||||
print("PASS effect resources")
|
||||
quit(0)
|
||||
else:
|
||||
for failure: String in failures:
|
||||
push_error(failure)
|
||||
quit(1)
|
||||
Reference in New Issue
Block a user