Files
mindfulness/spec_kit/Text Wrap/modules/golden-tests/tasks.md
2026-02-10 11:39:33 +08:00

1.9 KiB
Raw Blame History

golden-tests任务清单

目标:建立 Golden Cases 与性质测试determinism/monotonic/maxLines回归体系保证算法演进可控。

0. 对齐与准备

  • 阅读并对齐口径
    • 阅读 spec_kit/Text Wrap/modules/golden-tests/spec.md
    • 阅读 spec_kit/Text Wrap/modules/golden-tests/plan.md
    • 阅读 设计说明文档/文档换行算法.md 的 16.1/16.2 章节
  • 创建客户端测试目录
    • 新建 client/src/features/textWrap/golden/

1. Golden fixtures

  • 新建 client/src/features/textWrap/golden/fixtures.ts
    • 定义 GoldenCase 类型text/lang/context/availableWidth/maxLines 等)
    • 补充 EN/TC 基础样例集合(首版最小可运行)
    • 对每个 case 写入 expected.lines/expected.wrappedText

2. 测试 harness临时串联

  • 在测试中实现 wrapTextHarness()(仅用于测试)
    • normalizeWhitespace
    • EN tokenizeEN / TC segmentGraphemes
    • 使用“全断点集合”1..N-1首版避免候选裁剪影响
    • APPsearchBestLayoutApp测量 mock=length
    • WIDGETsearchBestLayoutWidgetwidthMode=APPROX单位一致

3. Golden cases 测试

  • 新建 client/src/features/textWrap/golden/__tests__/golden.test.ts
    • 遍历 fixtures断言输出与 expected 完全一致

4. 性质测试property tests

  • 确定性:同输入运行多次输出一致
  • 近似单调性availableWidth 变小不会让任一行变得更宽(同测量 mock 下,用 width=string.length
  • maxLines 不变差maxLines 增大时至少不从可解变 overflow同测量 mock 下)

5. 收尾

  • 跑测试与类型检查
    • npm test
    • npx tsc --noEmit
  • 将本 tasks.md 全部勾选完成
  • 更新 spec_kit/overview.md
    • 标记 golden-tests 已完成(阶段性)
    • 写入变更文件清单