fix(M03): support cold rendered ground sample startup
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
extends SceneTree
|
||||
|
||||
## Cold-start contract for the renderer-owned ground query result value.
|
||||
|
||||
const SAMPLE_SCRIPT := preload("res://src/render/terrain/rendered_ground_sample.gd")
|
||||
|
||||
|
||||
func _initialize() -> void:
|
||||
var failures: Array[String] = []
|
||||
var available_sample: RefCounted = SAMPLE_SCRIPT.available(42.25)
|
||||
_expect_true(bool(available_sample.get("is_available")), "available sample", failures)
|
||||
_expect_near(float(available_sample.get("height_units")), 42.25, "available height", failures)
|
||||
|
||||
var non_finite_sample: RefCounted = SAMPLE_SCRIPT.available(INF)
|
||||
_expect_true(not bool(non_finite_sample.get("is_available")), "non-finite unavailable", failures)
|
||||
_expect_true(
|
||||
StringName(non_finite_sample.get("failure_code")) == &"render_terrain_height_not_finite",
|
||||
"non-finite failure code",
|
||||
failures
|
||||
)
|
||||
|
||||
var unavailable_sample: RefCounted = SAMPLE_SCRIPT.unavailable(&"")
|
||||
_expect_true(
|
||||
StringName(unavailable_sample.get("failure_code")) == &"render_terrain_unavailable",
|
||||
"empty failure code normalization",
|
||||
failures
|
||||
)
|
||||
|
||||
if not failures.is_empty():
|
||||
for failure in failures:
|
||||
push_error("RENDERED_GROUND_SAMPLE: %s" % failure)
|
||||
quit(1)
|
||||
return
|
||||
print("RENDERED_GROUND_SAMPLE PASS contract=3")
|
||||
quit(0)
|
||||
|
||||
|
||||
func _expect_near(actual_value: float, expected_value: float, label: String, failures: Array[String]) -> void:
|
||||
if not is_equal_approx(actual_value, expected_value):
|
||||
failures.append("%s expected %.3f, got %.3f" % [label, expected_value, actual_value])
|
||||
|
||||
|
||||
func _expect_true(actual_value: bool, label: String, failures: Array[String]) -> void:
|
||||
if not actual_value:
|
||||
failures.append("%s expected true" % label)
|
||||
Reference in New Issue
Block a user