From 9ca445a5ebd75c3c16e0bbd932c3c674ca9d5082 Mon Sep 17 00:00:00 2001 From: Birk Tjelmeland Date: Sat, 9 Feb 2019 20:58:28 +0100 Subject: [PATCH] Add roundtrip tests --- tests/encode_images.rs | 111 +++++++++++++++++++++++++++++++++-------- 1 file changed, 91 insertions(+), 20 deletions(-) diff --git a/tests/encode_images.rs b/tests/encode_images.rs index 22965b3..5aa3123 100644 --- a/tests/encode_images.rs +++ b/tests/encode_images.rs @@ -46,51 +46,122 @@ fn test_gray_u8_roundtrip() let img_file = File::open("./tests/images/minisblack-1c-8b.tiff").expect("Cannot find test image!"); let mut decoder = Decoder::new(img_file).expect("Cannot create decoder"); assert_eq!(decoder.colortype().unwrap(), ColorType::Gray(8)); - let img_res = decoder.read_image(); - assert!(img_res.is_ok()); + + let image_data = match decoder.read_image().unwrap() { + DecodingResult::U8(res) => res, + _ => panic!("Wrong data type"), + }; + + let mut file = tempfile::tempfile().unwrap(); + { + let mut tiff = TiffEncoder::new(&mut file).unwrap(); + + let (width, height) = decoder.dimensions().unwrap(); + tiff.write_image::(width, height, &image_data).unwrap(); + } + file.seek(SeekFrom::Start(0)).unwrap(); + { + let mut decoder = Decoder::new(&mut file).unwrap(); + if let DecodingResult::U8(img_res) = decoder.read_image().unwrap() { + assert_eq!(image_data, img_res); + } + else { + panic!("Wrong data type"); + } + } } #[test] -fn test_rgb_u8() +fn test_rgb_u8_roundtrip() { let img_file = File::open("./tests/images/rgb-3c-8b.tiff").expect("Cannot find test image!"); let mut decoder = Decoder::new(img_file).expect("Cannot create decoder"); assert_eq!(decoder.colortype().unwrap(), ColorType::RGB(8)); - let img_res = decoder.read_image(); + + let image_data = match decoder.read_image().unwrap() { + DecodingResult::U8(res) => res, + _ => panic!("Wrong data type"), + }; let mut file = tempfile::tempfile().unwrap(); - let mut tiff = TiffEncoder::new(&mut file).unwrap(); - - tiff.write_image::(100, 100, &image_data).unwrap(); - file.seek(SeekFrom::Start(0)).unwrap(); - - let mut decoder = Decoder::new(&mut file).unwrap(); - assert_eq!(decoder.colortype().unwrap(), ColorType::RGB(8)); - assert_eq!(decoder.dimensions().unwrap(), (100, 100)); - if let DecodingResult::U8(img_res) = decoder.read_image().unwrap() { - assert_eq!(image_data, img_res); + { + let mut tiff = TiffEncoder::new(&mut file).unwrap(); + + let (width, height) = decoder.dimensions().unwrap(); + tiff.write_image::(width, height, &image_data).unwrap(); } - else { - panic!("Wrong data type"); + file.seek(SeekFrom::Start(0)).unwrap(); + { + let mut decoder = Decoder::new(&mut file).unwrap(); + if let DecodingResult::U8(img_res) = decoder.read_image().unwrap() { + assert_eq!(image_data, img_res); + } + else { + panic!("Wrong data type"); + } } } #[test] -fn test_gray_u16() +fn test_gray_u16_roundtrip() { let img_file = File::open("./tests/images/minisblack-1c-16b.tiff").expect("Cannot find test image!"); let mut decoder = Decoder::new(img_file).expect("Cannot create decoder"); assert_eq!(decoder.colortype().unwrap(), ColorType::Gray(16)); - let img_res = decoder.read_image(); - assert!(img_res.is_ok()); + + let image_data = match decoder.read_image().unwrap() { + DecodingResult::U16(res) => res, + _ => panic!("Wrong data type"), + }; + + let mut file = tempfile::tempfile().unwrap(); + { + let mut tiff = TiffEncoder::new(&mut file).unwrap(); + + let (width, height) = decoder.dimensions().unwrap(); + tiff.write_image::(width, height, &image_data).unwrap(); + } + file.seek(SeekFrom::Start(0)).unwrap(); + { + let mut decoder = Decoder::new(&mut file).unwrap(); + if let DecodingResult::U16(img_res) = decoder.read_image().unwrap() { + assert_eq!(image_data, img_res); + } + else { + panic!("Wrong data type"); + } + } } #[test] -fn test_rgb_u16() +fn test_rgb_u16_roundtrip() { let img_file = File::open("./tests/images/rgb-3c-16b.tiff").expect("Cannot find test image!"); let mut decoder = Decoder::new(img_file).expect("Cannot create decoder"); assert_eq!(decoder.colortype().unwrap(), ColorType::RGB(16)); let img_res = decoder.read_image(); assert!(img_res.is_ok()); + + let image_data = match decoder.read_image().unwrap() { + DecodingResult::U16(res) => res, + _ => panic!("Wrong data type"), + }; + + let mut file = tempfile::tempfile().unwrap(); + { + let mut tiff = TiffEncoder::new(&mut file).unwrap(); + + let (width, height) = decoder.dimensions().unwrap(); + tiff.write_image::(width, height, &image_data).unwrap(); + } + file.seek(SeekFrom::Start(0)).unwrap(); + { + let mut decoder = Decoder::new(&mut file).unwrap(); + if let DecodingResult::U16(img_res) = decoder.read_image().unwrap() { + assert_eq!(image_data, img_res); + } + else { + panic!("Wrong data type"); + } + } }