From 90ca4fb07edcf65355342738cd70e57230889fed Mon Sep 17 00:00:00 2001 From: joaquintides Date: Thu, 2 May 2024 09:49:11 +0200 Subject: [PATCH] avoided float-equal warnings --- test/unordered/stats_tests.cpp | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/test/unordered/stats_tests.cpp b/test/unordered/stats_tests.cpp index 98ca10c6..651ac1eb 100644 --- a/test/unordered/stats_tests.cpp +++ b/test/unordered/stats_tests.cpp @@ -15,6 +15,7 @@ #include "../helpers/helpers.hpp" #include "../helpers/random_values.hpp" #include "../helpers/test.hpp" +#include template struct unequal_allocator { @@ -40,26 +41,39 @@ template struct unequal_allocator int n_; }; +bool exact_same(double x, double y) +{ + return std::memcmp( + reinterpret_cast(&x), reinterpret_cast(&y), + sizeof(double))==0; +} + +bool not_exact_same(double x, double y) +{ + return !exact_same(x, y); +} + template void check_stat(const Stats& s, bool full) { if (full) { - BOOST_TEST_NE(s.average, 0.0); - if(s.variance) { - BOOST_TEST_NE(s.deviation, 0.0); + BOOST_TEST_GT(s.average, 0.0); + if(not_exact_same(s.variance, 0.0)) { + BOOST_TEST_GT(s.variance, 0.0); + BOOST_TEST_GT(s.deviation, 0.0); } } else { - BOOST_TEST_EQ(s.average, 0.0); - BOOST_TEST_EQ(s.variance, 0.0); - BOOST_TEST_EQ(s.deviation, 0.0); + BOOST_TEST(exact_same(s.average, 0.0)); + BOOST_TEST(exact_same(s.variance, 0.0)); + BOOST_TEST(exact_same(s.deviation, 0.0)); } } template void check_stat(const Stats& s1, const Stats& s2) { - BOOST_TEST_EQ(s1.average, s2.average); - BOOST_TEST_EQ(s1.variance, s2.variance); - BOOST_TEST_EQ(s1.deviation, s2.deviation); + BOOST_TEST(exact_same(s1.average, s2.average)); + BOOST_TEST(exact_same(s1.variance, s2.variance)); + BOOST_TEST(exact_same(s1.deviation, s2.deviation)); } template void check_insertion_stats(const Stats& s, bool full)