From 117584a2ceae58d7c19e6571f6ad213da79596f5 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Mon, 11 Feb 2013 17:16:55 +0000 Subject: [PATCH] Update Boost.Array tests to use newer Boost.Test features [SVN r82822] --- test/Jamfile.v2 | 13 ++++++--- test/array0.cpp | 58 ++++++++++++----------------------------- test/array6.cpp | 7 +++-- test/array7.cpp | 6 ++--- test/array_getfail1.cpp | 7 +++-- test/array_getfail2.cpp | 6 ++--- test/array_hash.cpp | 7 +++-- 7 files changed, 40 insertions(+), 64 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index fab405e..60186e3 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -4,16 +4,21 @@ import testing ; +alias unit_test_framework + : # sources + /boost//unit_test_framework + ; + test-suite array : - [ run array0.cpp ] + [ run array0.cpp unit_test_framework : : : : array0 ] [ run array1.cpp ] [ run array2.cpp ] [ run array3.cpp ] [ run array4.cpp ] [ run array5.cpp ] - [ run array6.cpp ] - [ run array7.cpp ] + [ run array6.cpp unit_test_framework : : : : array6 ] + [ run array7.cpp unit_test_framework : : : : array7 ] [ compile-fail array_getfail1.cpp ] [ compile-fail array_getfail2.cpp ] - [ run array_hash.cpp ] + [ run array_hash.cpp unit_test_framework : : : : array_hash ] ; diff --git a/test/array0.cpp b/test/array0.cpp index d75db76..c1c047e 100644 --- a/test/array0.cpp +++ b/test/array0.cpp @@ -9,18 +9,15 @@ #include #include -namespace { -unsigned int failed_tests = 0; +#define BOOST_TEST_MAIN +#include -void fail_test( const char * reason ) { - ++failed_tests; - std::cerr << "Test failure " << failed_tests << ": " << reason << std::endl; -} +namespace { template< class T > void BadValue( const T & ) { - fail_test( "Unexpected value" ); + BOOST_CHECK ( false ); } template< class T > @@ -36,46 +33,24 @@ void RunTests() // front/back and operator[] must compile, but calling them is undefined // Likewise, all tests below should evaluate to false, avoiding undefined behaviour - if( !test_case.empty() ) { - BadValue( test_case.front() ); - } + BOOST_CHECK ( test_case.empty()); + BOOST_CHECK ( const_test_case.empty()); - if( !const_test_case.empty() ) { - BadValue( const_test_case.back() ); - } - - if( test_case.size() > 0 ) { - BadValue( test_case[ 0 ] ); - } - - if( const_test_case.max_size() > 0 ) { - BadValue( const_test_case[ 0 ] ); - } + BOOST_CHECK ( test_case.size() == 0 ); + BOOST_CHECK ( const_test_case.size() == 0 ); // Assert requirements of TR1 6.2.2.4 - if( test_case.begin() != test_case.end() ) { - fail_test( "Not an empty range" ); - } - if( test_case.cbegin() != test_case.cend() ) { - fail_test( "Not an empty range" ); - } - if( const_test_case.begin() != const_test_case.end() ) { - fail_test( "Not an empty range" ); - } - if( const_test_case.cbegin() != const_test_case.cend() ) { - fail_test( "Not an empty range" ); - } - - if( test_case.begin() == const_test_case.begin() ) { - fail_test( "iterators for different containers are not distinct" ); - } + BOOST_CHECK ( test_case.begin() == test_case.end()); + BOOST_CHECK ( test_case.cbegin() == test_case.cend()); + BOOST_CHECK ( const_test_case.begin() == const_test_case.end()); + BOOST_CHECK ( const_test_case.cbegin() == const_test_case.cend()); + BOOST_CHECK ( test_case.begin() != const_test_case.begin() ); if( test_case.data() == const_test_case.data() ) { // Value of data is unspecified in TR1, so no requirement this test pass or fail // However, it must compile! } - // Check can safely use all iterator types with std algorithms std::for_each( test_case.begin(), test_case.end(), BadValue< T > ); std::for_each( test_case.rbegin(), test_case.rend(), BadValue< T > ); @@ -87,12 +62,12 @@ void RunTests() // Check swap is well formed std::swap( test_case, test_case ); - // Check assigment operator and overloads are well formed + // Check assignment operator and overloads are well formed test_case = const_test_case; // Confirm at() throws the std lib defined exception try { - BadValue( test_case.at( 0 ) ); + BadValue( test_case.at( 0 )); } catch ( const std::out_of_range & ) { } @@ -104,12 +79,11 @@ void RunTests() } -int main() +BOOST_AUTO_TEST_CASE( test_main ) { RunTests< bool >(); RunTests< void * >(); RunTests< long double >(); RunTests< std::string >(); - return failed_tests; } diff --git a/test/array6.cpp b/test/array6.cpp index 57eb51e..3d737fd 100644 --- a/test/array6.cpp +++ b/test/array6.cpp @@ -10,8 +10,8 @@ #include #include -#include - +#define BOOST_TEST_MAIN +#include namespace { template< class T > @@ -30,12 +30,11 @@ namespace { } } -int test_main( int , char* [] ) +BOOST_AUTO_TEST_CASE( test_main ) { RunTests< bool >(); RunTests< void * >(); RunTests< long double >(); RunTests< std::string >(); - return 0; } diff --git a/test/array7.cpp b/test/array7.cpp index b3d99aa..de2ebe0 100644 --- a/test/array7.cpp +++ b/test/array7.cpp @@ -13,7 +13,8 @@ #include #endif -#include +#define BOOST_TEST_MAIN +#include namespace { @@ -49,7 +50,7 @@ namespace { } -int test_main( int , char* [] ) +BOOST_AUTO_TEST_CASE( test_main ) { RunBoostTests< bool >(); RunBoostTests< void * >(); @@ -62,6 +63,5 @@ int test_main( int , char* [] ) RunStdTests< long double >(); RunStdTests< std::string >(); #endif - return 0; } diff --git a/test/array_getfail1.cpp b/test/array_getfail1.cpp index c9540a5..3cb1f49 100644 --- a/test/array_getfail1.cpp +++ b/test/array_getfail1.cpp @@ -16,7 +16,8 @@ #include #endif -#include +#define BOOST_TEST_MAIN +#include namespace { @@ -35,9 +36,8 @@ namespace { } -int test_main( int , char* [] ) +BOOST_AUTO_TEST_CASE( test_main ) { - #ifndef BOOST_NO_CXX11_HDR_ARRAY RunStdTests< bool >(); RunStdTests< void * >(); @@ -46,6 +46,5 @@ int test_main( int , char* [] ) #else BOOST_STATIC_ASSERT ( false ); // fail on C++03 systems. #endif - return 0; } diff --git a/test/array_getfail2.cpp b/test/array_getfail2.cpp index 0b49510..e2277b0 100644 --- a/test/array_getfail2.cpp +++ b/test/array_getfail2.cpp @@ -13,7 +13,8 @@ #include #endif -#include +#define BOOST_TEST_MAIN +#include namespace { @@ -46,7 +47,7 @@ namespace { } -int test_main( int , char* [] ) +BOOST_AUTO_TEST_CASE( test_main ) { RunBoostTests< bool >(); RunBoostTests< void * >(); @@ -59,6 +60,5 @@ int test_main( int , char* [] ) RunStdTests< long double >(); RunStdTests< std::string >(); #endif - return 0; } diff --git a/test/array_hash.cpp b/test/array_hash.cpp index 0859296..a83eead 100644 --- a/test/array_hash.cpp +++ b/test/array_hash.cpp @@ -11,7 +11,8 @@ #include #include -#include +#define BOOST_TEST_MAIN +#include namespace { @@ -33,12 +34,10 @@ namespace { } -int test_main( int , char* [] ) +BOOST_AUTO_TEST_CASE( test_main ) { RunTests< int >(); RunTests< long >(); RunTests< long double >(); - - return 0; }