11//! Provides image diffing for testing.
22use glam:: { Vec3 , Vec4 , Vec4Swizzles } ;
33use image:: { DynamicImage , Luma , Rgb , Rgb32FImage , Rgba32FImage } ;
4+ use renderling_build:: { test_img_dir, test_output_dir} ;
45use snafu:: prelude:: * ;
5- use std:: path:: Path ;
66
7- pub const TEST_IMG_DIR : & str = concat ! ( std:: env!( "CARGO_WORKSPACE_DIR" ) , "test_img" ) ;
8- pub const TEST_OUTPUT_DIR : & str = concat ! ( std:: env!( "CARGO_WORKSPACE_DIR" ) , "test_output" ) ;
9- pub const WASM_TEST_OUTPUT_DIR : & str =
10- concat ! ( std:: env!( "CARGO_WORKSPACE_DIR" ) , "test_output/wasm" ) ;
117const PIXEL_MAGNITUDE_THRESHOLD : f32 = 0.1 ;
128pub const LOW_PIXEL_THRESHOLD : f32 = 0.02 ;
139const IMAGE_DIFF_THRESHOLD : f32 = 0.05 ;
1410
1511fn checkerboard_background_color ( x : u32 , y : u32 ) -> Vec3 {
1612 let size = 16 ;
1713 let x_square_index = x / size;
18- let x_grey = x_square_index % 2 == 0 ;
14+ let x_grey = x_square_index. is_multiple_of ( 2 ) ;
1915 let y_square_index = y / size;
20- let y_grey = y_square_index % 2 == 0 ;
16+ let y_grey = y_square_index. is_multiple_of ( 2 ) ;
2117 if ( x_grey && y_grey) || ( !x_grey && !y_grey) {
2218 Vec3 :: from ( [ 0.5 , 0.5 , 0.5 ] )
2319 } else {
@@ -44,7 +40,7 @@ pub struct DiffCfg {
4440 /// The name of the test.
4541 pub test_name : Option < & ' static str > ,
4642 /// The output directory to store comparisons in.
47- pub output_dir : & ' static str ,
43+ pub output_dir : std :: path :: PathBuf ,
4844}
4945
5046impl Default for DiffCfg {
@@ -53,7 +49,7 @@ impl Default for DiffCfg {
5349 pixel_threshold : PIXEL_MAGNITUDE_THRESHOLD ,
5450 image_threshold : IMAGE_DIFF_THRESHOLD ,
5551 test_name : None ,
56- output_dir : TEST_OUTPUT_DIR ,
52+ output_dir : test_output_dir ( ) ,
5753 }
5854 }
5955}
@@ -143,7 +139,7 @@ pub fn save_to(
143139}
144140
145141pub fn save ( filename : impl AsRef < std:: path:: Path > , seen : impl Into < DynamicImage > ) {
146- save_to ( TEST_OUTPUT_DIR , filename, seen) . unwrap ( )
142+ save_to ( test_output_dir ( ) , filename, seen) . unwrap ( )
147143}
148144
149145pub fn assert_eq_cfg (
@@ -185,7 +181,7 @@ pub fn assert_eq_cfg(
185181 return Ok ( ( ) ) ;
186182 }
187183
188- let mut dir = Path :: new ( output_dir) . join ( test_name. unwrap_or ( filename) ) ;
184+ let mut dir = output_dir. join ( test_name. unwrap_or ( filename) ) ;
189185 dir. set_extension ( "" ) ;
190186 std:: fs:: create_dir_all ( & dir) . expect ( "cannot create test output dir" ) ;
191187 let expected = dir. join ( "expected.png" ) ;
@@ -228,7 +224,7 @@ pub fn assert_img_eq_cfg_result(
228224 seen : impl Into < DynamicImage > ,
229225 cfg : DiffCfg ,
230226) -> Result < ( ) , String > {
231- let path = Path :: new ( TEST_IMG_DIR ) . join ( filename) ;
227+ let path = test_img_dir ( ) . join ( filename) ;
232228 let lhs = image:: open ( & path)
233229 . unwrap_or_else ( |e| panic ! ( "can't open expected image '{}': {e}" , path. display( ) , ) ) ;
234230 assert_eq_cfg ( filename, lhs, seen, cfg)
0 commit comments