📄 numeric_cast_test.cpp
字号:
// 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 <iostream>#include <climits>#include <cfloat> // for DBL_MAX (Peter Schmid)#include <boost/numeric/conversion/cast.hpp>#include "boost/test/minimal.hpp"# if SCHAR_MAX == LONG_MAX# error "This test program doesn't work if SCHAR_MAX == LONG_MAX"# endifusing namespace boost;using std::cout;int test_main( int argc, char * argv[] ){# 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<signed char>( small_value ); BOOST_CHECK( c == 1 ); c = 0; c = numeric_cast<signed char>( small_value ); BOOST_CHECK( c == 1 ); c = 0; c = numeric_cast<signed char>( small_negative_value ); BOOST_CHECK( c == -1 ); // These tests courtesy of Joe R NWP Swatosh<joe.r.swatosh@usace.army.mil> BOOST_CHECK( 0.0f == numeric_cast<float>( 0.0 ) ); BOOST_CHECK( 0.0 == numeric_cast<double>( 0.0 ) ); // tests which should result in errors being detected bool caught_exception = false; try { c = numeric_cast<signed char>( large_value ); } catch ( numeric::bad_numeric_cast ) { cout<<"caught bad_numeric_cast #1\n"; caught_exception = true; } BOOST_CHECK ( caught_exception ); caught_exception = false; try { c = numeric_cast<signed char>( large_negative_value ); } catch ( numeric::bad_numeric_cast ) { cout<<"caught bad_numeric_cast #2\n"; caught_exception = true; } BOOST_CHECK ( caught_exception ); unsigned long ul; caught_exception = false; try { ul = numeric_cast<unsigned long>( large_negative_value ); } catch ( numeric::bad_numeric_cast ) { cout<<"caught bad_numeric_cast #3\n"; caught_exception = true; } BOOST_CHECK ( caught_exception ); caught_exception = false; try { ul = numeric_cast<unsigned long>( small_negative_value ); } catch ( numeric::bad_numeric_cast ) { cout<<"caught bad_numeric_cast #4\n"; caught_exception = true; } BOOST_CHECK ( caught_exception ); caught_exception = false; try { numeric_cast<int>( DBL_MAX ); } catch ( numeric::bad_numeric_cast ) { cout<<"caught bad_numeric_cast #5\n"; caught_exception = true; } BOOST_CHECK ( caught_exception ); return 0 ;} // main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -