Index: tests/SRGBTest.cpp |
diff --git a/tests/SRGBTest.cpp b/tests/SRGBTest.cpp |
index 65bfc59b427fd07d8135ca28bc16b5459ea7201b..43ec02700f9d389eb9534879f4f8188462c285bb 100644 |
--- a/tests/SRGBTest.cpp |
+++ b/tests/SRGBTest.cpp |
@@ -11,28 +11,24 @@ |
#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. |
- 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. |
- 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. |
uint8_t srgb = linear_to_srgb(f); |
- REPORTER_ASSERT(r, srgb >= prev || tolerated_regressions > 0); |
- if (srgb < prev) { tolerated_regressions--; } |
+ REPORTER_ASSERT(r, srgb >= prev); |
prev = srgb; |
union { float flt; uint32_t bits; } pun = { f }; |