use cuttlefish_host::{
documents,
infer::{InferBackend, InferRequest, StubBackend},
};
#[tokio::test]
async fn the_stub_reports_images_instead_of_ignoring_them() {
let backend = StubBackend::default();
let images = vec![vec![1u8, 2, 3]];
let mut noop = |_: &str| true;
let result = backend
.infer(
InferRequest {
prompt: "what is this",
max_tokens: 32,
images: &images,
},
&mut noop,
)
.await
.unwrap();
assert!(
result.text.contains("1 image(s)"),
"the stub must make images visible in its output, got: {:?}",
result.text
);
}
#[tokio::test]
async fn the_stub_is_unchanged_without_images() {
let backend = StubBackend::default();
let mut noop = |_: &str| true;
let result = backend
.infer(InferRequest::new("hello", 32), &mut noop)
.await
.unwrap();
assert_eq!(result.text, "a stub summary");
assert!(!result.text.contains("image"));
}
fn sample_pdf() -> std::path::PathBuf {
std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../../examples/docs/sample.pdf")
}
#[test]
fn a_page_that_yields_no_text_fails_rather_than_returning_empty() {
let text = documents::document_text(&sample_pdf()).unwrap();
let err = documents::page_text_from(&text, 5, 1).unwrap_err();
let msg = err.to_string();
assert!(
msg.contains("out of range"),
"a nonexistent page must say so: {msg}"
);
}
#[test]
fn an_extractable_page_still_returns_its_text() {
let whole = documents::document_text(&sample_pdf()).expect("the document extracts");
let text = documents::page_text_from(&whole, 0, 1).expect("segment 0 extracts");
assert!(text.to_lowercase().contains("cuttlefish"), "got: {text:?}");
}
#[test]
fn rendering_without_the_feature_names_the_feature() {
#[cfg(not(feature = "pdf-render"))]
{
let err = documents::render_page(&sample_pdf(), 0, 256).unwrap_err();
assert!(err.to_string().contains("pdf-render"), "{err}");
}
}