JianFeeeee
f604badf86
判据: 三条判据锚在"实现位置"上,A 步搬家后假红 —— 改成锚不变量
用户裁定做 A(harmony 补 store 层)之后,`harmony-logic.test.mjs` 红了 4 条。
**一条都不是 bug**:它们读 `pageCode`(`MainPage.ets`)找那些调用,
而调用已经搬进 `common/MailStore.ets`。
这正是本仓反复出现的形状:**判据锚在实现位置上,而不是它声称的东西上**。
一处实现搬家(哪怕搬得更对)就假红 —— 而假红比漏报更坏,
它会让人去改本来对的代码。
★ 修法:引入 `compositionCode`(页面 + store 合起来看),按**归属**拆断言
· **取数/组装**(谁调 `sumUnreadTotals` / `partialLoadNotice` /
`groupMailsBySession`)→ 读 `compositionCode`
· **渲染**(用户看到什么:单封平铺、多封按展开态、组头可点、卡片视图)→ 仍钉 `pageCode`
(那是页面该管的事,不该被搬走)
不变量是"这条纯逻辑真的被用上了"——**用它的人搬去哪一层不该让判据红**。
★ 顺带修掉一条**自己骗自己**的断言(变异测试抓出来的)
「先分家再折叠」原本写成 `splitAt < groupAt` 两个 `indexOf` 比大小,
并断言两个都 `>= 0`。我把顺序反过来做变异 —— **它没红**:
因为反过来之后第二个字面量变了、`indexOf` 返回 -1,红的是"两个都 >=0"
那条,而不是顺序那条。也就是说:**顺序这条判据从来没在判顺序**。
改成直接断言**数据流形状** `groupMailsBySession(split.normal)` ——
它同时表达"折叠的是筛过的那批"与"必须先分家"。再变异(换成 `mergedMails`)
⇒ fail=2,这次真的咬住了。
★ 判据 14 也从一条拆成两条(取数侧 / 渲染侧),名字改成
「折叠逻辑真正接上了(不是"逻辑写好了没人用")—— 取数侧 + 渲染侧都要在」。
harmony-logic 32/32 绿。注册数不变(拆一条加一条,净持平 32)。
2026-09-20 11:34:44 +08:00
..
2026-09-14 15:41:52 +08:00
2026-09-15 12:09:37 +08:00
2026-09-19 23:38:35 +08:00
2026-09-15 07:46:54 +08:00
2026-09-20 10:51:28 +08:00
2026-09-14 16:21:27 +08:00
2026-09-15 11:17:23 +08:00
2026-09-17 19:00:11 +08:00
2026-09-19 15:03:40 +08:00
2026-09-17 22:32:25 +08:00
2026-09-14 17:33:05 +08:00
2026-09-15 12:55:25 +08:00
2026-09-20 05:22:42 +08:00
2026-09-20 05:45:42 +08:00
2026-09-20 10:51:28 +08:00
2026-09-20 08:16:10 +08:00
2026-09-19 19:29:49 +08:00
2026-09-19 17:00:44 +08:00
2026-09-17 18:43:00 +08:00
2026-09-20 08:16:10 +08:00
2026-09-19 15:22:34 +08:00
2026-09-18 11:08:05 +08:00
2026-09-20 07:37:16 +08:00
2026-09-18 08:39:21 +08:00
2026-09-19 16:18:10 +08:00
2026-09-20 11:34:44 +08:00
2026-09-20 10:51:28 +08:00
2026-09-15 12:06:15 +08:00
2026-09-16 08:29:24 +08:00
2026-09-17 19:38:15 +08:00
2026-09-17 18:43:00 +08:00
2026-09-14 16:21:27 +08:00
2026-09-19 14:01:21 +08:00
2026-09-18 10:34:00 +08:00
2026-09-14 15:11:47 +08:00
2026-09-15 08:45:54 +08:00
2026-09-15 07:46:54 +08:00
2026-09-14 17:33:05 +08:00
2026-09-20 09:01:46 +08:00
2026-09-18 01:08:04 +08:00