spaceship/tests/test_menu_scene_boundaries.gd

46 lines
1.6 KiB
GDScript3
Raw Normal View History

extends SceneTree
const MENUS: Array[String] = [
"BuildMenu", "CraftMenu", "LabMenu", "TransferMenu", "HangarMenu",
2026-09-03 20:05:33 +02:00
"FormationMenu", "SkillMenu", "PlanningMenu", "GarrisonMenu", "DevMenu",
]
func _initialize() -> void:
call_deferred("_verify")
func _verify() -> void:
var packed: PackedScene = load("res://world/Main.tscn")
if packed == null:
return _fail("Main.tscn did not load")
var main: Node = packed.instantiate()
root.add_child(main)
if main.get_node_or_null("FadeOverlay/FadeRect") == null:
return _fail("Main lost the atmosphere fade overlay")
for menu_name in MENUS:
var menu: Node = main.get_node_or_null("UI/%s" % menu_name)
if menu == null:
return _fail("%s is missing" % menu_name)
var expected: String = "res://ui/menus/%s.tscn" % menu_name
if menu.scene_file_path != expected:
return _fail("%s is inline in Main.tscn instead of instancing %s" \
% [menu_name, expected])
if menu.get_script() == null:
return _fail("%s has no owning script" % menu_name)
if menu.get_node_or_null("FadeOverlay") != null:
return _fail("%s incorrectly owns Main's atmosphere fade overlay" % menu_name)
var source: String = FileAccess.get_file_as_string(
"res://controllers/BuildController.gd")
for menu_name in MENUS:
if "../UI/%s/" % menu_name in source:
return _fail("BuildController reaches into %s children" % menu_name)
print("%d menu scenes own their controls; BuildController uses root APIs" % MENUS.size())
print("TEST_MENU_SCENE_BOUNDARIES: PASS")
quit(0)
func _fail(message: String) -> void:
print("TEST_MENU_SCENE_BOUNDARIES: FAIL (%s)" % message)
quit(1)