diff --git a/include/boost/endian/detail/lightweight_test.hpp b/include/boost/endian/detail/lightweight_test.hpp index beaf0f4..50a42ec 100644 --- a/include/boost/endian/detail/lightweight_test.hpp +++ b/include/boost/endian/detail/lightweight_test.hpp @@ -175,7 +175,7 @@ inline int report_errors() #define BOOST_TEST_NE(expr1,expr2) \ ( ::boost::endian::detail::test_ne_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, expr1, expr2) ) -#define BOOST_TEST_MEMCMP_EQ(expr1,expr2) \ +#define BOOST_TEST_MEM_EQ(expr1,expr2) \ (::boost::endian::detail::test_memcmp_eq_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, expr1, expr2)) #ifndef BOOST_NO_EXCEPTIONS diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index b1fda76..6f60b7c 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -24,4 +24,5 @@ project [ run endian_operations_test.cpp ] [ run endian_in_union_test.cpp ] [ run conversion_test.cpp ] + [ run float_test.cpp ] ; diff --git a/test/float_test.cpp b/test/float_test.cpp index 7ed3a3f..e47fceb 100644 --- a/test/float_test.cpp +++ b/test/float_test.cpp @@ -107,27 +107,42 @@ namespace template void round_trip_test(const char* type) { - BOOST_TEST_MEMCMP_EQ(static_cast(1.0), static_cast(1.0)); // reality check - BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits::min())), + 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_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits::max())), + BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::max())), numeric_limits::max()); - BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits::lowest())), + BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::lowest())), numeric_limits::lowest()); - BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits::epsilon())), + BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::epsilon())), numeric_limits::epsilon()); - BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits::round_error())), + BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::round_error())), numeric_limits::round_error()); - BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits::infinity())), + BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::infinity())), numeric_limits::infinity()); - BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits::quiet_NaN())), + BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::quiet_NaN())), numeric_limits::quiet_NaN()); - BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits::signaling_NaN())), + BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits::signaling_NaN())), numeric_limits::signaling_NaN()); - BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits::denorm_min())), + 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()), 0x00008000); + BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::min()), 0x00800000); + } + + void double_value_test() + { + cout << "double value test..." << endl; + BOOST_TEST_MEM_EQ(native_to_big(numeric_limits::min()), 0x0000000000001000); + BOOST_TEST_MEM_EQ(native_to_little(numeric_limits::min()), 0x0010000000000000); + } + } // unnamed namespace //--------------------------------------------------------------------------------------// @@ -138,15 +153,17 @@ int cpp_main(int, char *[]) //#define BOOST_ENDIAN_FORCE_ERROR #ifdef BOOST_ENDIAN_FORCE_ERROR - BOOST_TEST_MEMCMP_EQ(1.0f, 1.0); - BOOST_TEST_MEMCMP_EQ(1.0f, 1.1f); - BOOST_TEST_MEMCMP_EQ(1.0, 1.1); + BOOST_TEST_MEM_EQ(1.0f, 1.0); + BOOST_TEST_MEM_EQ(1.0f, 1.1f); + BOOST_TEST_MEM_EQ(1.0, 1.1); #endif report_limits("float"); + float_value_test(); round_trip_test("float"); report_limits("double"); + double_value_test(); round_trip_test("double"); cout << "\n done" << endl;