Files
kebab/crates/kebab-parse-pdf/tests/page_image.rs
altair823 685007789a style: cargo fmt --all (round 4 ingest log feature follow-up)
Phase C4 executor 의 마지막 `fix(test): clippy + fmt fixes` commit 이
test file 부분만 fmt 적용. workspace 전체 fmt 누락 발견 → cargo fmt --all
적용. 모든 import alphabetical reorder + line wrapping 정합.

추가 untracked artifact 동시 commit:
- docs/superpowers/specs/2026-05-28-v0.20-ingest-log-spec.md (491 line, ACCEPT)
- docs/superpowers/plans/2026-05-28-v0.20-ingest-log-plan.md (616 line, ACCEPT)

workspace test: 1370 passed / 0 failed / 50 ignored, ingest_log_smoke green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 04:18:40 +00:00

32 lines
1.1 KiB
Rust

// crates/kebab-parse-pdf/tests/page_image.rs (신규)
use kebab_parse_pdf::extract_dctdecode_page_image;
use lopdf::Document;
// happy path — F1 fixture (DCTDecode JPEG passthrough)
#[test]
fn f1_fixture_yields_dctdecode_jpeg_bytes() {
let bytes = include_bytes!("fixtures/scanned_page1.pdf");
let doc = Document::load_mem(bytes).unwrap();
let result = extract_dctdecode_page_image(&doc, 1).unwrap();
let jpeg = result.expect("F1 의 page 1 이 DCTDecode image 보유");
assert!(jpeg.starts_with(b"\xFF\xD8"), "JPEG magic missing");
assert!(
jpeg.len() > 1000,
"JPEG bytes too small (got {})",
jpeg.len()
);
}
// negative path — F6 fixture (FlateDecode raw pixel — Ok(None))
#[test]
fn flate_raw_fixture_yields_none() {
let bytes = include_bytes!("fixtures/flate_raw.pdf");
let doc = Document::load_mem(bytes).unwrap();
let result = extract_dctdecode_page_image(&doc, 1).unwrap();
assert!(
result.is_none(),
"FlateDecode page 가 Ok(None) 반환 — DCTDecode-only v1 invariant"
);
}