]> git.feebdaed.xyz Git - 0xmirror/openssh-portable.git/commitdiff
upstream: ASSERT_DOUBLE_* test helpers
authordjm@openbsd.org <djm@openbsd.org>
Fri, 5 Dec 2025 11:13:35 +0000 (11:13 +0000)
committerDamien Miller <djm@mindrot.org>
Fri, 5 Dec 2025 11:14:04 +0000 (22:14 +1100)
OpenBSD-Regress-ID: cdb5c4e95c0f00efb773ddba4056a49e33702cf9

regress/unittests/test_helper/test_helper.c
regress/unittests/test_helper/test_helper.h

index 51b80119bafa60be51d0e362b1af65d40264b191..15d7a0063cbf6f5693cfcd4c96cf2dea004aa296 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: test_helper.c,v 1.14 2025/04/15 04:00:42 djm Exp $    */
+/*     $OpenBSD: test_helper.c,v 1.15 2025/12/05 11:13:35 djm Exp $    */
 /*
  * Copyright (c) 2011 Damien Miller <djm@mindrot.org>
  *
@@ -604,6 +604,47 @@ assert_u64(const char *file, int line, const char *a1, const char *a2,
        test_die();
 }
 
+void
+assert_double(const char *file, int line, const char *a1, const char *a2,
+    double aa1, double aa2, enum test_predicate pred)
+{
+       const double epsilon = 0.000000001;
+
+       switch (pred) {
+       case TEST_EQ:
+               if (fabs(aa1 - aa2) < epsilon)
+                       return;
+               break;
+       case TEST_NE:
+               if (fabs(aa1 - aa2) >= epsilon)
+                       return;
+               break;
+       case TEST_LT:
+               if (aa1 < aa2)
+                       return;
+               break;
+       case TEST_LE:
+               if (aa1 <= aa2)
+                       return;
+               break;
+       case TEST_GT:
+               if (aa1 > aa2)
+                       return;
+               break;
+       case TEST_GE:
+               if (aa1 >= aa2)
+                       return;
+               break;
+       default:
+               abort();
+       }
+
+       test_header(file, line, a1, a2, "DOUBLE", pred);
+       fprintf(stderr, "%12s = %f\n", a1, aa1);
+       fprintf(stderr, "%12s = %f\n", a2, aa2);
+       test_die();
+}
+
 void
 assert_ptr(const char *file, int line, const char *a1, const char *a2,
     const void *aa1, const void *aa2, enum test_predicate pred)
index 4f7e2c87f28d2f696d3df84c336a05d1e5b50ebd..215513a06ef70ac4f81b029d80238cddb0f38e39 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: test_helper.h,v 1.10 2025/04/15 04:00:42 djm Exp $    */
+/*     $OpenBSD: test_helper.h,v 1.11 2025/12/05 11:13:35 djm Exp $    */
 /*
  * Copyright (c) 2011 Damien Miller <djm@mindrot.org>
  *
@@ -99,6 +99,9 @@ void assert_u32(const char *file, int line,
 void assert_u64(const char *file, int line,
     const char *a1, const char *a2,
     u_int64_t aa1, u_int64_t aa2, enum test_predicate pred);
+void assert_double(const char *file, int line,
+    const char *a1, const char *a2,
+    double aa1, double aa2, enum test_predicate pred);
 
 #define TEST_START(n)                  test_start(n)
 #define TEST_DONE()                    test_done()
@@ -285,6 +288,19 @@ void assert_u64(const char *file, int line,
 #define ASSERT_U64_GE(a1, a2) \
        assert_u64(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE)
 
+#define ASSERT_DOUBLE_EQ(a1, a2) \
+       assert_double(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_EQ)
+#define ASSERT_DOUBLE_NE(a1, a2) \
+       assert_double(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_NE)
+#define ASSERT_DOUBLE_LT(a1, a2) \
+       assert_double(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LT)
+#define ASSERT_DOUBLE_LE(a1, a2) \
+       assert_double(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_LE)
+#define ASSERT_DOUBLE_GT(a1, a2) \
+       assert_double(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GT)
+#define ASSERT_DOUBLE_GE(a1, a2) \
+       assert_double(__FILE__, __LINE__, #a1, #a2, a1, a2, TEST_GE)
+
 /* Benchmarking support */
 #define BENCH_START(name)      \
        do { \