From 44542694e3cbd53d3660a96260194307c500dddf Mon Sep 17 00:00:00 2001 From: Beman Date: Sat, 14 Mar 2015 09:45:50 -0400 Subject: [PATCH] Add round trip test to auto test. Remove tests made redundant by auto test. --- test/floating_point_test.cpp | 95 ++---------------------------------- 1 file changed, 4 insertions(+), 91 deletions(-) diff --git a/test/floating_point_test.cpp b/test/floating_point_test.cpp index 13d9df9..7115ade 100644 --- a/test/floating_point_test.cpp +++ b/test/floating_point_test.cpp @@ -260,90 +260,6 @@ namespace show_value("pi()", pi()); } - template - void round_trip_test(const char* type) - { - cout << type << " round trip test..." << endl; - BOOST_TEST_MEM_EQ(static_cast(1.0), static_cast(1.0)); // reality check - BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::min())), - numeric_limits::min()); - BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::max())), - numeric_limits::max()); -// BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::lowest())), -// numeric_limits::lowest()); - BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::epsilon())), - numeric_limits::epsilon()); - BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::round_error())), - numeric_limits::round_error()); - BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::infinity())), - numeric_limits::infinity()); - BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::quiet_NaN())), - numeric_limits::quiet_NaN()); - BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::signaling_NaN())), - numeric_limits::signaling_NaN()); - BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::denorm_min())), - numeric_limits::denorm_min()); - } - - void float_value_test() - { - cout << "float value test..." << endl; - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::min()), to_big(0x00800000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::min()), to_little(0x00800000)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::max()), to_big(0x7f7fffff)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::max()), to_little(0x7f7fffff)); -// BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::lowest()), to_big(0xff7fffff)); -// BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::lowest()), to_little(0xff7fffff)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::epsilon()), to_big(0x34000000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::epsilon()), to_little(0x34000000)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::round_error()), to_big(0x3f000000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::round_error()), to_little(0x3f000000)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::infinity()), to_big(0x7f800000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::infinity()), to_little(0x7f800000)); - BOOST_TEST_MEM_EQ(native_to_big(-numeric_limits::infinity()), to_big(0xff800000)); - BOOST_TEST_MEM_EQ(native_to_little(-numeric_limits::infinity()), to_little(0xff800000)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::quiet_NaN()), to_big(0x7fc00000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::quiet_NaN()), to_little(0x7fc00000)); -// BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::signaling_NaN()), to_big(0x7fc00001)); -// BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::signaling_NaN()), to_little(0x7fc00001)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::denorm_min()), to_big(0x00000001)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::denorm_min()), to_little(0x00000001)); - BOOST_TEST_MEM_EQ(native_to_big(0.0f), to_big(0x00000000)); - BOOST_TEST_MEM_EQ(native_to_little(0.0f), to_little(0x00000000)); - BOOST_TEST_MEM_EQ(native_to_big(1.0f), to_big(0x3f800000)); - BOOST_TEST_MEM_EQ(native_to_little(1.0f), to_little(0x3f800000)); - } - - void double_value_test() - { - cout << "double value test..." << endl; - BOOST_TEST_MEM_EQ(to_big(numeric_limits::min()), to_big(0x0010000000000000)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::min()), to_big(0x0010000000000000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::min()), to_little(0x0010000000000000)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::max()), to_big(0x7fefffffffffffff)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::max()), to_little(0x7fefffffffffffff)); -// BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::lowest()), to_big(0xffefffffffffffff)); -// BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::lowest()), to_little(0xffefffffffffffff)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::epsilon()), to_big(0x3cb0000000000000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::epsilon()), to_little(0x3cb0000000000000)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::round_error()), to_big(0x3fe0000000000000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::round_error()), to_little(0x3fe0000000000000)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::infinity()), to_big(0x7ff0000000000000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::infinity()), to_little(0x7ff0000000000000)); - BOOST_TEST_MEM_EQ(native_to_big(-numeric_limits::infinity()), to_big(0xfff0000000000000)); - BOOST_TEST_MEM_EQ(native_to_little(-numeric_limits::infinity()), to_little(0xfff0000000000000)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::quiet_NaN()), to_big(0x7ff8000000000000)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::quiet_NaN()), to_little(0x7ff8000000000000)); -// BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::signaling_NaN()), to_big(0x7ff8000000000001)); -// BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::signaling_NaN()), to_little(0x7ff8000000000001)); - BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::denorm_min()), to_big(0x0000000000000001ULL)); - BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::denorm_min()), to_little(0x0000000000000001ULL)); - BOOST_TEST_MEM_EQ(native_to_big(0.0), to_big(0x0000000000000000ULL)); - BOOST_TEST_MEM_EQ(native_to_little(0.0), to_little(0x0000000000000000ULL)); - BOOST_TEST_MEM_EQ(native_to_big(1.0), to_big(0x3ff0000000000000ULL)); - BOOST_TEST_MEM_EQ(native_to_little(1.0), to_little(0x3ff0000000000000ULL)); - } - template void auto_test(const char* msg, const boost::array, n_test_cases>& cases) { @@ -354,6 +270,7 @@ void auto_test(const char* msg, const boost::array, n_test_cases>& cout << " " << cases[i].desc << endl; BOOST_TEST_EQ(to_hex(native_to_big(cases[i].value)), cases[i].big); BOOST_TEST_EQ(to_hex(native_to_little(cases[i].value)), cases[i].little); + BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(cases[i].value)), cases[i].value); } } @@ -372,16 +289,12 @@ int cpp_main(int, char *[]) BOOST_TEST_MEM_EQ(1.0, 1.1); #endif + build_auto_test_cases(); + report_limits("float"); - float_value_test(); - round_trip_test("float"); + auto_test("float", float_test_cases); report_limits("double"); - double_value_test(); - round_trip_test("double"); - - build_auto_test_cases(); - auto_test("float", float_test_cases); auto_test("double", double_test_cases); cout << "\n done" << endl;