Fix byte-crc test for big endian platforms
This commit is contained in:
1 parent
48d52bed9b
commit
f671293bd8
1 file changed
+45
-4
+45
-4
@@ -523,7 +523,12 @@ fn test_zstd_compression() {
|
|||||||
test_image_sum_i16("int16_zstd.tif", ColorType::Gray(16), 354396);
|
test_image_sum_i16("int16_zstd.tif", ColorType::Gray(16), 354396);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_image_bytes(file: &str, expected: &[(ColorType, u32)]) {
|
fn test_image_bytes(
|
||||||
|
file: &str,
|
||||||
|
expected: &[(ColorType, u32)],
|
||||||
|
// Represent all samples as little endian, ensuring check sums on all platforms.
|
||||||
|
normalize_byte_order: fn(&mut [u8]),
|
||||||
|
) {
|
||||||
let path = PathBuf::from(TEST_IMAGE_DIR).join(file);
|
let path = PathBuf::from(TEST_IMAGE_DIR).join(file);
|
||||||
let img_file = File::open(path).expect("Cannot find test image!");
|
let img_file = File::open(path).expect("Cannot find test image!");
|
||||||
let mut decoder = Decoder::new(img_file).expect("Cannot create decoder");
|
let mut decoder = Decoder::new(img_file).expect("Cannot create decoder");
|
||||||
@@ -543,15 +548,41 @@ fn test_image_bytes(file: &str, expected: &[(ColorType, u32)]) {
|
|||||||
|
|
||||||
buffer.resize(layout.len, 0u8);
|
buffer.resize(layout.len, 0u8);
|
||||||
decoder.read_image_bytes(&mut buffer).unwrap();
|
decoder.read_image_bytes(&mut buffer).unwrap();
|
||||||
|
normalize_byte_order(&mut buffer);
|
||||||
|
|
||||||
// Well almost a crc..
|
// Well almost a crc..
|
||||||
assert_eq!(crc32fast::hash(&buffer), expected_crc);
|
assert_eq!(crc32fast::hash(&buffer), expected_crc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn byte_order_u16(bytes: &mut [u8]) {
|
||||||
|
for chunk in bytes.chunks_exact_mut(2) {
|
||||||
|
let n = u16::from_ne_bytes(chunk.try_into().unwrap());
|
||||||
|
chunk.copy_from_slice(&n.to_le_bytes());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn byte_order_u32(bytes: &mut [u8]) {
|
||||||
|
for chunk in bytes.chunks_exact_mut(4) {
|
||||||
|
let n = u32::from_ne_bytes(chunk.try_into().unwrap());
|
||||||
|
chunk.copy_from_slice(&n.to_le_bytes());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn byte_order_u64(bytes: &mut [u8]) {
|
||||||
|
for chunk in bytes.chunks_exact_mut(8) {
|
||||||
|
let n = u64::from_ne_bytes(chunk.try_into().unwrap());
|
||||||
|
chunk.copy_from_slice(&n.to_le_bytes());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn bytes_cmyk_3c_8b() {
|
fn bytes_cmyk_3c_8b() {
|
||||||
test_image_bytes("cmyk-3c-8b.tiff", &[(ColorType::CMYK(8), 2935032230)]);
|
test_image_bytes(
|
||||||
|
"cmyk-3c-8b.tiff",
|
||||||
|
&[(ColorType::CMYK(8), 2935032230)],
|
||||||
|
|_| (),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -559,17 +590,26 @@ fn bytes_gray_16b() {
|
|||||||
test_image_bytes(
|
test_image_bytes(
|
||||||
"minisblack-1c-16b.tiff",
|
"minisblack-1c-16b.tiff",
|
||||||
&[(ColorType::Gray(16), 3524597615)],
|
&[(ColorType::Gray(16), 3524597615)],
|
||||||
|
byte_order_u16,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn bytes_gray_32b() {
|
fn bytes_gray_32b() {
|
||||||
test_image_bytes("gradient-1c-32b.tiff", &[(ColorType::Gray(32), 2257036530)]);
|
test_image_bytes(
|
||||||
|
"gradient-1c-32b.tiff",
|
||||||
|
&[(ColorType::Gray(32), 2257036530)],
|
||||||
|
byte_order_u32,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn bytes_gray_u64() {
|
fn bytes_gray_u64() {
|
||||||
test_image_bytes("gradient-1c-64b.tiff", &[(ColorType::Gray(64), 2156547113)]);
|
test_image_bytes(
|
||||||
|
"gradient-1c-64b.tiff",
|
||||||
|
&[(ColorType::Gray(64), 2156547113)],
|
||||||
|
byte_order_u64,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -577,5 +617,6 @@ fn bytes_gray_f32() {
|
|||||||
test_image_bytes(
|
test_image_bytes(
|
||||||
"gradient-1c-32b-float.tiff",
|
"gradient-1c-32b-float.tiff",
|
||||||
&[(ColorType::Gray(32), 3232356730)],
|
&[(ColorType::Gray(32), 3232356730)],
|
||||||
|
byte_order_u32,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user