From aa342c3e6a1d725bcec81053b05f6cb563ba19f3 Mon Sep 17 00:00:00 2001 From: Research Assistant Date: Fri, 5 Jun 2026 12:14:18 +0800 Subject: [PATCH] test: lock OCR phase5 evidence object contract --- tests/test_ocr_evidence.py | 21 +++++++++++++++++++++ tests/test_paper_context_evidence.py | 23 +++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tests/test_ocr_evidence.py create mode 100644 tests/test_paper_context_evidence.py diff --git a/tests/test_ocr_evidence.py b/tests/test_ocr_evidence.py new file mode 100644 index 00000000..d371663a --- /dev/null +++ b/tests/test_ocr_evidence.py @@ -0,0 +1,21 @@ +from __future__ import annotations + + +def test_evidence_object_preserves_role_page_confidence_and_asset() -> None: + from paperforge.worker.ocr_evidence import build_evidence_hit + + hit = build_evidence_hit( + paper_id="KEY001", + role="figure_caption", + page=7, + block_id="p7_b18", + text="Figure 3. Results.", + asset_path="render/figures/figure_003.md", + confidence=0.84, + verification="has_page_crop", + ) + + assert hit["source_type"] == "figure_caption" + assert hit["page"] == 7 + assert hit["asset"] == "render/figures/figure_003.md" + assert hit["confidence"] == 0.84 diff --git a/tests/test_paper_context_evidence.py b/tests/test_paper_context_evidence.py new file mode 100644 index 00000000..dd206a27 --- /dev/null +++ b/tests/test_paper_context_evidence.py @@ -0,0 +1,23 @@ +from __future__ import annotations + + +def test_paper_context_includes_evidence_summary() -> None: + from paperforge.worker.ocr_evidence import build_paper_evidence_summary + + summary = build_paper_evidence_summary( + paper_id="KEY001", + role_indexes={ + "body": [{"role": "body_paragraph", "text": "Text..."}], + "captions": [{"role": "figure_caption", "text": "Figure 1."}], + "references": [{"role": "reference_item", "text": "Smith 2024."}], + "metadata": [{"role": "metadata_title", "text": "Paper Title"}], + "tables": [], + }, + ) + + assert "total_evidence_blocks" in summary + assert summary["total_evidence_blocks"] == 4 + assert "by_role" in summary + assert summary["by_role"]["body"] == 1 + assert summary["by_role"]["captions"] == 1 + assert "has_figures" in summary or "has_tables" in summary