From 1a29726d349dfcfd42010e3718421009b93cb39e Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 31 Aug 2022 10:51:15 +0200 Subject: [PATCH] fix: `math_test` compile-time checks for `floor`, `ceil`, and `round` fixed Relates to #311 --- test/unit_test/static/math_test.cpp | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/test/unit_test/static/math_test.cpp b/test/unit_test/static/math_test.cpp index 02339c8c..cf4f17e2 100644 --- a/test/unit_test/static/math_test.cpp +++ b/test/unit_test/static/math_test.cpp @@ -57,7 +57,7 @@ static_assert(compare(4_q_m2)), decltype(sqrt(2_q_m))>); static_assert(compare(4_q_km2)), decltype(sqrt(2_q_km))>); static_assert(compare(4_q_ft2)), decltype(sqrt(2_q_ft))>); -#if __cpp_lib_constexpr_cmath // TODO remove once std::floor, std::ceil, and std::round is constexpr for all compilers +#if __cpp_lib_constexpr_cmath // floor // integral types static_assert(compare(1_q_s)), decltype(1_q_s)>); @@ -72,14 +72,14 @@ static_assert(compare(-999_q_ms)), decltype(-1_q_s)>) static_assert(floor(1.3_q_s) == 1_q_s); static_assert(floor(-1.3_q_s) == -2_q_s); -// static_assert(floor(1000._q_ms) == 1_q_s); // does not work due to a bug in fpow10() see #311 +static_assert(floor(1000._q_ms) == 1_q_s); static_assert(floor(1001._q_ms) == 1_q_s); static_assert(floor(1999._q_ms) == 1_q_s); static_assert(floor(-1000._q_ms) == -1_q_s); static_assert(floor(-999._q_ms) == -1_q_s); // floor with quantity -static_assert(compare>(1_q_s)), decltype(1_q_s)>); +static_assert(compare>(1_q_s)), decltype(1_q_s)>); // ceil // integral types @@ -102,7 +102,7 @@ static_assert(ceil(-1000._q_ms) == -1_q_s); static_assert(ceil(-999._q_ms) == 0_q_s); // ceil with quantity -static_assert(compare>(1_q_s)), decltype(1_q_s)>); +static_assert(compare>(1_q_s)), decltype(1_q_s)>); // round // integral types @@ -124,20 +124,20 @@ static_assert(compare(-1999_q_ms)), decltype(-2_q_s)> static_assert(round(1.3_q_s) == 1_q_s); static_assert(round(-1.3_q_s) == -1_q_s); -static_assert(compare(1000._q_ms)), decltype(1_q_s)>); -static_assert(compare(1001._q_ms)), decltype(1_q_s)>); -static_assert(compare(1499._q_ms)), decltype(1_q_s)>); -static_assert(compare(1500._q_ms)), decltype(2_q_s)>); -static_assert(compare(1999._q_ms)), decltype(2_q_s)>); +static_assert(compare(1000._q_ms)), decltype(1._q_s)>); +static_assert(compare(1001._q_ms)), decltype(1._q_s)>); +static_assert(compare(1499._q_ms)), decltype(1._q_s)>); +static_assert(compare(1500._q_ms)), decltype(2._q_s)>); +static_assert(compare(1999._q_ms)), decltype(2._q_s)>); -static_assert(compare(-1000._q_ms)), decltype(-1_q_s)>); -static_assert(compare(-1001._q_ms)), decltype(-1_q_s)>); -static_assert(compare(-1499._q_ms)), decltype(-1_q_s)>); -static_assert(compare(-1500._q_ms)), decltype(-2_q_s)>); -static_assert(compare(-1999._q_ms)), decltype(-2_q_s)>); +static_assert(compare(-1000._q_ms)), decltype(-1._q_s)>); +static_assert(compare(-1001._q_ms)), decltype(-1._q_s)>); +static_assert(compare(-1499._q_ms)), decltype(-1._q_s)>); +static_assert(compare(-1500._q_ms)), decltype(-2._q_s)>); +static_assert(compare(-1999._q_ms)), decltype(-2._q_s)>); // round with quantity -static_assert(compare>(1_q_s)), decltype(1_q_s)>); +static_assert(compare>(1_q_s)), decltype(1_q_s)>); #endif } // namespace