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_operations_test.cpp ]
|
||||||
[ run endian_in_union_test.cpp ]
|
[ run endian_in_union_test.cpp ]
|
||||||
[ run conversion_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;
|
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<float>, n_test_cases> float_test_cases;
|
||||||
boost::array<test_case<double>, n_test_cases> double_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()",
|
double_test_cases[i++].assign("numeric_limits<double>::max()",
|
||||||
numeric_limits<double>::max(), "7fefffffffffffff", "ffffffffffffef7f");
|
numeric_limits<double>::max(), "7fefffffffffffff", "ffffffffffffef7f");
|
||||||
|
|
||||||
|
# ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
|
||||||
float_test_cases[i].assign("numeric_limits<float>::lowest()",
|
float_test_cases[i].assign("numeric_limits<float>::lowest()",
|
||||||
numeric_limits<float>::lowest(), "ff7fffff", "ffff7fff");
|
numeric_limits<float>::lowest(), "ff7fffff", "ffff7fff");
|
||||||
double_test_cases[i++].assign("numeric_limits<double>::lowest()",
|
double_test_cases[i++].assign("numeric_limits<double>::lowest()",
|
||||||
numeric_limits<double>::lowest(), "ffefffffffffffff", "ffffffffffffefff");
|
numeric_limits<double>::lowest(), "ffefffffffffffff", "ffffffffffffefff");
|
||||||
|
# endif
|
||||||
|
|
||||||
float_test_cases[i].assign("numeric_limits<float>::epsilon()",
|
float_test_cases[i].assign("numeric_limits<float>::epsilon()",
|
||||||
numeric_limits<float>::epsilon(), "34000000", "00000034");
|
numeric_limits<float>::epsilon(), "34000000", "00000034");
|
||||||
@ -169,10 +175,10 @@ namespace
|
|||||||
double_test_cases[i++].assign("numeric_limits<double>::quiet_NaN()",
|
double_test_cases[i++].assign("numeric_limits<double>::quiet_NaN()",
|
||||||
numeric_limits<double>::quiet_NaN(), "7ff8000000000000", "000000000000f87f");
|
numeric_limits<double>::quiet_NaN(), "7ff8000000000000", "000000000000f87f");
|
||||||
|
|
||||||
float_test_cases[i].assign("numeric_limits<float>::signaling_NaN()",
|
//float_test_cases[i].assign("numeric_limits<float>::signaling_NaN()",
|
||||||
numeric_limits<float>::signaling_NaN(), "7fc00001", "0100c07f");
|
// numeric_limits<float>::signaling_NaN(), "7fc00001", "0100c07f");
|
||||||
double_test_cases[i++].assign("numeric_limits<double>::signaling_NaN()",
|
//double_test_cases[i++].assign("numeric_limits<double>::signaling_NaN()",
|
||||||
numeric_limits<double>::signaling_NaN(), "7ff8000000000001", "010000000000f87f");
|
// numeric_limits<double>::signaling_NaN(), "7ff8000000000001", "010000000000f87f");
|
||||||
|
|
||||||
float_test_cases[i].assign("numeric_limits<float>::denorm_min()",
|
float_test_cases[i].assign("numeric_limits<float>::denorm_min()",
|
||||||
numeric_limits<float>::denorm_min(), "00000001", "01000000");
|
numeric_limits<float>::denorm_min(), "00000001", "01000000");
|
||||||
@ -237,7 +243,9 @@ namespace
|
|||||||
cout << " has_denorm " << numeric_limits<T>::has_denorm << "\n";
|
cout << " has_denorm " << numeric_limits<T>::has_denorm << "\n";
|
||||||
cout << " digits " << numeric_limits<T>::digits << "\n";
|
cout << " digits " << numeric_limits<T>::digits << "\n";
|
||||||
cout << " digits10 " << numeric_limits<T>::digits10 << "\n";
|
cout << " digits10 " << numeric_limits<T>::digits10 << "\n";
|
||||||
|
# ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
|
||||||
cout << " max_digits10 " << numeric_limits<T>::max_digits10 << "\n";
|
cout << " max_digits10 " << numeric_limits<T>::max_digits10 << "\n";
|
||||||
|
# endif
|
||||||
cout << " radix " << numeric_limits<T>::radix << "\n";
|
cout << " radix " << numeric_limits<T>::radix << "\n";
|
||||||
cout << " min_exponent " << numeric_limits<T>::min_exponent << "\n";
|
cout << " min_exponent " << numeric_limits<T>::min_exponent << "\n";
|
||||||
cout << " min_exponent10 " << numeric_limits<T>::min_exponent10 << "\n";
|
cout << " min_exponent10 " << numeric_limits<T>::min_exponent10 << "\n";
|
||||||
@ -245,7 +253,9 @@ namespace
|
|||||||
cout << " max_exponent10 " << numeric_limits<T>::max_exponent10 << "\n";
|
cout << " max_exponent10 " << numeric_limits<T>::max_exponent10 << "\n";
|
||||||
show_value("min()", numeric_limits<T>::min());
|
show_value("min()", numeric_limits<T>::min());
|
||||||
show_value("max()", numeric_limits<T>::max());
|
show_value("max()", numeric_limits<T>::max());
|
||||||
|
# ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
|
||||||
show_value("lowest()", numeric_limits<T>::lowest());
|
show_value("lowest()", numeric_limits<T>::lowest());
|
||||||
|
# endif
|
||||||
show_value("epsilon()", numeric_limits<T>::epsilon());
|
show_value("epsilon()", numeric_limits<T>::epsilon());
|
||||||
show_value("round_error()", numeric_limits<T>::round_error());
|
show_value("round_error()", numeric_limits<T>::round_error());
|
||||||
show_value("infinity()", numeric_limits<T>::infinity());
|
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 *[])
|
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;
|
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
|
//#define BOOST_ENDIAN_FORCE_ERROR
|
||||||
#ifdef BOOST_ENDIAN_FORCE_ERROR
|
#ifdef BOOST_ENDIAN_FORCE_ERROR
|
||||||
BOOST_TEST_MEM_EQ(1.0f, 1.0);
|
BOOST_TEST_MEM_EQ(1.0f, 1.0);
|
||||||
|
Reference in New Issue
Block a user