diff --git a/test/check_integral_constant.hpp b/test/check_integral_constant.hpp index 5258c79..8cfd06a 100644 --- a/test/check_integral_constant.hpp +++ b/test/check_integral_constant.hpp @@ -62,7 +62,7 @@ namespace boost{ if(!::boost::detail::tt_compare((int)expression, alternate_value))\ BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had an invalid value (found " << ::boost::detail::integral_constant<(int)(expression)>::value() << ", expected " << expected_value << ")" );\ else\ - BOOST_WARN_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" did not have the value we wish it to have (found " << ::boost::detail::integral_constant<(int)(expression)>::value() << ", expected " << expected_value << ")" ) + BOOST_WARN_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" did not have the value we wish it to have (found " << ::boost::detail::integral_constant<(int)(expression)>::value() << ", expected " << expected_value << ")" ) }//detail diff --git a/test/has_nothrow_assign_test.cpp b/test/has_nothrow_assign_test.cpp index 74ed897..2689326 100644 --- a/test/has_nothrow_assign_test.cpp +++ b/test/has_nothrow_assign_test.cpp @@ -154,6 +154,9 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::valu BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, true, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); diff --git a/test/has_nothrow_constr_test.cpp b/test/has_nothrow_constr_test.cpp index 4968d03..bf2cdb8 100644 --- a/test/has_nothrow_constr_test.cpp +++ b/test/has_nothrow_constr_test.cpp @@ -154,6 +154,9 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor: BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, true, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); diff --git a/test/has_nothrow_copy_test.cpp b/test/has_nothrow_copy_test.cpp index 4806072..d68ab1e 100644 --- a/test/has_nothrow_copy_test.cpp +++ b/test/has_nothrow_copy_test.cpp @@ -149,11 +149,13 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true); // cases we would like to succeed but can't implement in the language: -BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); diff --git a/test/has_trivial_copy_test.cpp b/test/has_trivial_copy_test.cpp index b665d66..136a273 100644 --- a/test/has_trivial_copy_test.cpp +++ b/test/has_trivial_copy_test.cpp @@ -149,7 +149,6 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true); // cases we would like to succeed but can't implement in the language: -BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true, false); diff --git a/test/has_virtual_destructor_test.cpp b/test/has_virtual_destructor_test.cpp index 612fdd8..e92b9ec 100755 --- a/test/has_virtual_destructor_test.cpp +++ b/test/has_virtual_destructor_test.cpp @@ -36,25 +36,22 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, true, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); #ifndef BOOST_NO_STD_LOCALE -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor >::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor >::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor >::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor >::value, false); -// some libraries don't make this one a polymorphic class, since this is a library -// rather than a type traits issue we won't test this for now... -//BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor >::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor >::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor >::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor >::value, true, false); #endif -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_virtual_destructor::value, true, false); TT_TEST_END diff --git a/test/test.hpp b/test/test.hpp index c3c2f63..9a4c116 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -55,7 +55,7 @@ class unit_initialiser public: unit_initialiser(void (*f)(), const char* name) { - get_master_unit("Type Traits")->add( ::boost::unit_test_framework::create_test_case(f, name) ); + get_master_unit("Type Traits")->add( BOOST_TEST_CASE(f) ); } }; @@ -201,6 +201,8 @@ typedef const r_type cr_type; struct POD_UDT { int x; }; struct empty_UDT { + empty_UDT(){}; + empty_UDT(const empty_UDT&){}; ~empty_UDT(){}; empty_UDT& operator=(const empty_UDT&){ return *this; } bool operator==(const empty_UDT&)const @@ -208,7 +210,6 @@ struct empty_UDT }; struct empty_POD_UDT { - empty_POD_UDT& operator=(const empty_POD_UDT&){ return *this; } bool operator==(const empty_POD_UDT&)const { return true; } }; @@ -229,6 +230,36 @@ union empty_union_UDT }; union empty_POD_union_UDT{}; +struct nothrow_copy_UDT +{ + nothrow_copy_UDT(); + nothrow_copy_UDT(const nothrow_copy_UDT&)throw(); + ~nothrow_copy_UDT(){}; + nothrow_copy_UDT& operator=(const nothrow_copy_UDT&){ return *this; } + bool operator==(const nothrow_copy_UDT&)const + { return true; } +}; + +struct nothrow_assign_UDT +{ + nothrow_assign_UDT(); + nothrow_assign_UDT(const nothrow_assign_UDT&); + ~nothrow_assign_UDT(){}; + nothrow_assign_UDT& operator=(const nothrow_assign_UDT&)throw(){ return *this; } + bool operator==(const nothrow_assign_UDT&)const + { return true; } +}; + +struct nothrow_construct_UDT +{ + nothrow_construct_UDT()throw(); + nothrow_construct_UDT(const nothrow_construct_UDT&); + ~nothrow_construct_UDT(){}; + nothrow_construct_UDT& operator=(const nothrow_construct_UDT&){ return *this; } + bool operator==(const nothrow_construct_UDT&)const + { return true; } +}; + class Base { }; class Derived : public Base { }; @@ -292,6 +323,9 @@ struct non_empty : private boost::noncopyable // abstract base classes: struct test_abc1 { + test_abc1(); + test_abc1(const test_abc1&); + test_abc1& operator=(const test_abc1&); virtual void foo() = 0; virtual void foo2() = 0; };