DOC-FULL-023 P0 | activeSecondsDelta 测试 【status:todo】 #76

Closed
opened 2026-06-07 11:33:18 +08:00 by wangdl · 2 comments
Owner

阅读43秒、15s+15s+13s、暂停30s不计时、恢复继续、时间倒退不产负数

M-DOC-FULL 里程碑 issue。详见设计文档。

## 阅读43秒、15s+15s+13s、暂停30s不计时、恢复继续、时间倒退不产负数 M-DOC-FULL 里程碑 issue。详见设计文档。
wangdl added this to the M-DOC-FULL:Document Runtime 完整阅读内核与学习事件协议 milestone 2026-06-07 11:33:18 +08:00
wangdl changed title from DOC-FULL-023 P0 | activeSecondsDelta 测试 to DOC-FULL-023 P0 | activeSecondsDelta 测试 【status:todo】 2026-06-07 19:15:06 +08:00
Author
Owner

审查结论:document runtime 当前有文件类型识别/MaterialType/PreviewMode/DocumentInfo(基本)/Markdown解析/Text解析/ImageMeta/Search(V1 Markdown+Text)/NoteAnchor(V1)/ReadingEvent(V1)/ReadingPosition(V1)/EventBuffer(V1基础)/iOS构建/UniFFI绑定/docs。但 V2 核心模型(ReadingSession/EventV2/ActiveTimeTracker)不存在,EventBuffer 缺 ack/failed,Position 缺 camelCase+clamp,PDF/EPUB/Office 为 stub,测试覆盖不足 V2。

本 Issue: ActiveTimeTracker 不存在 → 无测试。

状态: status:todo
工作类型: work:test

## 审查结论:document runtime 当前有文件类型识别/MaterialType/PreviewMode/DocumentInfo(基本)/Markdown解析/Text解析/ImageMeta/Search(V1 Markdown+Text)/NoteAnchor(V1)/ReadingEvent(V1)/ReadingPosition(V1)/EventBuffer(V1基础)/iOS构建/UniFFI绑定/docs。但 V2 核心模型(ReadingSession/EventV2/ActiveTimeTracker)不存在,EventBuffer 缺 ack/failed,Position 缺 camelCase+clamp,PDF/EPUB/Office 为 stub,测试覆盖不足 V2。 **本 Issue**: ActiveTimeTracker 不存在 → 无测试。 **状态**: status:todo **工作类型**: work:test
Author
Owner

完成报告

现有覆盖

time_tracker.rs 已有 8 个单元测试覆盖全部核心场景:

  • test_43_seconds_total — 15s+15s+13s=43s
  • test_pause_stops_time — 暂停 30s 不计时
  • test_time_goes_backwards — 时间倒退返回 0
  • test_remainder_accumulates — 余数累积
  • test_close_returns_residual / test_inactive_tick_returns_zero / test_start_returns_zero / test_close_inactive_returns_zero

新增 session+tracker 集成测试

  • crates/zx_document_core/src/session_v2.rs — 新增 3 个集成测试

测试覆盖(3 个新增)

测试 验证内容
test_total_active_seconds_accumulates 通过 session push event 累积 delta:15+15+13=43
test_sequence_and_seconds_independent 两个独立 session 的 sequence 和 seconds 互不干扰
test_last_position_updated 最后位置被正确更新

代码证据

#[test]
fn test_total_active_seconds_accumulates() {
    let id = start_reading_session_v2(test_material(), 0).unwrap();
    record_session_event_v2(&id, 15_000, 15, None).unwrap();
    record_session_event_v2(&id, 30_000, 15, None).unwrap();
    record_session_event_v2(&id, 43_000, 13, None).unwrap();
    let s = get_session_v2(&id).unwrap();
    assert_eq!(s.total_active_seconds, 43); // 15+15+13
}

验证

cargo test time_tracker — 8 passed
cargo test session_v2 — 11 passed
## 完成报告 ### 现有覆盖 `time_tracker.rs` 已有 8 个单元测试覆盖全部核心场景: - `test_43_seconds_total` — 15s+15s+13s=43s - `test_pause_stops_time` — 暂停 30s 不计时 - `test_time_goes_backwards` — 时间倒退返回 0 - `test_remainder_accumulates` — 余数累积 - `test_close_returns_residual` / `test_inactive_tick_returns_zero` / `test_start_returns_zero` / `test_close_inactive_returns_zero` ### 新增 session+tracker 集成测试 - `crates/zx_document_core/src/session_v2.rs` — 新增 3 个集成测试 ### 测试覆盖(3 个新增) | 测试 | 验证内容 | |---|---| | `test_total_active_seconds_accumulates` | 通过 session push event 累积 delta:15+15+13=43 | | `test_sequence_and_seconds_independent` | 两个独立 session 的 sequence 和 seconds 互不干扰 | | `test_last_position_updated` | 最后位置被正确更新 | ### 代码证据 ```rust #[test] fn test_total_active_seconds_accumulates() { let id = start_reading_session_v2(test_material(), 0).unwrap(); record_session_event_v2(&id, 15_000, 15, None).unwrap(); record_session_event_v2(&id, 30_000, 15, None).unwrap(); record_session_event_v2(&id, 43_000, 13, None).unwrap(); let s = get_session_v2(&id).unwrap(); assert_eq!(s.total_active_seconds, 43); // 15+15+13 } ``` ### 验证 ``` cargo test time_tracker — 8 passed cargo test session_v2 — 11 passed ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/zhixi-document-runtime#76
No description provided.