diff --git a/src/game/engine/tests/unit/test_smoke.gd b/src/game/engine/tests/unit/test_smoke.gd index 0f9e5bc7..f6124f28 100644 --- a/src/game/engine/tests/unit/test_smoke.gd +++ b/src/game/engine/tests/unit/test_smoke.gd @@ -3,22 +3,32 @@ extends GutTest ## Dataset is minimal (only game.json, vocabulary.json, climate_spec.json). ## Full data tests belong in the milestones that add that data. +const ClimateScript: GDScript = preload("res://engine/src/modules/climate/climate.gd") + func before_all() -> void: # GUT runs without main.gd, so data must be loaded explicitly. DataLoader.load_theme("age-of-dwarves") + DataLoader.load_world("earth") ThemeVocabulary.load_vocabulary("age-of-dwarves") func test_data_loader_has_climate_spec() -> void: + # climate_spec.json lives under the world manifest (loaded via load_world). var spec: Dictionary = DataLoader.get_climate_spec() - assert_false(spec.is_empty(), "climate_spec.json must be loaded") + assert_false(spec.is_empty(), "climate_spec.json must be loaded from world manifest") func test_theme_vocabulary_loaded() -> void: assert_true(ThemeVocabulary.has_key("power"), "vocabulary must have 'power' key") - assert_true(ThemeVocabulary.has_key("discipline"), "vocabulary must have 'discipline' key") - assert_true(ThemeVocabulary.has_key("social_policy_title"), "vocabulary must have 'social_policy_title' key") + assert_true( + ThemeVocabulary.has_key("discipline"), + "vocabulary must have 'discipline' key", + ) + assert_true( + ThemeVocabulary.has_key("social_policy_title"), + "vocabulary must have 'social_policy_title' key", + ) func test_theme_vocabulary_active_theme() -> void: @@ -27,15 +37,14 @@ func test_theme_vocabulary_active_theme() -> void: func test_climate_instantiates() -> void: - const ClimateScript: GDScript = preload("res://engine/src/modules/climate/climate.gd") var climate: RefCounted = ClimateScript.new() assert_not_null(climate, "Climate must instantiate") func test_climate_loads_params_from_defaults() -> void: - const ClimateScript: GDScript = preload("res://engine/src/modules/climate/climate.gd") var climate: RefCounted = ClimateScript.new() - # No climate_params.json in M0 — _ensure_params falls back to built-in defaults - climate._ensure_params() - assert_true(climate._params_loaded, "Climate._params_loaded must be true after _ensure_params()") - assert_false(climate._params.is_empty(), "Climate._params must be populated (from defaults)") + # Iter 7: physics moved to Rust. _ensure_rust() loads params/spec/terrain into + # the Rust GdClimatePhysics instance and flips _params_loaded once initialized. + climate._ensure_rust() + assert_true(climate._params_loaded, "Climate._params_loaded must be true after _ensure_rust()") + assert_not_null(climate._rust, "Climate._rust (GdClimatePhysics) must be instantiated")