From 8a4bde62da09922d225234276f34a0c4809681da Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 22 Aug 2023 10:49:36 +0100 Subject: [PATCH] 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 --- testsuite/gtk/colorutils.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) 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); } } -- 2.30.2