From c72a8d364deffd9c149a85f1e5a68079450c6c08 Mon Sep 17 00:00:00 2001 From: Andrew Champion Date: Mon, 16 Dec 2019 18:53:44 +0000 Subject: [PATCH] Add tests for exotic 12-bit sample images These images should correctly report their color depths, but fail to decode as they are unsupported. --- tests/decode_images.rs | 24 ++++++++++++++++++++++++ tests/images/12bit.cropped.rgb.tiff | Bin 0 -> 18748 bytes tests/images/12bit.cropped.tiff | Bin 0 -> 6366 bytes 3 files changed, 24 insertions(+) create mode 100644 tests/images/12bit.cropped.rgb.tiff create mode 100644 tests/images/12bit.cropped.tiff diff --git a/tests/decode_images.rs b/tests/decode_images.rs index ae1e573..910d43e 100644 --- a/tests/decode_images.rs +++ b/tests/decode_images.rs @@ -44,6 +44,18 @@ fn test_rgb_u8() { } } +#[test] +fn test_gray_u12() { + let img_file = + File::open("./tests/images/12bit.cropped.tiff").expect("Cannot find test image!"); + let mut decoder = Decoder::new(img_file).expect("Cannot create decoder"); + assert_eq!(decoder.colortype().unwrap(), ColorType::Gray(12)); + assert!(match decoder.read_image() { + Err(tiff::TiffError::UnsupportedError(tiff::TiffUnsupportedError::UnsupportedColorType(_))) => true, + _ => false, + }); +} + #[test] fn test_gray_u16() { let img_file = @@ -104,6 +116,18 @@ fn test_gray_u64() { } } +#[test] +fn test_rgb_u12() { + let img_file = + File::open("./tests/images/12bit.cropped.rgb.tiff").expect("Cannot find test image!"); + let mut decoder = Decoder::new(img_file).expect("Cannot create decoder"); + assert_eq!(decoder.colortype().unwrap(), ColorType::RGB(12)); + assert!(match decoder.read_image() { + Err(tiff::TiffError::UnsupportedError(tiff::TiffUnsupportedError::UnsupportedColorType(_))) => true, + _ => false, + }); +} + #[test] fn test_rgb_u16() { let img_file = File::open("./tests/images/rgb-3c-16b.tiff").expect("Cannot find test image!"); diff --git a/tests/images/12bit.cropped.rgb.tiff b/tests/images/12bit.cropped.rgb.tiff new file mode 100644 index 0000000000000000000000000000000000000000..8c8bb58f4b30777f3652e4a5d7eb2f277ff9eb96 GIT binary patch literal 18748 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 literal 0 HcmV?d00001