test(app-iced): M102 r2 护栏改成「抓得住页面换摆法」——块偏移/行距/散文接线全部有源码结构断言
r1 复审的两条 P1 都是假护栏:把修复原样回滚(A:frame::body 换回居中 424; C:内缩 X2→X1;D:行距加回 4px)后测试仍全绿,因为断言只喂 frame_metrics() 与常量重算, 既不观察 frame::body,也不引用页面常量。本轮把「摆法」做成可断言的东西: - 新增 `pages/layout/block.rs`:body_width(pane 宽封顶 1440)、body_offset(恒 0 = 贴左)、 prose_width(= metrics.column ≤424)三个纯量 + 单测。frame::body / frame::prose 从它们建盒, frame::body_width 改成 pub use(不另算一份)。 - 新增 `pages/layout/source.rs`(cfg(test)):把某个函数的实现文本切出来。iced 的 Element 没有几何内省,量不到「块摆在哪」,只能断言「照哪个数建的」;仓里已有 no_hardcoded_tokens 扫源码、download/tests 用 include_str! 扫 key 的先例。 - 新护栏(每条都做过变异实测,见报告): · frame_body_is_built_from_the_block_quantities(A 变异红) · frame_prose_is_built_from_the_prose_width(E 变异红) · list_column_spaces_rows_only_from_the_shared_constant(D 变异红) · instances 几何断言改用页面真源 LIST_BOTTOM_INSET.dp() / ROW_SPACING(C 变异红) · the_detail_note_goes_through_the_prose_box(散文接线) - P2:wrap::strip 的「会删原文自带 U+200B」写成限界 + 一条断言;docs 口径从 layout.rs 挪到 layout/block.rs(layout.rs 399 → 389)。 零像素变化:改后 9 张图与 r1 的 m102-after 逐张 cmp 完全相同;2560×760 新出三张证明块宽封顶 1440(112..1551)且仍贴左。
This commit is contained in:
1 parent
89d98184c1
commit
824bb36f8e
11 files changed
+469
-67
No files matched your search
@@ -81,3 +81,22 @@ fn breaking_is_reversible_and_idempotent() {
|
||||
assert_eq!(breakable(&broken), broken, "幂等:再跑一遍不许再插");
|
||||
}
|
||||
}
|
||||
|
||||
/// **已知限界**(r1 复审 P2):`strip` 删的是**所有** U+200B,原文自带的也会被删。
|
||||
///
|
||||
/// 这条不修(产品侧从不调用 `strip`,剪贴板/模型拿的是未改写的原文),但要把行为钉住:
|
||||
/// 将来谁想拿 `strip` 当通用还原器,这里会告诉他为什么不行。
|
||||
#[test]
|
||||
fn strip_is_not_a_general_unbreaker() {
|
||||
let original_with_zwsp = "a\u{200b}b";
|
||||
assert_eq!(
|
||||
breakable(original_with_zwsp),
|
||||
original_with_zwsp,
|
||||
"没有分隔符就不插"
|
||||
);
|
||||
assert_eq!(
|
||||
strip(original_with_zwsp),
|
||||
"ab",
|
||||
"strip 会连同原文自带的 U+200B 一起删(已知限界,不是 bug 修复点)"
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user