diff --git a/test/Jamfile b/test/Jamfile index cdb6b42..29c69cd 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -441,6 +441,18 @@ test-suite type_traits : ] + [ run $(TYPE_TRAIT_PATH)is_stateless_test.cpp + $(TYPE_TRAIT_PATH)type_traits_init + $(TEST_LIB_PATH)unit_test_framework + : + --report_level=detailed --build_info=yes --log_level=messages + : + : + $(BOOST_ROOT) + : + ] + + [ run $(TYPE_TRAIT_PATH)is_union_test.cpp $(TYPE_TRAIT_PATH)type_traits_init $(TEST_LIB_PATH)unit_test_framework @@ -585,18 +597,6 @@ test-suite type_traits : ] - [ run $(TYPE_TRAIT_PATH)tricky_incomplete_type_test.cpp - $(TYPE_TRAIT_PATH)type_traits_init - $(TEST_LIB_PATH)unit_test_framework - : - --report_level=detailed --build_info=yes --log_level=messages - : - : - $(BOOST_ROOT) - : - ] - - [ run $(TYPE_TRAIT_PATH)tricky_partial_specialization_test.cpp $(TYPE_TRAIT_PATH)type_traits_init $(TEST_LIB_PATH)unit_test_framework @@ -621,7 +621,7 @@ test-suite type_traits : ] - [ run $(TYPE_TRAIT_PATH)type_with_alignment_test.cpp $(TYPE_TRAIT_PATH)tricky_partial_specialization_test.cpp $(TYPE_TRAIT_PATH)tricky_incomplete_type_test.cpp $(TYPE_TRAIT_PATH)tricky_function_type_test.cpp $(TYPE_TRAIT_PATH)tricky_add_pointer_test.cpp $(TYPE_TRAIT_PATH)tricky_abstract_type_test.cpp $(TYPE_TRAIT_PATH)remove_volatile_test.cpp $(TYPE_TRAIT_PATH)remove_reference_test.cpp $(TYPE_TRAIT_PATH)remove_pointer_test.cpp $(TYPE_TRAIT_PATH)remove_cv_test.cpp $(TYPE_TRAIT_PATH)remove_const_test.cpp $(TYPE_TRAIT_PATH)remove_bounds_test.cpp $(TYPE_TRAIT_PATH)is_volatile_test.cpp $(TYPE_TRAIT_PATH)is_void_test.cpp $(TYPE_TRAIT_PATH)is_union_test.cpp $(TYPE_TRAIT_PATH)is_scalar_test.cpp $(TYPE_TRAIT_PATH)is_same_test.cpp $(TYPE_TRAIT_PATH)is_reference_test.cpp $(TYPE_TRAIT_PATH)is_polymorphic_test.cpp $(TYPE_TRAIT_PATH)is_pointer_test.cpp $(TYPE_TRAIT_PATH)is_pod_test.cpp $(TYPE_TRAIT_PATH)is_object_test.cpp $(TYPE_TRAIT_PATH)is_member_pointer_test.cpp $(TYPE_TRAIT_PATH)is_member_function_pointer_test.cpp $(TYPE_TRAIT_PATH)is_integral_test.cpp $(TYPE_TRAIT_PATH)is_fundamental_test.cpp $(TYPE_TRAIT_PATH)is_function_test.cpp $(TYPE_TRAIT_PATH)is_float_test.cpp $(TYPE_TRAIT_PATH)is_enum_test.cpp $(TYPE_TRAIT_PATH)is_empty_test.cpp $(TYPE_TRAIT_PATH)is_convertible_test.cpp $(TYPE_TRAIT_PATH)is_const_test.cpp $(TYPE_TRAIT_PATH)is_compound_test.cpp $(TYPE_TRAIT_PATH)is_class_test.cpp $(TYPE_TRAIT_PATH)is_base_and_derived_test.cpp $(TYPE_TRAIT_PATH)is_array_test.cpp $(TYPE_TRAIT_PATH)is_arithmetic_test.cpp $(TYPE_TRAIT_PATH)has_trivial_destructor_test.cpp $(TYPE_TRAIT_PATH)has_trivial_copy_test.cpp $(TYPE_TRAIT_PATH)has_trivial_constructor_test.cpp $(TYPE_TRAIT_PATH)has_trivial_assign_test.cpp $(TYPE_TRAIT_PATH)has_nothrow_copy_test.cpp $(TYPE_TRAIT_PATH)has_nothrow_constructor_test.cpp $(TYPE_TRAIT_PATH)has_nothrow_assign_test.cpp $(TYPE_TRAIT_PATH)function_traits_test.cpp $(TYPE_TRAIT_PATH)alignment_of_test.cpp $(TYPE_TRAIT_PATH)add_volatile_test.cpp $(TYPE_TRAIT_PATH)add_reference_test.cpp $(TYPE_TRAIT_PATH)add_pointer_test.cpp $(TYPE_TRAIT_PATH)add_const_test.cpp + [ run $(TYPE_TRAIT_PATH)type_with_alignment_test.cpp $(TYPE_TRAIT_PATH)tricky_partial_specialization_test.cpp $(TYPE_TRAIT_PATH)tricky_function_type_test.cpp $(TYPE_TRAIT_PATH)tricky_add_pointer_test.cpp $(TYPE_TRAIT_PATH)tricky_abstract_type_test.cpp $(TYPE_TRAIT_PATH)remove_volatile_test.cpp $(TYPE_TRAIT_PATH)remove_reference_test.cpp $(TYPE_TRAIT_PATH)remove_pointer_test.cpp $(TYPE_TRAIT_PATH)remove_cv_test.cpp $(TYPE_TRAIT_PATH)remove_const_test.cpp $(TYPE_TRAIT_PATH)remove_bounds_test.cpp $(TYPE_TRAIT_PATH)is_volatile_test.cpp $(TYPE_TRAIT_PATH)is_void_test.cpp $(TYPE_TRAIT_PATH)is_union_test.cpp $(TYPE_TRAIT_PATH)is_stateless_test.cpp $(TYPE_TRAIT_PATH)is_scalar_test.cpp $(TYPE_TRAIT_PATH)is_same_test.cpp $(TYPE_TRAIT_PATH)is_reference_test.cpp $(TYPE_TRAIT_PATH)is_polymorphic_test.cpp $(TYPE_TRAIT_PATH)is_pointer_test.cpp $(TYPE_TRAIT_PATH)is_pod_test.cpp $(TYPE_TRAIT_PATH)is_object_test.cpp $(TYPE_TRAIT_PATH)is_member_pointer_test.cpp $(TYPE_TRAIT_PATH)is_member_function_pointer_test.cpp $(TYPE_TRAIT_PATH)is_integral_test.cpp $(TYPE_TRAIT_PATH)is_fundamental_test.cpp $(TYPE_TRAIT_PATH)is_function_test.cpp $(TYPE_TRAIT_PATH)is_float_test.cpp $(TYPE_TRAIT_PATH)is_enum_test.cpp $(TYPE_TRAIT_PATH)is_empty_test.cpp $(TYPE_TRAIT_PATH)is_convertible_test.cpp $(TYPE_TRAIT_PATH)is_const_test.cpp $(TYPE_TRAIT_PATH)is_compound_test.cpp $(TYPE_TRAIT_PATH)is_class_test.cpp $(TYPE_TRAIT_PATH)is_base_and_derived_test.cpp $(TYPE_TRAIT_PATH)is_array_test.cpp $(TYPE_TRAIT_PATH)is_arithmetic_test.cpp $(TYPE_TRAIT_PATH)has_trivial_destructor_test.cpp $(TYPE_TRAIT_PATH)has_trivial_copy_test.cpp $(TYPE_TRAIT_PATH)has_trivial_constructor_test.cpp $(TYPE_TRAIT_PATH)has_trivial_assign_test.cpp $(TYPE_TRAIT_PATH)has_nothrow_copy_test.cpp $(TYPE_TRAIT_PATH)has_nothrow_constructor_test.cpp $(TYPE_TRAIT_PATH)has_nothrow_assign_test.cpp $(TYPE_TRAIT_PATH)function_traits_test.cpp $(TYPE_TRAIT_PATH)alignment_of_test.cpp $(TYPE_TRAIT_PATH)add_volatile_test.cpp $(TYPE_TRAIT_PATH)add_reference_test.cpp $(TYPE_TRAIT_PATH)add_pointer_test.cpp $(TYPE_TRAIT_PATH)add_const_test.cpp $(TYPE_TRAIT_PATH)type_traits_init $(TEST_LIB_PATH)unit_test_framework : diff --git a/test/check_integral_constant.hpp b/test/check_integral_constant.hpp index f812774..5d73e58 100644 --- a/test/check_integral_constant.hpp +++ b/test/check_integral_constant.hpp @@ -31,13 +31,13 @@ namespace boost{ { return static_cast(found) == expected; } #define BOOST_CHECK_INTEGRAL_CONSTANT(expression, expected_value)\ - if(!::boost::detail::tt_compare(::boost::detail::integral_constant<(expression)>::value(), expression)){\ + if(!::boost::detail::tt_compare(::boost::detail::integral_constant<(int)(expression)>::value(), expression)){\ BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had differing values depending upon whether it was used as an integral constant expression or not");\ }else{\ BOOST_CHECK_MESSAGE(true, "Validating Integral Constant Expression: \"" << BOOST_STRINGIZE(expression) << "\"");\ }\ if(!::boost::detail::tt_compare(expression, expected_value))\ - BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had an invalid value (found " << ::boost::detail::integral_constant<(expression)>::value() << ", expected " << expected_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 << ")" ) /* macro: @@ -49,16 +49,16 @@ namespace boost{ */ #define BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(expression, expected_value, alternate_value)\ - if(!::boost::detail::tt_compare(::boost::detail::integral_constant<(expression)>::value(), expression)){\ + if(!::boost::detail::tt_compare(::boost::detail::integral_constant<(int)(expression)>::value(), expression)){\ BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had differing values depending upon whether it was used as an integral constant expression or not");\ }else{\ BOOST_CHECK_MESSAGE(true, "Validating Integral Constant Expression: \"" << BOOST_STRINGIZE(expression) << "\"");\ }\ if(!::boost::detail::tt_compare(expression, expected_value))\ if(!::boost::detail::tt_compare(expression, alternate_value))\ - BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression) << "\" had an invalid value (found " << ::boost::detail::integral_constant<(expression)>::value() << ", expected " << expected_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<(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 @@ -68,3 +68,4 @@ namespace boost{ #endif + diff --git a/test/check_type.hpp b/test/check_type.hpp index 0f21574..44920ee 100644 --- a/test/check_type.hpp +++ b/test/check_type.hpp @@ -25,12 +25,12 @@ expected_value: the type we expect to find. #define BOOST_CHECK_TYPE(type_expression, expected_type)\ do{\ - if(!::boost::is_same::value){\ + if(!::boost::is_same< type_expression, expected_type >::value){\ BOOST_CHECK_MESSAGE(false, "The expression: \"" << BOOST_STRINGIZE(expression)\ << "\" did not have the expected type:\n\tevaluating: boost::is_same<"\ << BOOST_STRINGIZE(type_expression) << ", " << BOOST_STRINGIZE(expected_type)\ << ">" << "\n\tfound: "\ - << typeid(::boost::is_same).name());\ + << typeid(::boost::is_same< type_expression, expected_type >).name());\ }else\ BOOST_CHECK_MESSAGE(true, "Validating Type Expression: \""\ << BOOST_STRINGIZE(expression) << "\"");\ diff --git a/test/has_nothrow_assign_test.cpp b/test/has_nothrow_assign_test.cpp index 6849672..16bc6e6 100644 --- a/test/has_nothrow_assign_test.cpp +++ b/test/has_nothrow_assign_test.cpp @@ -151,6 +151,9 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, tru 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); + TT_TEST_END diff --git a/test/has_nothrow_constructor_test.cpp b/test/has_nothrow_constructor_test.cpp index b4fce52..4c4bd26 100644 --- a/test/has_nothrow_constructor_test.cpp +++ b/test/has_nothrow_constructor_test.cpp @@ -151,6 +151,9 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value 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); + TT_TEST_END diff --git a/test/has_nothrow_copy_test.cpp b/test/has_nothrow_copy_test.cpp index caa2fe1..2f2f249 100644 --- a/test/has_nothrow_copy_test.cpp +++ b/test/has_nothrow_copy_test.cpp @@ -151,6 +151,9 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, true, 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); + TT_TEST_END diff --git a/test/has_trivial_assign_test.cpp b/test/has_trivial_assign_test.cpp index d959b57..5ea37ed 100644 --- a/test/has_trivial_assign_test.cpp +++ b/test/has_trivial_assign_test.cpp @@ -151,6 +151,9 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, tru BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, true, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); + TT_TEST_END diff --git a/test/has_trivial_constructor_test.cpp b/test/has_trivial_constructor_test.cpp index 0849616..0e9fe4d 100644 --- a/test/has_trivial_constructor_test.cpp +++ b/test/has_trivial_constructor_test.cpp @@ -151,6 +151,9 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, true, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); + TT_TEST_END diff --git a/test/has_trivial_copy_test.cpp b/test/has_trivial_copy_test.cpp index 25a05b1..59c2f65 100644 --- a/test/has_trivial_copy_test.cpp +++ b/test/has_trivial_copy_test.cpp @@ -151,6 +151,9 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, true, 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_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); + TT_TEST_END diff --git a/test/has_trivial_destructor_test.cpp b/test/has_trivial_destructor_test.cpp index 79546d7..92af4a9 100644 --- a/test/has_trivial_destructor_test.cpp +++ b/test/has_trivial_destructor_test.cpp @@ -151,6 +151,9 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, true, false); BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, true, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); + TT_TEST_END diff --git a/test/is_arithmetic_test.cpp b/test/is_arithmetic_test.cpp index a68321f..4500cbc 100644 --- a/test/is_arithmetic_test.cpp +++ b/test/is_arithmetic_test.cpp @@ -134,6 +134,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); TT_TEST_END diff --git a/test/is_array_test.cpp b/test/is_array_test.cpp index 06ee666..dbd4d2d 100644 --- a/test/is_array_test.cpp +++ b/test/is_array_test.cpp @@ -32,6 +32,10 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_array::value, false); + TT_TEST_END diff --git a/test/is_base_and_derived_test.cpp b/test/is_base_and_derived_test.cpp index 6eb2991..94d6cec 100644 --- a/test/is_base_and_derived_test.cpp +++ b/test/is_base_and_derived_test.cpp @@ -21,6 +21,10 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_and_derived::value), BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_and_derived::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_and_derived::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_and_derived::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_and_derived::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_and_derived::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_and_derived::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_and_derived::value), false); TT_TEST_END diff --git a/test/is_class_test.cpp b/test/is_class_test.cpp index 3ac4de5..571db70 100644 --- a/test/is_class_test.cpp +++ b/test/is_class_test.cpp @@ -30,6 +30,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); diff --git a/test/is_compound_test.cpp b/test/is_compound_test.cpp index 70180f4..f7f4ca7 100644 --- a/test/is_compound_test.cpp +++ b/test/is_compound_test.cpp @@ -14,9 +14,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, false); -//#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, true); -//#endif +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, true); TT_TEST_END diff --git a/test/is_const_test.cpp b/test/is_const_test.cpp index 5b684cf..f3d1d3b 100644 --- a/test/is_const_test.cpp +++ b/test/is_const_test.cpp @@ -20,6 +20,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_const::value, false); TT_TEST_END diff --git a/test/is_empty_test.cpp b/test/is_empty_test.cpp index 04d16fa..5e579b7 100644 --- a/test/is_empty_test.cpp +++ b/test/is_empty_test.cpp @@ -34,6 +34,7 @@ BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_empty::value, tr BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); TT_TEST_END diff --git a/test/is_enum_test.cpp b/test/is_enum_test.cpp index 5d9eabc..c148be5 100644 --- a/test/is_enum_test.cpp +++ b/test/is_enum_test.cpp @@ -17,6 +17,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); TT_TEST_END diff --git a/test/is_float_test.cpp b/test/is_float_test.cpp index 68d902a..a3959e5 100644 --- a/test/is_float_test.cpp +++ b/test/is_float_test.cpp @@ -38,6 +38,17 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); +// +// tricky cases: +// +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); + TT_TEST_END diff --git a/test/is_function_test.cpp b/test/is_function_test.cpp index e4d7f62..4e3113d 100644 --- a/test/is_function_test.cpp +++ b/test/is_function_test.cpp @@ -29,6 +29,7 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); TT_TEST_END diff --git a/test/is_fundamental_test.cpp b/test/is_fundamental_test.cpp index d15158f..71dbb44 100644 --- a/test/is_fundamental_test.cpp +++ b/test/is_fundamental_test.cpp @@ -138,6 +138,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); TT_TEST_END diff --git a/test/is_integral_test.cpp b/test/is_integral_test.cpp index cd6be09..e44291b 100644 --- a/test/is_integral_test.cpp +++ b/test/is_integral_test.cpp @@ -120,6 +120,13 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); TT_TEST_END diff --git a/test/is_member_function_pointer_test.cpp b/test/is_member_function_pointer_test.cpp index 5975bbe..455355a 100644 --- a/test/is_member_function_pointer_test.cpp +++ b/test/is_member_function_pointer_test.cpp @@ -22,6 +22,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, true BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_function_pointer::value, false); TT_TEST_END diff --git a/test/is_member_pointer_test.cpp b/test/is_member_pointer_test.cpp index 3201254..b00f18f 100644 --- a/test/is_member_pointer_test.cpp +++ b/test/is_member_pointer_test.cpp @@ -22,6 +22,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); TT_TEST_END diff --git a/test/is_object_test.cpp b/test/is_object_test.cpp index fe311d2..46970dc 100644 --- a/test/is_object_test.cpp +++ b/test/is_object_test.cpp @@ -14,6 +14,10 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, true); +// this one is only partly correct: +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, true); TT_TEST_END diff --git a/test/is_pod_test.cpp b/test/is_pod_test.cpp index f33f44c..9e45fe6 100644 --- a/test/is_pod_test.cpp +++ b/test/is_pod_test.cpp @@ -146,6 +146,16 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); + +// cases we would like to succeed but can't implement in the language: +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_POD::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_POD::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_POD::value, true, false); +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_POD::value, true, false); + + TT_TEST_END diff --git a/test/is_pointer_test.cpp b/test/is_pointer_test.cpp index a3cdd6b..02c44d6 100644 --- a/test/is_pointer_test.cpp +++ b/test/is_pointer_test.cpp @@ -38,6 +38,15 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); + TT_TEST_END diff --git a/test/is_reference_test.cpp b/test/is_reference_test.cpp index c208e08..3c55183 100644 --- a/test/is_reference_test.cpp +++ b/test/is_reference_test.cpp @@ -25,6 +25,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); TT_TEST_END diff --git a/test/is_scalar_test.cpp b/test/is_scalar_test.cpp index 06193c8..6b41c2e 100644 --- a/test/is_scalar_test.cpp +++ b/test/is_scalar_test.cpp @@ -140,6 +140,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); TT_TEST_END diff --git a/test/is_stateless_test.cpp b/test/is_stateless_test.cpp new file mode 100644 index 0000000..7d65159 --- /dev/null +++ b/test/is_stateless_test.cpp @@ -0,0 +1,160 @@ + +// (C) Copyright John Maddock 2000. Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +#include "test.hpp" +#include "check_integral_constant.hpp" +#include TYPE_TRAITS(is_stateless) + +TT_TEST_BEGIN(is_stateless) + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +#ifdef BOOST_HAS_LONG_LONG + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +#endif + +#ifdef BOOST_HAS_MS_INT64 + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int8>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int8 const>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int8 volatile>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int8 const volatile>::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int16>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int16 const>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int16 volatile>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int16 const volatile>::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int32>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int32 const>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int32 volatile>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int32 const volatile>::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int64>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int64 const>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int64 volatile>::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless<__int64 const volatile>::value, false); + +#endif + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); + +// cases we would like to succeed but can't implement in the language: +BOOST_CHECK_SOFT_INTEGRAL_CONSTANT(::tt::is_stateless::value, true, false); + + +TT_TEST_END + + + + + + + diff --git a/test/is_union_test.cpp b/test/is_union_test.cpp index 0068a61..bd2b4a7 100644 --- a/test/is_union_test.cpp +++ b/test/is_union_test.cpp @@ -41,6 +41,14 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); + TT_TEST_END diff --git a/test/is_void_test.cpp b/test/is_void_test.cpp index 3073b7d..f3fd1f3 100644 --- a/test/is_void_test.cpp +++ b/test/is_void_test.cpp @@ -16,8 +16,14 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::boost::is_void::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::boost::is_void::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); TT_TEST_END diff --git a/test/is_volatile_test.cpp b/test/is_volatile_test.cpp index bfd71c3..31a0727 100644 --- a/test/is_volatile_test.cpp +++ b/test/is_volatile_test.cpp @@ -18,6 +18,8 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, true); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, true); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_volatile::value, false); TT_TEST_END diff --git a/test/test.hpp b/test/test.hpp index 61b12ee..9c678fb 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -247,8 +247,18 @@ struct test_abc2 virtual void foo2() = 0; }; +struct test_abc3 : public test_abc1 +{ + virtual void foo3() = 0; +}; + struct incomplete_type; +typedef void foo0_t(); +typedef void foo1_t(int); +typedef void foo2_t(int&, double); +typedef void foo3_t(int&, bool, int, int); +typedef void foo4_t(int, bool, int*, int[], int, int, int, int, int); #endif diff --git a/test/tricky_abstract_type_test.cpp b/test/tricky_abstract_type_test.cpp index 1fa8802..5f07bba 100644 --- a/test/tricky_abstract_type_test.cpp +++ b/test/tricky_abstract_type_test.cpp @@ -6,56 +6,13 @@ #include "test.hpp" #include "check_integral_constant.hpp" -#include TYPE_TRAITS(is_function) -#include TYPE_TRAITS(is_pointer) -#include TYPE_TRAITS(is_void) -#include TYPE_TRAITS(is_integral) -#include TYPE_TRAITS(is_float) -#include TYPE_TRAITS(is_arithmetic) -#include TYPE_TRAITS(is_fundamental) -#include TYPE_TRAITS(is_member_pointer) -#include TYPE_TRAITS(is_enum) -#include TYPE_TRAITS(is_object) -#include TYPE_TRAITS(is_scalar) -#include TYPE_TRAITS(is_class) -#include TYPE_TRAITS(is_POD) -#include TYPE_TRAITS(has_trivial_constructor) -#include TYPE_TRAITS(has_trivial_copy) -#include TYPE_TRAITS(has_trivial_assign) -#include TYPE_TRAITS(has_nothrow_constructor) -#include TYPE_TRAITS(has_nothrow_copy) -#include TYPE_TRAITS(has_nothrow_assign) -#include TYPE_TRAITS(has_trivial_destructor) #include TYPE_TRAITS(is_empty) -#include TYPE_TRAITS(is_compound) +#include TYPE_TRAITS(is_stateless) TT_TEST_BEGIN(abstract_type_tricky_tests) -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, true); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, true); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_assign::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_constructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_nothrow_copy::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_stateless::value, false); TT_TEST_END diff --git a/test/tricky_function_type_test.cpp b/test/tricky_function_type_test.cpp index 3b7f986..ff6e639 100644 --- a/test/tricky_function_type_test.cpp +++ b/test/tricky_function_type_test.cpp @@ -7,47 +7,25 @@ #include "test.hpp" #include "check_integral_constant.hpp" #include TYPE_TRAITS(is_function) -#include TYPE_TRAITS(is_pointer) -#include TYPE_TRAITS(is_void) -#include TYPE_TRAITS(is_integral) #include TYPE_TRAITS(is_float) -#include TYPE_TRAITS(is_arithmetic) -#include TYPE_TRAITS(is_fundamental) -#include TYPE_TRAITS(is_member_pointer) #include TYPE_TRAITS(is_enum) -#include TYPE_TRAITS(is_object) -#include TYPE_TRAITS(is_scalar) #include TYPE_TRAITS(is_class) +#include TYPE_TRAITS(is_scalar) #include TYPE_TRAITS(is_POD) #include TYPE_TRAITS(has_trivial_constructor) #include TYPE_TRAITS(has_trivial_copy) #include TYPE_TRAITS(has_trivial_assign) #include TYPE_TRAITS(has_trivial_destructor) -#include TYPE_TRAITS(is_empty) #include TYPE_TRAITS(is_compound) - -typedef void foo0_t(); -typedef void foo1_t(int); -typedef void foo2_t(int&, double); -typedef void foo3_t(int&, bool, int, int); -typedef void foo4_t(int, bool, int*, int[], int, int, int, int, int); +#include TYPE_TRAITS(is_base_and_derived) TT_TEST_BEGIN(is_function) BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, false); @@ -56,92 +34,48 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, fals BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_base_and_derived::value), false); + -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); +BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_empty::value, false); - TT_TEST_END diff --git a/test/tricky_incomplete_type_test.cpp b/test/tricky_incomplete_type_test.cpp deleted file mode 100644 index 852e2db..0000000 --- a/test/tricky_incomplete_type_test.cpp +++ /dev/null @@ -1,61 +0,0 @@ - -// (C) Copyright John Maddock 2000. Permission to copy, use, modify, sell and -// distribute this software is granted provided this copyright notice appears -// in all copies. This software is provided "as is" without express or implied -// warranty, and with no claim as to its suitability for any purpose. - -#include "test.hpp" -#include "check_integral_constant.hpp" -#include TYPE_TRAITS(is_function) -#include TYPE_TRAITS(is_pointer) -#include TYPE_TRAITS(is_void) -#include TYPE_TRAITS(is_integral) -#include TYPE_TRAITS(is_float) -#include TYPE_TRAITS(is_arithmetic) -#include TYPE_TRAITS(is_fundamental) -#include TYPE_TRAITS(is_member_pointer) -#include TYPE_TRAITS(is_enum) -#include TYPE_TRAITS(is_object) -#include TYPE_TRAITS(is_scalar) -#include TYPE_TRAITS(is_class) -#include TYPE_TRAITS(is_POD) -#include TYPE_TRAITS(has_trivial_constructor) -#include TYPE_TRAITS(has_trivial_copy) -#include TYPE_TRAITS(has_trivial_assign) -#include TYPE_TRAITS(has_trivial_destructor) -#include TYPE_TRAITS(is_empty) -#include TYPE_TRAITS(is_compound) - -TT_TEST_BEGIN(incomplete_type_tricky_tests) - -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_function::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_void::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_integral::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_float::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_arithmetic::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_fundamental::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_reference::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_member_pointer::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_enum::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_union::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_scalar::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_class::value, true); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_compound::value, true); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_POD::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_constructor::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_copy::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_assign::value, false); -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::has_trivial_destructor::value, false); - -// this one is only partly correct: -BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_object::value, true); - -TT_TEST_END - - - - - - - diff --git a/test/tricky_partial_specialization_test.cpp b/test/tricky_partial_specialization_test.cpp index d710e07..d3a3743 100644 --- a/test/tricky_partial_specialization_test.cpp +++ b/test/tricky_partial_specialization_test.cpp @@ -6,19 +6,11 @@ #include "test.hpp" #include "check_integral_constant.hpp" -#include TYPE_TRAITS(is_class) #include TYPE_TRAITS(alignment_of) #include TYPE_TRAITS(has_nothrow_assign) #include TYPE_TRAITS(has_nothrow_constructor) #include TYPE_TRAITS(has_nothrow_copy) -#include TYPE_TRAITS(has_trivial_assign) -#include TYPE_TRAITS(has_trivial_constructor) -#include TYPE_TRAITS(has_trivial_copy) -#include TYPE_TRAITS(has_trivial_destructor) #include TYPE_TRAITS(is_base_and_derived) -#include TYPE_TRAITS(is_object) -#include TYPE_TRAITS(is_POD) -#include TYPE_TRAITS(is_scalar) #include TYPE_COMPARE(is_same) #include TYPE_COMPARE(is_convertible)