From 650812777953ecc1ddb1280c86b63fa4b5761ed6 Mon Sep 17 00:00:00 2001 From: Tim Segers Date: Mon, 2 Jan 2023 21:54:31 +0100 Subject: Add macro to compare floats with user-defined max error --- minunit/minunit.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'minunit') diff --git a/minunit/minunit.h b/minunit/minunit.h index 608fddf..a20b8b8 100644 --- a/minunit/minunit.h +++ b/minunit/minunit.h @@ -201,6 +201,22 @@ extern void (*minunit_teardown)(void); }\ ) +#define mu_assert_double_near(expected, result, maxabserr) MU__SAFE_BLOCK(\ + double minunit_tmp_e;\ + double minunit_tmp_r;\ + minunit_assert++;\ + minunit_tmp_e = (expected);\ + minunit_tmp_r = (result);\ + if (fabs(minunit_tmp_e-minunit_tmp_r) > maxabserr) {\ + int minunit_significant_figures = 1 - log10(maxabserr);\ + snprintf(minunit_last_message, MINUNIT_MESSAGE_LEN, "%s failed:\n\t%s:%d: %.*g expected but was %.*g", __func__, __FILE__, __LINE__, minunit_significant_figures, minunit_tmp_e, minunit_significant_figures, minunit_tmp_r);\ + minunit_status = 1;\ + return;\ + } else {\ + printf(".");\ + }\ +) + #define mu_assert_string_eq(expected, result) MU__SAFE_BLOCK(\ const char* minunit_tmp_e = expected;\ const char* minunit_tmp_r = result;\ -- cgit v1.2.3-70-g09d2