forked from boostorg/endian
Rename BOOST_TEST_MEMCMP_EQ to BOOST_TEST_MEM_EQ. Add float_test to Jamfile. Add float_value_test() and double_value_test().
This commit is contained in:
@ -175,7 +175,7 @@ inline int report_errors()
|
|||||||
#define BOOST_TEST_NE(expr1,expr2) \
|
#define BOOST_TEST_NE(expr1,expr2) \
|
||||||
( ::boost::endian::detail::test_ne_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, 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))
|
(::boost::endian::detail::test_memcmp_eq_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, expr1, expr2))
|
||||||
|
|
||||||
#ifndef BOOST_NO_EXCEPTIONS
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
|
@ -24,4 +24,5 @@ project
|
|||||||
[ run endian_operations_test.cpp ]
|
[ run endian_operations_test.cpp ]
|
||||||
[ run endian_in_union_test.cpp ]
|
[ run endian_in_union_test.cpp ]
|
||||||
[ run conversion_test.cpp ]
|
[ run conversion_test.cpp ]
|
||||||
|
[ run float_test.cpp ]
|
||||||
;
|
;
|
||||||
|
@ -107,27 +107,42 @@ namespace
|
|||||||
template <class T>
|
template <class T>
|
||||||
void round_trip_test(const char* type)
|
void round_trip_test(const char* type)
|
||||||
{
|
{
|
||||||
BOOST_TEST_MEMCMP_EQ(static_cast<T>(1.0), static_cast<T>(1.0)); // reality check
|
cout << type << " round trip test..." << endl;
|
||||||
BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits<T>::min())),
|
BOOST_TEST_MEM_EQ(static_cast<T>(1.0), static_cast<T>(1.0)); // reality check
|
||||||
|
BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits<T>::min())),
|
||||||
numeric_limits<T>::min());
|
numeric_limits<T>::min());
|
||||||
BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits<T>::max())),
|
BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits<T>::max())),
|
||||||
numeric_limits<T>::max());
|
numeric_limits<T>::max());
|
||||||
BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits<T>::lowest())),
|
BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits<T>::lowest())),
|
||||||
numeric_limits<T>::lowest());
|
numeric_limits<T>::lowest());
|
||||||
BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits<T>::epsilon())),
|
BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits<T>::epsilon())),
|
||||||
numeric_limits<T>::epsilon());
|
numeric_limits<T>::epsilon());
|
||||||
BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits<T>::round_error())),
|
BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits<T>::round_error())),
|
||||||
numeric_limits<T>::round_error());
|
numeric_limits<T>::round_error());
|
||||||
BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits<T>::infinity())),
|
BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits<T>::infinity())),
|
||||||
numeric_limits<T>::infinity());
|
numeric_limits<T>::infinity());
|
||||||
BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits<T>::quiet_NaN())),
|
BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits<T>::quiet_NaN())),
|
||||||
numeric_limits<T>::quiet_NaN());
|
numeric_limits<T>::quiet_NaN());
|
||||||
BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits<T>::signaling_NaN())),
|
BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits<T>::signaling_NaN())),
|
||||||
numeric_limits<T>::signaling_NaN());
|
numeric_limits<T>::signaling_NaN());
|
||||||
BOOST_TEST_MEMCMP_EQ(endian_reverse(endian_reverse(numeric_limits<T>::denorm_min())),
|
BOOST_TEST_MEM_EQ(endian_reverse(endian_reverse(numeric_limits<T>::denorm_min())),
|
||||||
numeric_limits<T>::denorm_min());
|
numeric_limits<T>::denorm_min());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void float_value_test()
|
||||||
|
{
|
||||||
|
cout << "float value test..." << endl;
|
||||||
|
BOOST_TEST_MEM_EQ(native_to_big(numeric_limits<float>::min()), 0x00008000);
|
||||||
|
BOOST_TEST_MEM_EQ(native_to_little(numeric_limits<float>::min()), 0x00800000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void double_value_test()
|
||||||
|
{
|
||||||
|
cout << "double value test..." << endl;
|
||||||
|
BOOST_TEST_MEM_EQ(native_to_big(numeric_limits<float>::min()), 0x0000000000001000);
|
||||||
|
BOOST_TEST_MEM_EQ(native_to_little(numeric_limits<float>::min()), 0x0010000000000000);
|
||||||
|
}
|
||||||
|
|
||||||
} // unnamed namespace
|
} // unnamed namespace
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------//
|
//--------------------------------------------------------------------------------------//
|
||||||
@ -138,15 +153,17 @@ int cpp_main(int, char *[])
|
|||||||
|
|
||||||
//#define BOOST_ENDIAN_FORCE_ERROR
|
//#define BOOST_ENDIAN_FORCE_ERROR
|
||||||
#ifdef BOOST_ENDIAN_FORCE_ERROR
|
#ifdef BOOST_ENDIAN_FORCE_ERROR
|
||||||
BOOST_TEST_MEMCMP_EQ(1.0f, 1.0);
|
BOOST_TEST_MEM_EQ(1.0f, 1.0);
|
||||||
BOOST_TEST_MEMCMP_EQ(1.0f, 1.1f);
|
BOOST_TEST_MEM_EQ(1.0f, 1.1f);
|
||||||
BOOST_TEST_MEMCMP_EQ(1.0, 1.1);
|
BOOST_TEST_MEM_EQ(1.0, 1.1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
report_limits<float>("float");
|
report_limits<float>("float");
|
||||||
|
float_value_test();
|
||||||
round_trip_test<float>("float");
|
round_trip_test<float>("float");
|
||||||
|
|
||||||
report_limits<double>("double");
|
report_limits<double>("double");
|
||||||
|
double_value_test();
|
||||||
round_trip_test<double>("double");
|
round_trip_test<double>("double");
|
||||||
|
|
||||||
cout << "\n done" << endl;
|
cout << "\n done" << endl;
|
||||||
|
Reference in New Issue
Block a user