1.9 KiB
1.9 KiB
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,首版避免候选裁剪影响)
- APP:searchBestLayoutApp(测量 mock=length)
- WIDGET:searchBestLayoutWidget(widthMode=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 testnpx tsc --noEmit
- 将本
tasks.md全部勾选完成 - 更新
spec_kit/overview.md- 标记
golden-tests已完成(阶段性) - 写入变更文件清单
- 标记