adaptive-rag / tests /test_ocr_cache.py
mcikalmerdeka's picture
feat: add pytest configuration and initial test suite with 147 tests
256d433
Raw
History Blame Contribute Delete
2.08 kB
"""Tests for src.cache.ocr_cache — SHA256 keying, hit/miss, disk I/O."""
from __future__ import annotations
from pathlib import Path
import pytest
from src.cache.ocr_cache import OcrCache
class TestOcrCacheKey:
"""Key generation is pure SHA256 of the raw bytes."""
def test_key_deterministic(self) -> None:
content = b"same content"
assert OcrCache.key(content) == OcrCache.key(content)
def test_key_content_sensitive(self) -> None:
assert OcrCache.key(b"a") != OcrCache.key(b"b")
def test_key_length(self) -> None:
assert len(OcrCache.key(b"x")) == 64 # SHA256 hex
class TestOcrCacheHitMiss:
"""get / put round-trips through the filesystem."""
def test_miss_on_empty_cache(self, tmp_path: Path) -> None:
cache = OcrCache(tmp_path / "ocr")
assert cache.get(b"unknown") is None
def test_put_and_get(self, tmp_path: Path) -> None:
cache = OcrCache(tmp_path / "ocr")
content = b"page image bytes"
cache.put(content, "# Markdown\n")
assert cache.get(content) == "# Markdown\n"
def test_put_overwrites(self, tmp_path: Path) -> None:
cache = OcrCache(tmp_path / "ocr")
content = b"same"
cache.put(content, "v1")
cache.put(content, "v2")
assert cache.get(content) == "v2"
def test_different_content_different_files(self, tmp_path: Path) -> None:
cache = OcrCache(tmp_path / "ocr")
c1 = b"page 1"
c2 = b"page 2"
cache.put(c1, "md1")
cache.put(c2, "md2")
assert cache.get(c1) == "md1"
assert cache.get(c2) == "md2"
def test_file_extension(self, tmp_path: Path) -> None:
cache = OcrCache(tmp_path / "ocr")
content = b"x"
key = cache.key(content)
cache.put(content, "text")
assert (cache.root / f"{key}.md").exists()
def test_directory_created(self, tmp_path: Path) -> None:
root = tmp_path / "nested" / "ocr"
assert not root.exists()
cache = OcrCache(root)
assert root.is_dir()