extends RefCounted ## Headless tests for shift-result persistence (Save autoload, user:// JSON). func _save_instance() -> Object: var save_script: GDScript = load("res://src/autoload/save.gd") return save_script.new() func test_save_round_trip() -> bool: var save := _save_instance() var review := { "scenario_id": "hollywood_building", "reputation": {"rating": 82.5, "grade": "B"}, "spawned_count": 7, "completed_at_ms": Time.get_ticks_msec(), } var err: int = save.save_shift_result(review) var a := TestUtils.check_eq(err, OK, "save succeeds") var results: Array = save.load_shift_results() var b := TestUtils.check(results.size() > 0, "history non-empty after save") var last: Dictionary = results[results.size() - 1] var c := TestUtils.check_eq(last.get("scenario_id", ""), "hollywood_building", "round-trips scenario id") var d := TestUtils.check_eq(float(last.get("reputation", {}).get("rating", 0.0)), 82.5, "round-trips rating") save.free() return a and b and c and d func test_load_returns_array_when_empty_or_missing() -> bool: # The tester home may already contain results; this only asserts shape safety. var save := _save_instance() var results: Array = save.load_shift_results() var ok := TestUtils.check(results is Array, "load_shift_results always returns Array") save.free() return ok func test_settings_round_trip() -> bool: var save := _save_instance() var err: int = save.save_settings({"look_sensitivity": 0.0035, "hud_font_scale": 1.25}) var a := TestUtils.check_eq(err, OK, "save_settings succeeds") var loaded: Dictionary = save.load_settings() var b := TestUtils.check(is_equal_approx(float(loaded.get("look_sensitivity", 0.0)), 0.0035), "round-trips sensitivity") var c := TestUtils.check(is_equal_approx(float(loaded.get("hud_font_scale", 0.0)), 1.25), "round-trips font scale") # Restore defaults so later runs are not affected. save.save_settings(save.DEFAULT_SETTINGS) save.free() return a and b and c func test_settings_defaults_present() -> bool: var save := _save_instance() var defaults: Dictionary = save.load_settings() var ok := TestUtils.check( defaults.has("look_sensitivity") and defaults.has("hud_font_scale"), "settings have documented defaults") save.free() return ok