extends RefCounted ## Headless tests for the runtime image loader (ADR-0014). const UiArt := preload("res://src/game/ui/art.gd") func test_loads_runtime_ui_art() -> bool: var art := UiArt.new() var start := art.texture("start_menu") var venue := art.texture("venue_overview") var a := TestUtils.check(start != null, "start_menu art loads from assets/images/ui") var b := TestUtils.check(venue != null, "venue_overview art loads from assets/images/ui") var c := TestUtils.check(art.has("start_menu"), "has() sees the runtime art") return a and b and c func test_missing_art_returns_null() -> bool: var art := UiArt.new() var missing := art.texture("does_not_exist") var empty := art.texture("") var a := TestUtils.check(missing == null, "missing art returns null for a fallback") var b := TestUtils.check(empty == null, "empty name returns null") return a and b func test_explicit_relative_path() -> bool: var art := UiArt.new() var texture := art.texture_at("ui/start_menu.png") var missing := art.texture_at("ui/nope.png") var a := TestUtils.check(texture != null, "texture_at loads an explicit path") var b := TestUtils.check(missing == null, "texture_at returns null when absent") return a and b func test_cache_returns_the_same_resource() -> bool: var art := UiArt.new() var first := art.texture("start_menu") var second := art.texture("start_menu") var a := TestUtils.check(first != null and first == second, "textures are cached") art.clear_cache() var b := TestUtils.check(art.texture("start_menu") != null, "cache can be cleared") return a and b