Files
gplan-2/game/tests/unit
DKChan d091c98163 feat(迭代29 T5): L1 覆盖补洞——4 个零指名 core 模块 + 呈现层两件直接单测
新增六套(run_all 27 → 33 套),全部进 manifest,全绿:
· core/board_generator_test(9 条):尺寸与 board_gen 表一致、每个安全格数字恒等于八邻雷数
  (全盘逐格复算)、同种子雷集/数字集逐位一致、可推理性度量与清图判定自洽。
· core/minesweeper_rules_test(12 条):装板带初始扩张揭示且未铺满安全格、安全格余量=总数−已揭示、
  挖已揭示格拒(target_revealed)、挖非相邻格拒(not_adjacent)、fx_reveal 推进揭示并递减余量、
  插旗落旗态与计数、目录外意图被拒。
· core/config_db_resolver_test(8 条):ceil 进度键偏难语义(请求 (1,1) 命中 (1,3) 而非 (1,0))、
  行集按表文件行序返回、ceil 行集、难度乘数 clamp 上下限、未登记坐标返回空修饰。
· core/config_db_cross_validator_test(4 条):正向全对齿零错(防误伤)、悬空 skill_id 必报、
  buff 挂主角侧状态必报(cast_side)。
· presentation/hud_presenter_test(5 条)+ battle_narrator_test(9 条):文案逐拒绝原因正确、
  兜底不吐空串、数值带入、胜负互异、关卡收束态恒定、Boss 名带入。
三屏壳的断言面由 T4 screen_flow_probe 承担(六步流程每步判屏级互斥),不另起第二载体。

变异验证:hud_presenter 的「AP 不足。」改漏句号 → hud_presenter_test 精确见红。
另有一批「写反的断言被实现抓出」的证据(首跑即红、逐条订正后转绿):装板并非零揭示而是带初始扩张、
挖受英雄邻接约束、插旗需 flag_range_free 或相邻且要先给足 AP、技能 type 是 basic 不是 attack、
状态表 id 键是 effect_id 不是 status_id、battle_end_text 在 level_end=true 时恒为「关卡通关!」。

顺带实证本批核心命题:config_db_resolver_test 首跑因诊断回调的 lambda 形参类型写错
(首参是表 id 字符串而非 int)触发 Callable 调用失败——脚本错误不改退出码却让整个解析函数静默
返回 null,套件仍会报「全绿」。正是脚本错误扫描存在的原因。
2026-10-16 15:55:33 +08:00
..

tests/unit/ — 隔离单元测试

每系统一个子目录(现行:data_config/、core/、battle_settlement/、contracts/、presentation/)。协议与命名见 tests/README.md。

活样板:example_test.gd(本目录)——第一个真实测试请以它为模板。 参考实现:game/smoke/smoke_all.gd(752+ 条断言的组织方式)。