39 lines
2.3 KiB
GDScript
39 lines
2.3 KiB
GDScript
# 致命类用例(独立进程,期望退出码 1)——迭代 38 卡④ wr2-np:扩展行必载 effect_id 负路径断言
|
||
# 违约直调 _emit_row(type=extended 无 effect_id 载荷)→ a2 行协议校验 assert 炸(debug 实况,
|
||
# 输出中的 SCRIPT ERROR 为其测试目标——负面套件全文折叠)→ 零发射;
|
||
# 回归态(校验段被移除)= 违约行照发 → 退出码 2 ≠ 期望 1(闸红)。
|
||
# 独立进程理由:GDScript assert 失败必产 SCRIPT ERROR 且不可捕获,非负面套件会被 run_all 错误
|
||
# 扫描判红(迭代 38 卡④ grilling 第二轮同款结论——负面豁免机制为此存在,counter_prefix 先例)。
|
||
# 运行:godot --headless --path game --script res://tests/unit/battle_settlement/extended_row_violation_test.gd
|
||
extends SceneTree
|
||
|
||
const Kit := preload("res://tests/unit/test_kit.gd")
|
||
|
||
|
||
func _init() -> void:
|
||
var db = load("res://core/config_db.gd").new()
|
||
if not db.load_tables("res://data/tables", false):
|
||
push_error("[extended_row_violation_test] 表加载失败")
|
||
quit(2)
|
||
return
|
||
var rng = load("res://core/rng_service.gd").new()
|
||
rng.set_master_seed(74100)
|
||
var oc = load("res://core/battle_orchestrator.gd").new(db, rng)
|
||
var hits: Array = []
|
||
oc.step_row.connect(func(row): hits.append(row))
|
||
# 违约直调(缺 effect_id 载荷——行协议违约):debug 下 a2 校验 assert 炸中断 _emit_row 本体,
|
||
# 控制流回到本函数(headless assert 语义=中断当前函数不中止运行);release 下 return 零发射同效
|
||
oc._emit_row({"type": "extended", "source_class": "fx_reveal", "origin_cell": Vector2i.ZERO}, 1, "负路径", 0, {})
|
||
if not hits.is_empty():
|
||
push_error("[extended_row_violation_test] 违约行被发射——a2 校验失守(回归)")
|
||
quit(2)
|
||
return
|
||
# 对照组:合法扩展行(带 effect_id)照常发射——校验只拦违约形态
|
||
oc._emit_row({"type": "extended", "source_class": "fx_reveal", "origin_cell": Vector2i.ZERO}, 1, "合法对照", 0, {"effect_id": "fx_reveal"})
|
||
if hits.size() != 1 or String(hits[0].get("type", "")) != "extended":
|
||
push_error("[extended_row_violation_test] 合法扩展行未发射——校验误拦(回归)")
|
||
quit(2)
|
||
return
|
||
print("[extended_row_violation_test] 违约零发射+合法照发(a2 校验在位)")
|
||
quit(1)
|