#[cfg(feature = "pdf-surface")]
use super::super::*;
#[cfg(feature = "pdf-surface")]
use super::default_overrides;
#[cfg(feature = "pdf-surface")]
use xberg::ExtractionConfig;
#[cfg(feature = "pdf-surface")]
#[test]
fn test_pdf_backend_flag_alone_populates_pdf_options() {
let mut config = ExtractionConfig::default();
let overrides = ExtractionOverrides {
pdf_backend: Some("native".to_string()),
..default_overrides()
};
overrides.apply(&mut config);
assert!(
config.pdf_options.is_some(),
"a bare --pdf-backend flag must populate pdf_options even with no other PDF flag set"
);
}
#[cfg(feature = "pdf-surface")]
#[test]
fn test_pdf_backend_pdfium_applied() {
let mut config = ExtractionConfig::default();
let overrides = ExtractionOverrides {
pdf_backend: Some("pdfium".to_string()),
..default_overrides()
};
overrides.apply(&mut config);
let pdf = config.pdf_options.expect("pdf_options must be populated");
assert_eq!(pdf.backend, xberg::PdfBackend::Pdfium);
}
#[cfg(feature = "pdf-surface")]
#[test]
fn test_pdf_backend_default_applied_is_native() {
let mut config = ExtractionConfig::default();
let overrides = ExtractionOverrides {
pdf_backend: Some("native".to_string()),
..default_overrides()
};
overrides.apply(&mut config);
let pdf = config.pdf_options.expect("pdf_options must be populated");
assert_eq!(pdf.backend, xberg::PdfBackend::Native);
}
#[cfg(feature = "pdf-surface")]
#[test]
fn test_pdf_backend_rejects_unknown_value() {
let overrides = ExtractionOverrides {
pdf_backend: Some("xyz".to_string()),
..default_overrides()
};
let error = overrides.validate().expect_err("unknown backend must fail");
assert!(
error.to_string().contains("native"),
"error should mention 'native', got: {error}"
);
}
#[cfg(all(feature = "pdf-surface", not(feature = "pdf-pdfium-surface")))]
#[test]
fn test_pdf_backend_pdfium_rejected_without_feature_names_rebuild_hint() {
let overrides = ExtractionOverrides {
pdf_backend: Some("pdfium".to_string()),
..default_overrides()
};
let error = overrides
.validate()
.expect_err("pdfium must be rejected without the feature");
assert!(
error.to_string().contains("pdf-pdfium-surface"),
"error should name the feature to rebuild with, got: {error}"
);
}
#[cfg(feature = "pdf-pdfium-surface")]
#[test]
fn test_pdf_backend_pdfium_accepted_with_feature() {
let overrides = ExtractionOverrides {
pdf_backend: Some("pdfium".to_string()),
..default_overrides()
};
assert!(overrides.validate().is_ok());
}