Files
owniverse/tests/test_module_lifecycle.gd
T

39 lines
1.5 KiB
GDScript
Raw Normal View History

extends SceneTree
var checks: int = 0
var failures: int = 0
func _initialize() -> void:
call_deferred("run")
func check(condition: bool, message: String) -> void:
checks += 1
if not condition:
failures += 1
push_error(message)
func run() -> void:
var World = load("res://world/owniverse/owniverse.gd")
var first = World.new()
var second = World.new()
var names: Array = ["batches", "ledger", "production", "automatic", "stellar", "life", "environment", "evolution"]
var references: Array = []
for name in names:
check(first.get(name) != second.get(name), "World has its own " + name)
check(first.get(name).world == first, "Module refers to its owner: " + name)
references.append(weakref(first.get(name)))
first.state.amount.H = 123.0
first.presentation.pending_amounts.H = 123.0
check(not second.state.amount.has("H") and second.presentation.pending_amounts.is_empty(), "State and pending presentation are isolated")
first.free()
for reference in references:
check(reference.get_ref() == null, "Module is released with its world")
check(second.evolution.world == second, "Other world remains usable")
var snapshot: Dictionary = second.state.duplicate(true)
second.evolute(NAN)
second.evolute(-1.0)
check(second.state == snapshot, "Entry point rejects invalid time deltas")
second.free()
print("Module lifecycle: %d checks, %d failures" % [checks, failures])
quit(1 if failures else 0)