Diffstat (limited to 'tests/test.rs')
| -rw-r--r-- | tests/test.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/test.rs b/tests/test.rs new file mode 100644 index 0000000..2d9b67b --- /dev/null +++ b/tests/test.rs @@ -0,0 +1,43 @@ +use fimg::{indexed::IndexedImage, Image}; + +fn test( + k: &'static str, + f: for<'a> fn(Image<&[f32], 4>, &'a [[f32; 4]]) -> IndexedImage<Box<[u32]>, &'a [[f32; 4]]>, +) { + let pal = fimg::Image::<Box<[f32]>, 4>::from(fimg::Image::open("tdata/endesga.png").as_ref()); + let pal = pal.flatten(); + // let d = f(fimg::Image::open("tdata/small_cat.png").to_f32().as_ref(), &pal).to().to_u8().show(); + let d = f( + fimg::Image::open("tdata/small_cat.png").to_f32().as_ref(), + &pal, + ) + .into_raw_parts() + .0 + .take_buffer() + .iter() + .map(|&x| x as u8) + .collect::<Vec<_>>(); + match std::fs::read(format!("tests/tres/{k}")) { + Ok(x) => assert!(x == d, "{k}! failed."), + Err(_) => std::fs::write(format!("tests/tres/{k}"), d).unwrap(), + } +} +macro_rules! test { + ($x:ident, $call:path) => { + #[test] + fn $x() { + test(stringify!($x), $call); + } + }; +} + +test!(o2x2, remapper::ordered::bayer2x2); +test!(o4x4, remapper::ordered::bayer4x4); +test!(o8x8, remapper::ordered::bayer8x8); +test!(o16x16, remapper::ordered::bayer16x16); +test!(o32x32, remapper::ordered::bayer32x32); +test!(o64x64, remapper::ordered::bayer64x64); + +// test!(s1, remapper::diffusion::sierra::sierra::<241>); +// test!(s2, remapper::diffusion::sierra::sierra_two::<241>); +// test!(s3, remapper::diffusion::sierra::sierra_lite::<241>); |