aboutsummaryrefslogtreecommitdiff
path: root/vendor/tiff/tests/encode_images_with_compression.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/tiff/tests/encode_images_with_compression.rs')
-rw-r--r--vendor/tiff/tests/encode_images_with_compression.rs157
1 files changed, 0 insertions, 157 deletions
diff --git a/vendor/tiff/tests/encode_images_with_compression.rs b/vendor/tiff/tests/encode_images_with_compression.rs
deleted file mode 100644
index 1cf178f..0000000
--- a/vendor/tiff/tests/encode_images_with_compression.rs
+++ /dev/null
@@ -1,157 +0,0 @@
-extern crate tiff;
-
-use std::io::{Cursor, Seek, Write};
-use tiff::{
- decoder::{Decoder, DecodingResult},
- encoder::{
- colortype::{self, ColorType},
- compression::*,
- TiffEncoder, TiffValue,
- },
-};
-
-trait TestImage<const NUM_CHANNELS: usize>: From<Vec<<Self::Color as ColorType>::Inner>> {
- const WIDTH: u32;
- const HEIGHT: u32;
- type Color: ColorType;
-
- fn reference_data(&self) -> &[<Self::Color as ColorType>::Inner];
- fn generate_pixel(x: u32, y: u32) -> [<Self::Color as ColorType>::Inner; NUM_CHANNELS];
-
- fn compress<C: Compression, W: Write + Seek>(
- &self,
- encoder: &mut TiffEncoder<W>,
- compression: C,
- ) where
- [<Self::Color as ColorType>::Inner]: TiffValue,
- {
- let image = encoder
- .new_image_with_compression::<Self::Color, C>(Self::WIDTH, Self::HEIGHT, compression)
- .unwrap();
- image.write_data(self.reference_data()).unwrap();
- }
-
- fn generate() -> Self {
- assert_eq!(
- Self::Color::BITS_PER_SAMPLE.len(),
- NUM_CHANNELS,
- "Incompatible color type"
- );
-
- let mut data = Vec::with_capacity((Self::WIDTH * Self::HEIGHT) as usize * NUM_CHANNELS);
- for x in 0..Self::WIDTH {
- for y in 0..Self::HEIGHT {
- data.extend(IntoIterator::into_iter(Self::generate_pixel(x, y)));
- }
- }
- Self::from(data)
- }
-}
-
-struct TestImageColor(Vec<u16>);
-
-impl From<Vec<u16>> for TestImageColor {
- fn from(value: Vec<u16>) -> Self {
- Self(value)
- }
-}
-
-impl TestImage<3> for TestImageColor {
- const WIDTH: u32 = 1;
- const HEIGHT: u32 = 7;
- type Color = colortype::RGB16;
-
- fn reference_data(&self) -> &[u16] {
- &self.0
- }
-
- fn generate_pixel(x: u32, y: u32) -> [<Self::Color as ColorType>::Inner; 3] {
- let val = (x + y) % <Self::Color as ColorType>::Inner::MAX as u32;
- [val as <Self::Color as ColorType>::Inner; 3]
- }
-}
-
-struct TestImageGrayscale(Vec<u8>);
-
-impl From<Vec<u8>> for TestImageGrayscale {
- fn from(value: Vec<u8>) -> Self {
- Self(value)
- }
-}
-
-impl TestImage<1> for TestImageGrayscale {
- const WIDTH: u32 = 21;
- const HEIGHT: u32 = 10;
- type Color = colortype::Gray8;
-
- fn reference_data(&self) -> &[u8] {
- &self.0
- }
-
- fn generate_pixel(x: u32, y: u32) -> [<Self::Color as ColorType>::Inner; 1] {
- let val = (x + y) % <Self::Color as ColorType>::Inner::MAX as u32;
- [val as <Self::Color as ColorType>::Inner]
- }
-}
-
-fn encode_decode_with_compression<C: Compression + Clone>(compression: C) {
- let mut data = Cursor::new(Vec::new());
-
- let image_rgb = TestImageColor::generate();
- let image_grayscale = TestImageGrayscale::generate();
-
- // Encode tiff with compression
- {
- // Create a multipage image with 2 images
- let mut encoder = TiffEncoder::new(&mut data).unwrap();
- image_rgb.compress(&mut encoder, compression.clone());
- image_grayscale.compress(&mut encoder, compression);
- }
-
- // Decode tiff
- data.set_position(0);
- {
- let mut decoder = Decoder::new(data).unwrap();
-
- // Check the RGB image
- assert_eq!(
- match decoder.read_image() {
- Ok(DecodingResult::U16(image_data)) => image_data,
- unexpected => panic!("Descoding RGB failed: {:?}", unexpected),
- },
- image_rgb.reference_data()
- );
-
- // Check the grayscale image
- decoder.next_image().unwrap();
- assert_eq!(
- match decoder.read_image() {
- Ok(DecodingResult::U8(image_data)) => image_data,
- unexpected => panic!("Decoding grayscale failed: {:?}", unexpected),
- },
- image_grayscale.reference_data()
- );
- }
-}
-
-#[test]
-fn encode_decode_without_compression() {
- encode_decode_with_compression(Uncompressed::default());
-}
-
-#[test]
-fn encode_decode_with_lzw() {
- encode_decode_with_compression(Lzw::default());
-}
-
-#[test]
-fn encode_decode_with_deflate() {
- encode_decode_with_compression(Deflate::with_level(DeflateLevel::Fast));
- encode_decode_with_compression(Deflate::with_level(DeflateLevel::Balanced));
- encode_decode_with_compression(Deflate::with_level(DeflateLevel::Best));
-}
-
-#[test]
-fn encode_decode_with_packbits() {
- encode_decode_with_compression(Packbits::default());
-}