Skip to content

Commit 545cb37

Browse files
committed
Color tests in the middle of dynamic range
1 parent 9882fa9 commit 545cb37

1 file changed

Lines changed: 29 additions & 9 deletions

File tree

src/metadata/cicp.rs

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1582,29 +1582,49 @@ mod tests {
15821582
fn transform_pixels_srgb_16() {
15831583
// Non-constant luminance so:
15841584
// Y = dot(rgb, coefs)
1585-
let data = [u16::MAX];
1585+
let data = [u16::MAX / 2];
15861586
let color = Cicp::SRGB.into_rgb();
15871587
let rgba = color.cast_pixels::<Luma<u16>, Rgb<u8>>(&data, &no_coefficient_fallback);
1588-
assert_eq!(rgba, [u8::MAX; 3]);
1588+
assert_eq!(rgba, [127; 3]);
15891589
let luma = color.cast_pixels::<Luma<u16>, Luma<u8>>(&data, &no_coefficient_fallback);
1590-
assert_eq!(luma, [u8::MAX]);
1590+
assert_eq!(luma, [127]);
15911591
let luma_a = color.cast_pixels::<Luma<u16>, LumaA<u8>>(&data, &no_coefficient_fallback);
1592-
assert_eq!(luma_a, [u8::MAX, 255]);
1592+
assert_eq!(luma_a, [127, 255]);
1593+
1594+
let data = [u16::MAX / 2 + 1];
1595+
let color = Cicp::SRGB.into_rgb();
1596+
let rgba = color.cast_pixels::<Luma<u16>, Rgb<u8>>(&data, &no_coefficient_fallback);
1597+
assert_eq!(rgba, [128; 3]);
1598+
let luma = color.cast_pixels::<Luma<u16>, Luma<u8>>(&data, &no_coefficient_fallback);
1599+
assert_eq!(luma, [128]);
1600+
let luma_a = color.cast_pixels::<Luma<u16>, LumaA<u8>>(&data, &no_coefficient_fallback);
1601+
assert_eq!(luma_a, [128, 255]);
15931602
}
15941603

15951604
#[test]
15961605
fn transform_pixels_srgb_luma_alpha() {
15971606
// Non-constant luminance so:
15981607
// Y = dot(rgb, coefs)
1599-
let data = [u16::MAX, u16::MAX];
1608+
let data = [u16::MAX / 2, u16::MAX];
1609+
let color = Cicp::SRGB.into_rgb();
1610+
let rgba = color.cast_pixels::<LumaA<u16>, Rgb<u8>>(&data, &no_coefficient_fallback);
1611+
assert_eq!(rgba, [127; 3]);
1612+
let luma = color.cast_pixels::<LumaA<u16>, Luma<u8>>(&data, &no_coefficient_fallback);
1613+
assert_eq!(luma, [127]);
1614+
let luma = color.cast_pixels::<LumaA<u16>, LumaA<u8>>(&data, &no_coefficient_fallback);
1615+
assert_eq!(luma, [127, u8::MAX]);
1616+
let luma_a = color.cast_pixels::<LumaA<u16>, LumaA<u8>>(&data, &no_coefficient_fallback);
1617+
assert_eq!(luma_a, [127, 255]);
1618+
1619+
let data = [u16::MAX / 2 + 1, u16::MAX];
16001620
let color = Cicp::SRGB.into_rgb();
16011621
let rgba = color.cast_pixels::<LumaA<u16>, Rgb<u8>>(&data, &no_coefficient_fallback);
1602-
assert_eq!(rgba, [u8::MAX; 3]);
1622+
assert_eq!(rgba, [128; 3]);
16031623
let luma = color.cast_pixels::<LumaA<u16>, Luma<u8>>(&data, &no_coefficient_fallback);
1604-
assert_eq!(luma, [u8::MAX]);
1624+
assert_eq!(luma, [128]);
16051625
let luma = color.cast_pixels::<LumaA<u16>, LumaA<u8>>(&data, &no_coefficient_fallback);
1606-
assert_eq!(luma, [u8::MAX, u8::MAX]);
1626+
assert_eq!(luma, [128, u8::MAX]);
16071627
let luma_a = color.cast_pixels::<LumaA<u16>, LumaA<u8>>(&data, &no_coefficient_fallback);
1608-
assert_eq!(luma_a, [u8::MAX, 255]);
1628+
assert_eq!(luma_a, [128, 255]);
16091629
}
16101630
}

0 commit comments

Comments
 (0)