From 5ab08db7a412fd02861c9966d1c93c60b411e717 Mon Sep 17 00:00:00 2001 From: Beman Date: Mon, 16 Mar 2015 08:58:42 -0400 Subject: [PATCH] Use BOOST_NO_CXX11_NUMERIC_LIMITS for testing with C++03 standard libraries. Always show test output. --- test/Jamfile.v2 | 2 +- test/floating_point_test.cpp | 30 +++++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2fa4aae..efb3f74 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -24,5 +24,5 @@ project [ run endian_operations_test.cpp ] [ run endian_in_union_test.cpp ] [ run conversion_test.cpp ] - [ run floating_point_test.cpp ] + [ run floating_point_test.cpp : : : always_show_run_output ] ; diff --git a/test/floating_point_test.cpp b/test/floating_point_test.cpp index 7115ade..917a16e 100644 --- a/test/floating_point_test.cpp +++ b/test/floating_point_test.cpp @@ -116,7 +116,11 @@ namespace return tmp; } - const std::size_t n_test_cases = 16; +#ifndef BOOST_NO_CXX11_NUMERIC_LIMITS + const int n_test_cases = 15; +#else + const int n_test_cases = 14; // we do not test lowest() for C++0x std libs +#endif boost::array, n_test_cases> float_test_cases; boost::array, n_test_cases> double_test_cases; @@ -139,10 +143,12 @@ namespace double_test_cases[i++].assign("numeric_limits::max()", numeric_limits::max(), "7fefffffffffffff", "ffffffffffffef7f"); +# ifndef BOOST_NO_CXX11_NUMERIC_LIMITS float_test_cases[i].assign("numeric_limits::lowest()", numeric_limits::lowest(), "ff7fffff", "ffff7fff"); double_test_cases[i++].assign("numeric_limits::lowest()", numeric_limits::lowest(), "ffefffffffffffff", "ffffffffffffefff"); +# endif float_test_cases[i].assign("numeric_limits::epsilon()", numeric_limits::epsilon(), "34000000", "00000034"); @@ -169,10 +175,10 @@ namespace double_test_cases[i++].assign("numeric_limits::quiet_NaN()", numeric_limits::quiet_NaN(), "7ff8000000000000", "000000000000f87f"); - float_test_cases[i].assign("numeric_limits::signaling_NaN()", - numeric_limits::signaling_NaN(), "7fc00001", "0100c07f"); - double_test_cases[i++].assign("numeric_limits::signaling_NaN()", - numeric_limits::signaling_NaN(), "7ff8000000000001", "010000000000f87f"); + //float_test_cases[i].assign("numeric_limits::signaling_NaN()", + // numeric_limits::signaling_NaN(), "7fc00001", "0100c07f"); + //double_test_cases[i++].assign("numeric_limits::signaling_NaN()", + // numeric_limits::signaling_NaN(), "7ff8000000000001", "010000000000f87f"); float_test_cases[i].assign("numeric_limits::denorm_min()", numeric_limits::denorm_min(), "00000001", "01000000"); @@ -237,7 +243,9 @@ namespace cout << " has_denorm " << numeric_limits::has_denorm << "\n"; cout << " digits " << numeric_limits::digits << "\n"; cout << " digits10 " << numeric_limits::digits10 << "\n"; +# ifndef BOOST_NO_CXX11_NUMERIC_LIMITS cout << " max_digits10 " << numeric_limits::max_digits10 << "\n"; +# endif cout << " radix " << numeric_limits::radix << "\n"; cout << " min_exponent " << numeric_limits::min_exponent << "\n"; cout << " min_exponent10 " << numeric_limits::min_exponent10 << "\n"; @@ -245,7 +253,9 @@ namespace cout << " max_exponent10 " << numeric_limits::max_exponent10 << "\n"; show_value("min()", numeric_limits::min()); show_value("max()", numeric_limits::max()); +# ifndef BOOST_NO_CXX11_NUMERIC_LIMITS show_value("lowest()", numeric_limits::lowest()); +# endif show_value("epsilon()", numeric_limits::epsilon()); show_value("round_error()", numeric_limits::round_error()); show_value("infinity()", numeric_limits::infinity()); @@ -280,8 +290,18 @@ void auto_test(const char* msg, const boost::array, n_test_cases>& int cpp_main(int, char *[]) { +#ifdef BOOST_BIG_ENDIAN + cout << "platform is big endian\n"; +#else + cout << "platform is little endian\n"; +#endif cout << "byte swap intrinsics: " BOOST_ENDIAN_INTRINSIC_MSG << endl; +#ifdef BOOST_NO_CXX11_NUMERIC_LIMITS + cout << "BOOST_NO_CXX11_NUMERIC_LIMITS is defined" << endl; +#endif + + //#define BOOST_ENDIAN_FORCE_ERROR #ifdef BOOST_ENDIAN_FORCE_ERROR BOOST_TEST_MEM_EQ(1.0f, 1.0);