@@ -15,9 +15,28 @@ fn reftest() {
15
15
}
16
16
}
17
17
18
+ #[ test]
19
+ fn reftest_scaled ( ) {
20
+ let base = & Path :: new ( "tests" ) . join ( "reftest" ) . join ( "images" ) ;
21
+ reftest_scaled_file ( & base. join ( "rgb.jpg" ) , 500 , 333 , & base. join ( "rgb.png" ) ) ;
22
+ reftest_scaled_file ( & base. join ( "rgb.jpg" ) , 250 , 167 , & base. join ( "rgb_250x167.png" ) ) ;
23
+ reftest_scaled_file ( & base. join ( "rgb.jpg" ) , 125 , 84 , & base. join ( "rgb_125x84.png" ) ) ;
24
+ reftest_scaled_file ( & base. join ( "rgb.jpg" ) , 63 , 42 , & base. join ( "rgb_63x42.png" ) ) ;
25
+ }
26
+
18
27
fn reftest_file ( path : & Path ) {
19
28
let file = File :: open ( path) . unwrap ( ) ;
20
- let mut decoder = jpeg:: Decoder :: new ( file) ;
29
+ let decoder = jpeg:: Decoder :: new ( file) ;
30
+ reftest_decoder ( decoder, path, & path. with_extension ( "png" ) ) ;
31
+ }
32
+
33
+ fn reftest_scaled_file ( path : & Path , width : u16 , height : u16 , ref_path : & Path ) {
34
+ let file = File :: open ( path) . unwrap ( ) ;
35
+ let decoder = jpeg:: Decoder :: scaled ( file, width, height) ;
36
+ reftest_decoder ( decoder, path, & ref_path) ;
37
+ }
38
+
39
+ fn reftest_decoder < T : std:: io:: Read > ( mut decoder : jpeg:: Decoder < T > , path : & Path , ref_path : & Path ) {
21
40
let mut data = decoder. decode ( ) . expect ( & format ! ( "failed to decode file: {:?}" , path) ) ;
22
41
let info = decoder. info ( ) . unwrap ( ) ;
23
42
let mut pixel_format = info. pixel_format ;
@@ -27,7 +46,7 @@ fn reftest_file(path: &Path) {
27
46
pixel_format = jpeg:: PixelFormat :: RGB24 ;
28
47
}
29
48
30
- let ref_file = File :: open ( path . with_extension ( "png" ) ) . unwrap ( ) ;
49
+ let ref_file = File :: open ( ref_path ) . unwrap ( ) ;
31
50
let ( ref_info, mut ref_reader) = png:: Decoder :: new ( ref_file) . read_info ( ) . expect ( "png failed to read info" ) ;
32
51
33
52
assert_eq ! ( ref_info. width, info. width as u32 ) ;
0 commit comments