Chromium Code Reviews| Index: tests/SRGBTest.cpp |
| diff --git a/tests/SRGBTest.cpp b/tests/SRGBTest.cpp |
| index 65bfc59b427fd07d8135ca28bc16b5459ea7201b..c64bf7560e462541b20935056a740bde5d175902 100644 |
| --- a/tests/SRGBTest.cpp |
| +++ b/tests/SRGBTest.cpp |
| @@ -11,24 +11,27 @@ |
| #include <math.h> |
| static uint8_t linear_to_srgb(float l) { |
| - // Round float to int, truncate that to uint8_t. |
| - return (uint8_t)Sk4f_round( sk_linear_to_srgb(Sk4f{l}) )[0]; |
| + return (uint8_t)sk_linear_to_srgb(Sk4f{l})[0]; |
| } |
| DEF_TEST(sk_linear_to_srgb, r) { |
| - // Should map 0 -> 0 and 1 -> 1. |
| - REPORTER_ASSERT(r, 0 == linear_to_srgb(0.0f)); |
| - REPORTER_ASSERT(r, 255 == linear_to_srgb(1.0f)); |
| + // All bytes should round trip. |
| + for (int i = 0; i < 256; i++) { |
| + int actual = linear_to_srgb(sk_linear_from_srgb[i]); |
| + if (i != actual) { |
| + ERRORF(r, "%d -> %d\n", i, actual); |
| + } |
| + } |
| - // Should be monotonic between 0 and 1. |
| - // We don't bother checking denorm values. |
| + // Should be (mostly) monotonic between 0 and 1. |
| int tolerated_regressions = 0; |
| #if defined(SK_ARM_HAS_NEON) |
| - // Values around 0.166016 are usually 72 but drop briefly (41 floats) down to 71. |
| + // TODO: still needed? more needed? |
|
msarett
2016/07/20 18:43:11
Update this comment.
|
| tolerated_regressions = 1; |
| #endif |
| + |
| uint8_t prev = 0; |
| - for (float f = FLT_MIN; f <= 1.0f; ) { |
| + for (float f = FLT_MIN; f <= 1.0f; ) { // We don't bother checking denorm values. |
|
msarett
2016/07/20 18:43:11
Why not? Should we?
|
| uint8_t srgb = linear_to_srgb(f); |
| REPORTER_ASSERT(r, srgb >= prev || tolerated_regressions > 0); |