// boost utility cast test program -----------------------------------------// // (C) Copyright Beman Dawes, Dave Abrahams 1999. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version including documentation. // Revision History // 28 Set 04 taken from the old cast library (Fernando Cacciola) #include #include #include // for DBL_MAX (Peter Schmid) #include #include # if SCHAR_MAX == LONG_MAX # error "This test program doesn't work if SCHAR_MAX == LONG_MAX" # endif using namespace boost; using std::cout; int main() { # ifdef NDEBUG cout << "NDEBUG is defined\n"; # else cout << "NDEBUG is not defined\n"; # endif cout << "\nBeginning tests...\n"; // test implicit_cast and numeric_cast -------------------------------------// // tests which should succeed long small_value = 1; long small_negative_value = -1; long large_value = LONG_MAX; long large_negative_value = LONG_MIN; signed char c = 0; c = large_value; // see if compiler generates warning c = numeric_cast( small_value ); BOOST_TEST( c == 1 ); c = 0; c = numeric_cast( small_value ); BOOST_TEST( c == 1 ); c = 0; c = numeric_cast( small_negative_value ); BOOST_TEST( c == -1 ); // These tests courtesy of Joe R NWP Swatosh BOOST_TEST( 0.0f == numeric_cast( 0.0 ) ); BOOST_TEST( 0.0 == numeric_cast( 0.0 ) ); // tests which should result in errors being detected BOOST_TEST_THROWS( numeric_cast(large_value), numeric::bad_numeric_cast ); BOOST_TEST_THROWS( numeric_cast(large_negative_value), numeric::bad_numeric_cast ); BOOST_TEST_THROWS( numeric_cast(large_negative_value), numeric::bad_numeric_cast ); BOOST_TEST_THROWS( numeric_cast(small_negative_value), numeric::bad_numeric_cast ); BOOST_TEST_THROWS( numeric_cast(DBL_MAX), numeric::bad_numeric_cast ); return boost::report_errors() ; } // main