diff --git a/Cargo.toml b/Cargo.toml index 46707d2..3c58d05 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ tokio = { version = "1.43.0", optional = true, default-features = false, feature weezl = "0.1.0" [dev-dependencies] -object_store = "0.12" +object_store = { version = "0.12", features = ["http"] } tiff = "0.9.1" tokio = { version = "1.9", features = [ "macros", diff --git a/tests/ome_tiff.rs b/tests/ome_tiff.rs new file mode 100644 index 0000000..4e332ab --- /dev/null +++ b/tests/ome_tiff.rs @@ -0,0 +1,21 @@ +/// Integration tests on OME-TIFF files. +use async_tiff::tiff::tags::PhotometricInterpretation; + +mod util; + +#[tokio::test] +async fn test_ome_tiff_single_channel() { + let tiff = + util::open_remote_tiff("https://downloads.openmicroscopy.org/images/OME-TIFF/2016-06/bioformats-artificial/single-channel.ome.tif").await; + + assert_eq!(tiff.ifds().len(), 1); + let ifd = &tiff.ifds()[0]; + + assert_eq!( + ifd.photometric_interpretation(), + PhotometricInterpretation::BlackIsZero + ); + assert_eq!(ifd.image_description(), Some("urn:uuid:2bc2aa39-30d2-44ee-8399-c513492dd5de")); + + assert!(ifd.bits_per_sample().iter().all(|x| *x == 8)); +} diff --git a/tests/util/mod.rs b/tests/util/mod.rs new file mode 100644 index 0000000..8b3fa07 --- /dev/null +++ b/tests/util/mod.rs @@ -0,0 +1,24 @@ +use std::sync::Arc; + +use async_tiff::metadata::{PrefetchBuffer, TiffMetadataReader}; +use async_tiff::reader::{AsyncFileReader, ObjectReader}; +use async_tiff::TIFF; +use reqwest::Url; + +pub(crate) async fn open_remote_tiff(url: &str) -> TIFF { + let parsed_url = Url::parse(url).expect("failed parsing url"); + let (store, path) = object_store::parse_url(&parsed_url).unwrap(); + + let reader = Arc::new(ObjectReader::new(Arc::new(store), path)) as Arc; + let prefetch_reader = PrefetchBuffer::new(reader.clone(), 32 * 1024) + .await + .unwrap(); + let mut metadata_reader = TiffMetadataReader::try_open(&prefetch_reader) + .await + .unwrap(); + let ifds = metadata_reader + .read_all_ifds(&prefetch_reader) + .await + .unwrap(); + TIFF::new(ifds) +}