Skip to content

Commit d28ea6f

Browse files
committed
Add ref tests for IDCT scaling
The reference images were generated with djpeg: djpeg -scale 1/8 tests/reftest/images/rgb.jpg | convert - tests/reftest/images/rgb_63x42.png djpeg -scale 2/8 tests/reftest/images/rgb.jpg | convert - tests/reftest/images/rgb_125x84.png djpeg -scale 4/8 tests/reftest/images/rgb.jpg | convert - tests/reftest/images/rgb_250x167.png
1 parent 85adaf5 commit d28ea6f

File tree

4 files changed

+21
-2
lines changed

4 files changed

+21
-2
lines changed

tests/reftest/images/rgb_125x84.png

25.7 KB
Loading

tests/reftest/images/rgb_250x167.png

101 KB
Loading

tests/reftest/images/rgb_63x42.png

6.69 KB
Loading

tests/reftest/mod.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,28 @@ fn reftest() {
1515
}
1616
}
1717

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+
1827
fn reftest_file(path: &Path) {
1928
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) {
2140
let mut data = decoder.decode().expect(&format!("failed to decode file: {:?}", path));
2241
let info = decoder.info().unwrap();
2342
let mut pixel_format = info.pixel_format;
@@ -27,7 +46,7 @@ fn reftest_file(path: &Path) {
2746
pixel_format = jpeg::PixelFormat::RGB24;
2847
}
2948

30-
let ref_file = File::open(path.with_extension("png")).unwrap();
49+
let ref_file = File::open(ref_path).unwrap();
3150
let (ref_info, mut ref_reader) = png::Decoder::new(ref_file).read_info().expect("png failed to read info");
3251

3352
assert_eq!(ref_info.width, info.width as u32);

0 commit comments

Comments
 (0)