extends SceneTree const Clock = preload("res://world/owniverse/simulation_time.gd") 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 fixture(): var world = load("res://world/owniverse/owniverse.gd").new() var global: Node = root.get_node("Global") for id in global.OwniverseEntities: var entity = load("res://world/owniverse/owniverse_entity.gd").new(global.OwniverseEntities[id]) world.entities[id] = entity world.state.amount[id] = 0.0 world.state.stats.total_amount[id] = 0.0 if entity.group_as != "": world.state.amount[entity.group_as] = 0.0 world.state.stats.total_amount[entity.group_as] = 0.0 world.entities["N"].life_product = {} world.entities["N"].product_per_year_type = "H" world.entities["N"].product_per_year_amount = 10.0 world.entities["N"].auto = 0.0 world.state.amount.N = 1.0 return world func dispose(world) -> void: for entity in world.entities.values(): entity.free() world.free() func run() -> void: var world = fixture() for id in world.entities: var expected: Array = [] for key in world.entities: if world.entities[key].group_as == id: expected.append(key) check(world._is_group(id) == (not expected.is_empty()), "Group classification: " + id) check(world._members(id) == (expected if not expected.is_empty() else [id]), "Group members: " + id) var members: Array = world._members("Star") members.clear() check(not world._members("Star").is_empty(), "Returned members are independent") world.entities.N.group_as = "TestGroup" world.rebuild_group_index() check(world._members("TestGroup") == ["N"], "Explicit definition reload") world.entities.N.free() world.entities.erase("N") check(not world._is_group("TestGroup"), "Removed definition invalidates index") print("Group index: %d checks, %d failures" % [checks, failures]) dispose(world) quit(1 if failures else 0)