forked from boostorg/endian
Use BOOST_NO_CXX11_NUMERIC_LIMITS for testing with C++03 standard libraries. Always show test output.
This commit is contained in:
@ -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 : : : <test-info>always_show_run_output ]
|
||||
;
|
||||
|
@ -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<test_case<float>, n_test_cases> float_test_cases;
|
||||
boost::array<test_case<double>, n_test_cases> double_test_cases;
|
||||
|
||||
@ -139,10 +143,12 @@ namespace
|
||||
double_test_cases[i++].assign("numeric_limits<double>::max()",
|
||||
numeric_limits<double>::max(), "7fefffffffffffff", "ffffffffffffef7f");
|
||||
|
||||
# ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
|
||||
float_test_cases[i].assign("numeric_limits<float>::lowest()",
|
||||
numeric_limits<float>::lowest(), "ff7fffff", "ffff7fff");
|
||||
double_test_cases[i++].assign("numeric_limits<double>::lowest()",
|
||||
numeric_limits<double>::lowest(), "ffefffffffffffff", "ffffffffffffefff");
|
||||
# endif
|
||||
|
||||
float_test_cases[i].assign("numeric_limits<float>::epsilon()",
|
||||
numeric_limits<float>::epsilon(), "34000000", "00000034");
|
||||
@ -169,10 +175,10 @@ namespace
|
||||
double_test_cases[i++].assign("numeric_limits<double>::quiet_NaN()",
|
||||
numeric_limits<double>::quiet_NaN(), "7ff8000000000000", "000000000000f87f");
|
||||
|
||||
float_test_cases[i].assign("numeric_limits<float>::signaling_NaN()",
|
||||
numeric_limits<float>::signaling_NaN(), "7fc00001", "0100c07f");
|
||||
double_test_cases[i++].assign("numeric_limits<double>::signaling_NaN()",
|
||||
numeric_limits<double>::signaling_NaN(), "7ff8000000000001", "010000000000f87f");
|
||||
//float_test_cases[i].assign("numeric_limits<float>::signaling_NaN()",
|
||||
// numeric_limits<float>::signaling_NaN(), "7fc00001", "0100c07f");
|
||||
//double_test_cases[i++].assign("numeric_limits<double>::signaling_NaN()",
|
||||
// numeric_limits<double>::signaling_NaN(), "7ff8000000000001", "010000000000f87f");
|
||||
|
||||
float_test_cases[i].assign("numeric_limits<float>::denorm_min()",
|
||||
numeric_limits<float>::denorm_min(), "00000001", "01000000");
|
||||
@ -237,7 +243,9 @@ namespace
|
||||
cout << " has_denorm " << numeric_limits<T>::has_denorm << "\n";
|
||||
cout << " digits " << numeric_limits<T>::digits << "\n";
|
||||
cout << " digits10 " << numeric_limits<T>::digits10 << "\n";
|
||||
# ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
|
||||
cout << " max_digits10 " << numeric_limits<T>::max_digits10 << "\n";
|
||||
# endif
|
||||
cout << " radix " << numeric_limits<T>::radix << "\n";
|
||||
cout << " min_exponent " << numeric_limits<T>::min_exponent << "\n";
|
||||
cout << " min_exponent10 " << numeric_limits<T>::min_exponent10 << "\n";
|
||||
@ -245,7 +253,9 @@ namespace
|
||||
cout << " max_exponent10 " << numeric_limits<T>::max_exponent10 << "\n";
|
||||
show_value("min()", numeric_limits<T>::min());
|
||||
show_value("max()", numeric_limits<T>::max());
|
||||
# ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
|
||||
show_value("lowest()", numeric_limits<T>::lowest());
|
||||
# endif
|
||||
show_value("epsilon()", numeric_limits<T>::epsilon());
|
||||
show_value("round_error()", numeric_limits<T>::round_error());
|
||||
show_value("infinity()", numeric_limits<T>::infinity());
|
||||
@ -280,8 +290,18 @@ void auto_test(const char* msg, const boost::array<test_case<T>, 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);
|
||||
|
Reference in New Issue
Block a user