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)