Files
ElyOffice/tasks/reviews/C10.5-r2.md
T

4.2 KiB
Raw Blame History

FAIL

apps/ely-show/src/slideshow.rs:170 — 后退的“全部动画已完成”状态由 clicks 是否为零决定,只有 with/after 自动动画的页面恰好为零,因此后退会重新播放入页动画。复现:第一页矩形设置 with 开始、10 秒淡入,第二页无动画;放映按 right、left 回到第一页,真实 LOK 应用探针得到矩形 opacity=0.00006146328、moving=true,预期为完全显示的已完成状态。违反 C10.5 的后退行为及 SHOW-09。修复方向:显式携带后退的已完成状态,独立于单击组数量;覆盖没有 click 组的入场及退出动画。

apps/ely-show/src/slideshow.rs:169 — 入页时立即启动动画时钟,当前页图层尚在后台读取时,stage 显示黑屏而动画照常计时,返回图层后直接显示已结束的效果。复现:第三页设置 with 开始、0.1 秒淡入,从已缓存的第一页数字跳到第三页;以共享 worker 忙碌 300 毫秒模拟其他标签的后台读取,探针确认跳页时 stack(2) 为空,图层首次可用时 elapsed=0.352540625、moving=false,整个淡入已经在黑屏期间结束。违反 SHOW-09 的持续时间与放映播放行为。修复方向:当前页图层可绘制后开始入页切换和自动动画计时,并让读取期间的单击与自动换页遵守同一时间基准;加入延迟图层读取的回归测试。

apps/ely-show/src/slideshow/media.rs:90 — media_tick 在循环重播之前计算 keep;视频结束时 keep=false,随后 seek/play 已重启播放器,返回值仍然让 Audience 停止请求动画帧,循环播放的画面停住。复现:主线程 AVFoundation 放映探针播放 fixtures/media/clip.mp4,媒体 loop=true,按 Audience 的返回值决定下一帧;第一遍结束后 media_tick 返回 false,实际播放器已经为 Ready、playing=true、position=0.0。单屏静止幻灯片此后继续播放声音并保持上一帧,违反 SHOW-10。修复方向:循环重启后继续安排视频帧,并按重启后的播放器状态判定刷新;用原生播放器覆盖完整的一次循环边界。

apps/ely-show/src/slideshow.rs:156 — Leaving 持有离开页的完整图层,切换完成后一直保留到下一次跳页;layers 的 retain 只约束 HashMap,放映实际仍持有上一页、当前页和下一页三个全尺寸图层栈。复现:三页均可见,第二页设置 0.1 秒淡化,从第一页进入第二页,等第三页预取及切换结束;探针得到 moving=false、leaving.is_some()=true、stack(0..2)=[None, Some, Some],第一栈仍由 leaving.stack 持有。违反 C10.5 的只缓存当前页与下一页约定。修复方向:切换完成时释放离开页图层,回归测试统计全部持有的图层栈,覆盖切换结束后的静止状态。

apps/ely-show/src/tests/play_more.rs:174 — 退出效果回归只检查 object_look 的模型值,观众切换画面没有进入断言,第一轮退出对象重新出现的问题仍能通过该测试。复现:在独立副本中把 stage::left 改回 compose::slide(..., |_| true, ...),a_finished_exit_stays_gone_as_the_slide_leaves 仍通过;同一渲染函数的 Metal 半程像素探针读出已退出对象的红色 Rgba([255, 0, 0, 255]) 并失败,当前实现读出黑色 Rgba([0, 0, 0, 255]) 并通过。修复方向:回归测试绘制实际的离页切换并断言对象位置的像素,让恢复全部对象可见的变异必然失败。

apps/ely-show/src/tests/play_more.rs:198 — 媒体失败回归在测试线程上打开有效视频,只验证 Player::open 的同步线程错误;第一轮要求的异步解码失败和 media_tick 错误传播仍缺少有效回归。复现:在独立副本中把 media_tick 的 Err 分支改为直接返回 false,media_that_cannot_play_says_why_and_the_show_goes_on 仍通过;主线程放映探针打开存在但损坏的 MP4 后 notice=None 并失败,当前实现得到“无法播放:Cannot Open”。watch 的独立状态测试也没有经过该错误传播分支。修复方向:在主线程让真实播放器进入 Loading/Failed,经实际 media_tick 验证原因提示、失败播放器停止和放映继续,并要求跳过错误传播的变异失败。