extends SceneTree var failures: int = 0 var checks: int = 0 func _initialize() -> void: call_deferred("run") func check(value: bool, message: String) -> void: checks += 1 if not value: failures += 1 push_error(message) func run() -> void: var actions = load("res://ui/actions/actions.tscn").instantiate() root.add_child(actions) for maximum in [0.0, 0.1, 0.99, 1.0, 1.9, 10.0, 100.0, 123.0, 1000.0, 10000.0, 1e9, 1.1e9, 1e150]: actions.set_actions("test", maximum) var labels: Array = [] var values: Array = [] for i in 5: var value: float = actions.action_values[i] var text: String = actions.action_labels[i].text check(value == floorf(value) and value <= floorf(maximum), "Whole affordable request") if value > 0.0: check(not values.has(value) and not labels.has(text), "Unique requests and displayed labels") values.append(value) labels.append(text) else: check(text == "" and actions.action_labels[i].get_parent().get_node("TextureButton").disabled, "Unused button blank and disabled") if maximum >= 1.0: check(values.back() == floorf(maximum), "Maximum retained") actions.set_actions("test", 100.0) check(actions.action_values.values() == [1.0, 10.0, 100.0, 0.0, 0.0], "Exact power of ten not duplicated") actions.set_actions("SMBH", 25.0, func(_request): return 25.0) check(actions.action_values.values() == [25.0, 0.0, 0.0, 0.0, 0.0], "Identical SMBH previews collapse to one button") actions.set_actions("step", 123.0, func(request): return floorf(request / 5.0) * 5.0) check(actions.action_values.values() == [10.0, 100.0, 123.0, 0.0, 0.0], "Unproducible small requests omitted") check(actions.action_labels[2].text == "120", "Recipe preview displayed while original request retained") var emitted: Array = [] actions.action_pressed.connect(func(_page, amount): emitted.append(amount)) actions._on_action_button_pressed(2) actions._on_action_button_pressed(4) check(emitted == [123.0], "Only active button emits its matching request") actions.queue_free() print("Action values: %d checks, %d failures" % [checks, failures]) quit(0 if failures == 0 else 1)