diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2cbd24e..e6416b2 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -93,4 +93,6 @@ alias ttiVM [ compile TestVMHasTemplateCheckParamsCompile.cpp : ../../../../variadic_macro_data ] [ compile-fail TestVMHasTemplateCheckParamsFail.cpp : ../../../../variadic_macro_data ] [ compile-fail TestVMHasTemplateCheckParamsFail2.cpp : ../../../../variadic_macro_data ] + [ compile-fail TestVMHasTemplateCheckParamsFail3.cpp : ../../../../variadic_macro_data ] + [ compile-fail TestVMHasTemplateCheckParamsFail4.cpp : ../../../../variadic_macro_data ] ; diff --git a/test/TestVMHasTemplateCheckParams.cpp b/test/TestVMHasTemplateCheckParams.cpp index 83c3979..5ac3a1e 100644 --- a/test/TestVMHasTemplateCheckParams.cpp +++ b/test/TestVMHasTemplateCheckParams.cpp @@ -4,6 +4,15 @@ int main() { + BOOST_TEST(tti::has_template_check_params_ATPMemberTemplate::value); + BOOST_TEST(tti::HaveCL::value); + BOOST_TEST(tti::has_template_check_params_AMemberTemplate::value); + BOOST_TEST(tti::HaveAnotherMT::value); + BOOST_TEST(tti::has_template_check_params_SomeMemberTemplate::value); + BOOST_TEST(tti::ATemplateWithParms::value); + BOOST_TEST(tti::has_template_check_params_SimpleTMP::value); + BOOST_TEST(!tti::has_template_check_params_TemplateNotExist::value); + return boost::report_errors(); } diff --git a/test/TestVMHasTemplateCheckParams.hpp b/test/TestVMHasTemplateCheckParams.hpp index 4d20117..d497f2e 100644 --- a/test/TestVMHasTemplateCheckParams.hpp +++ b/test/TestVMHasTemplateCheckParams.hpp @@ -4,4 +4,15 @@ #include "TestStructs.hpp" #include +TTI_VM_HAS_TEMPLATE_CHECK_PARAMS(ATPMemberTemplate,class) +TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(HaveCL,CLMemberTemplate,class,class) +TTI_VM_HAS_TEMPLATE_CHECK_PARAMS(AMemberTemplate,int) +TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(HaveAnotherMT,AnotherMemberTemplate,int,int) +TTI_VM_HAS_TEMPLATE_CHECK_PARAMS(SomeMemberTemplate,class,class,class,class,class,class) +TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(ATemplateWithParms,ManyParameters,class,class,int,class,template class InnerTemplate,class,long) +TTI_VM_HAS_TEMPLATE_CHECK_PARAMS(SimpleTMP,class,class,class,class) +TTI_VM_HAS_TEMPLATE_CHECK_PARAMS(TemplateNotExist,int,class,template class ATemplate) +TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(WrongParametersForMP,ManyParameters,class,class,int,class,template class InnerTemplate,class,long) +TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(WrongParameters2ForMP,ManyParameters,class,long,int,class,template class InnerTemplate,class,long) + #endif // TEST_VM_HAS_TEMPLATE_CHECK_PARAMS_HPP diff --git a/test/TestVMHasTemplateCheckParamsCompile.cpp b/test/TestVMHasTemplateCheckParamsCompile.cpp index 6dba6b0..d5ea118 100644 --- a/test/TestVMHasTemplateCheckParamsCompile.cpp +++ b/test/TestVMHasTemplateCheckParamsCompile.cpp @@ -4,7 +4,19 @@ int main() { - BOOST_MPL_ASSERT((boost::mpl::true_)); + // You can always instantiate without compiler errors + + tti::has_template_check_params_TemplateNotExist aVar1; + + // Compile time asserts + + BOOST_MPL_ASSERT((tti::has_template_check_params_ATPMemberTemplate)); + BOOST_MPL_ASSERT((tti::HaveCL)); + BOOST_MPL_ASSERT((tti::has_template_check_params_AMemberTemplate)); + BOOST_MPL_ASSERT((tti::HaveAnotherMT)); + BOOST_MPL_ASSERT((tti::has_template_check_params_SomeMemberTemplate)); + BOOST_MPL_ASSERT((tti::ATemplateWithParms)); + BOOST_MPL_ASSERT((tti::has_template_check_params_SimpleTMP)); return 0; diff --git a/test/TestVMHasTemplateCheckParamsFail.cpp b/test/TestVMHasTemplateCheckParamsFail.cpp index bc5939a..91d5a27 100644 --- a/test/TestVMHasTemplateCheckParamsFail.cpp +++ b/test/TestVMHasTemplateCheckParamsFail.cpp @@ -4,7 +4,9 @@ int main() { - BOOST_MPL_ASSERT((boost::mpl::false_)); + // TemplateNotExist does not exist at all + + BOOST_MPL_ASSERT((tti::has_template_check_params_TemplateNotExist)); return 0; diff --git a/test/TestVMHasTemplateCheckParamsFail2.cpp b/test/TestVMHasTemplateCheckParamsFail2.cpp index bc5939a..5ac3a1d 100644 --- a/test/TestVMHasTemplateCheckParamsFail2.cpp +++ b/test/TestVMHasTemplateCheckParamsFail2.cpp @@ -4,7 +4,9 @@ int main() { - BOOST_MPL_ASSERT((boost::mpl::false_)); + // Wrong enclosing type + + BOOST_MPL_ASSERT((tti::HaveCL)); return 0;