改动面 112 文件 572+/572-:game/tests/** 与 game/probe/** 共 106 件 545 行 `# oracle:`→`# 判据出处:`;tools/capability_audit.py 正则字面量换中文+ORACLE_*→CRITERION_*/check_oracle_markers→check_criterion_markers/oracle_marked(flagged)→criterion_* 共 11 行;test-conventions.md:119 格式句+:155 措辞;待办清单与需求卡片-QA覆盖余量收口批各 1 处字面量;coverage_enum.py:21 与 camp_scene_layout_test.gd:101 旁支措辞;ui_click_probe.gd 对拍局部变量 oracle→expected 7 处;auto_player.gd 三处 safe_set 真值措辞。不动:历史审计报告两份、test-oracle-anchor 分支名、git 史、生成日志;指针格式/扫描面/判红条件/验收义务全不变。 读数(区内实跑):改前 capability_audit --strict「417 注记函数·红项 0」→改后「417 判据出处注记函数·红项 0」exit=0;新标记 545 行/106 文件,现行义务面 oracle 残留 0(在册沿革除外);diff 自检 game/ 非注释新增行仅 6 行且全在 ui_click_probe.gd 的 expected 变量段;112 改动文件 CRLF=0;py_compile tools/capability_audit.py OK;--docs exit=0【验收通过】无新增红;--gates exit=0(静态扫描绿、闸壳 bash -n ×13 失败 0)。
60 lines
3.1 KiB
GDScript
60 lines
3.1 KiB
GDScript
extends SceneTree
|
||
# 确认弹窗按钮位次与语义同钉单元套——
|
||
# 守 ConfirmDialog 公开入口 open()/open_three()(四处消费方实际用的两个公开方法)的按钮行子节点序:
|
||
# 推进钮恒 child(0)、次推进 child(1)、维持 child(2)(HUD框架.md:90 三条纪律·其三——营地交互修复批 R3)。
|
||
# 判据面=树的公开子节点序+Button 公开 text,零私有成员直读;次钮在 open() 里只置 visible=false
|
||
# 不从子节点表移除——双钮形态下子节点仍为 3,按下标断必取 child(2)。
|
||
# 运行:godot --headless --path game --script res://tests/unit/presentation/confirm_dialog_test.gd(expect 0)
|
||
const Kit := preload("res://tests/unit/test_kit.gd")
|
||
const ConfirmDialogScript := preload("res://presentation/views/confirm_dialog.gd")
|
||
|
||
|
||
func _initialize() -> void:
|
||
# 判据出处: design/gdd/systems/表现与支撑/HUD框架.md:90 (确认弹窗按钮位次定值——位次与语义同钉组)
|
||
call_deferred("_run")
|
||
|
||
|
||
# 按类型向下定位第一个 HBoxContainer(该弹窗树内唯一横排——modal_shell 产 CenterContainer+
|
||
# PanelContainer+VBox 不产横排;HSeparator 与 UiKit.button 产件也不是 HBoxContainer)
|
||
func _find_btn_row(node: Node) -> HBoxContainer:
|
||
if node is HBoxContainer:
|
||
return node
|
||
for ch in node.get_children():
|
||
var found := _find_btn_row(ch)
|
||
if found != null:
|
||
return found
|
||
return null
|
||
|
||
|
||
func _test_two_button_row_order() -> void:
|
||
# 判据出处: design/gdd/systems/表现与支撑/HUD框架.md:90 双钮形态位次=推进在左、维持在右(两钮同钉组)
|
||
var ov: Control = ConfirmDialogScript.new()
|
||
root.add_child(ov)
|
||
ov.open("t", "推进", "维持")
|
||
var row := _find_btn_row(ov)
|
||
Kit.check("双钮形态按钮行子节点数=3(次钮只隐藏不移除——非空前置)", row != null and row.get_child_count() == 3)
|
||
if row != null and row.get_child_count() == 3:
|
||
Kit.check("双钮形态位次 child(0)=推进", String((row.get_child(0) as Button).text) == "推进")
|
||
Kit.check("双钮形态位次 child(2)=维持(次钮占 child(1) 位——按下标断必取 child(2))", String((row.get_child(2) as Button).text) == "维持")
|
||
ov.queue_free()
|
||
|
||
|
||
func _test_three_button_row_order() -> void:
|
||
# 判据出处: design/gdd/systems/表现与支撑/HUD框架.md:90 三钮形态位次=推进/次推/维持(三钮同钉组)
|
||
var ov: Control = ConfirmDialogScript.new()
|
||
root.add_child(ov)
|
||
ov.open_three("t", "推进", "次推", "维持")
|
||
var row := _find_btn_row(ov)
|
||
Kit.check("三钮形态按钮行子节点数=3(非空前置)", row != null and row.get_child_count() == 3)
|
||
if row != null and row.get_child_count() == 3:
|
||
Kit.check("三钮形态位次 child(0)=推进", String((row.get_child(0) as Button).text) == "推进")
|
||
Kit.check("三钮形态位次 child(1)=次推", String((row.get_child(1) as Button).text) == "次推")
|
||
Kit.check("三钮形态位次 child(2)=维持", String((row.get_child(2) as Button).text) == "维持")
|
||
ov.queue_free()
|
||
|
||
|
||
func _run() -> void:
|
||
_test_two_button_row_order()
|
||
_test_three_button_row_order()
|
||
quit(Kit.finish("confirm_dialog_test", "PASS — 双钮/三钮形态位次与语义同钉 全过"))
|