From: Simon McVittie Date: Tue, 22 Aug 2023 09:49:36 +0000 (+0100) Subject: tests: Accept slightly different numeric results X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2^2~7 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8a4bde62da09922d225234276f34a0c4809681da;p=gtk4.git tests: Accept slightly different numeric results FLT_EPSILON is the distance between 1.0 and the next distinct floating point number, and doesn't necessarily have anything to do with the precision we can expect from a series of floating-point calculations. Experimentally, 1e-6 is achievable, even on platforms with unusual floating point implementations like i387. Resolves: https://gitlab.gnome.org/GNOME/gtk/-/issues/6051 Bug-Debian: https://bugs.debian.org/1050076 Signed-off-by: Simon McVittie --- diff --git a/testsuite/gtk/colorutils.c b/testsuite/gtk/colorutils.c index b4d42e2bb2..8f0acfb5e6 100644 --- a/testsuite/gtk/colorutils.c +++ b/testsuite/gtk/colorutils.c @@ -30,6 +30,10 @@ struct { { 1, 0, 1, 5.0 / 6.0, 1, 1 }, }; +/* Close enough for float precision to match, even with some + * rounding errors */ +#define EPSILON 1e-6 + static void test_roundtrips (void) { @@ -40,13 +44,13 @@ test_roundtrips (void) g_print ("color %u\n", i); gtk_hsv_to_rgb (tests[i].h, tests[i].s, tests[i].v, &r, &g, &b); - g_assert_cmpfloat_with_epsilon (r, tests[i].r, FLT_EPSILON); - g_assert_cmpfloat_with_epsilon (g, tests[i].g, FLT_EPSILON); - g_assert_cmpfloat_with_epsilon (b, tests[i].b, FLT_EPSILON); + g_assert_cmpfloat_with_epsilon (r, tests[i].r, EPSILON); + g_assert_cmpfloat_with_epsilon (g, tests[i].g, EPSILON); + g_assert_cmpfloat_with_epsilon (b, tests[i].b, EPSILON); gtk_rgb_to_hsv (tests[i].r, tests[i].g, tests[i].b, &h, &s, &v); - g_assert_cmpfloat_with_epsilon (h, tests[i].h, FLT_EPSILON); - g_assert_cmpfloat_with_epsilon (s, tests[i].s, FLT_EPSILON); - g_assert_cmpfloat_with_epsilon (v, tests[i].v, FLT_EPSILON); + g_assert_cmpfloat_with_epsilon (h, tests[i].h, EPSILON); + g_assert_cmpfloat_with_epsilon (s, tests[i].s, EPSILON); + g_assert_cmpfloat_with_epsilon (v, tests[i].v, EPSILON); } }