2
0
mirror of https://github.com/boostorg/tti.git synced 2026-01-25 06:42:25 +00:00
Files
tti/test/TestMFHasTypeCheckTypedef.cpp
Edward Diener c88ecb20fb Added support for metafunction classes
[SVN r68720]
2011-02-08 16:13:22 +00:00

190 lines
5.1 KiB
C++

#include "TestMFHasTypeCheckTypedef.hpp"
#include <boost/detail/lightweight_test.hpp>
int main()
{
using namespace boost::mpl::placeholders;
BOOST_TEST((tti::mf_has_type
<
tti::has_type_AnIntType<_,_>,
boost::mpl::identity<AType>,
boost::mpl::identity<int>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::NameStruct<_,_>,
boost::mpl::identity<AType>,
tti::member_type_AStructType<AType>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::has_type_AnIntTypeReference<_,_>,
boost::mpl::identity<AType>,
boost::mpl::identity<int &>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::has_type_BType<_,_>,
boost::mpl::identity<AType>,
tti::member_type_BType<AType>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::TheInteger<_,_>,
tti::member_type_BType<AType>,
boost::mpl::identity<int>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::has_type_CType<_,_>,
tti::member_type_BType<AType>,
tti::mf_member_type
<
tti::member_type_CType<_>,
tti::member_type_BType<AType>
>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::has_type_AnotherIntegerType<_,_>,
tti::mf_member_type
<
tti::mtfc_member_type_CType,
tti::member_type_BType<AType>
>,
boost::mpl::identity<int>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::SomethingElse<_,_>,
boost::mpl::identity<AnotherType>,
tti::member_type_AnIntType<AType>
>
::value
));
BOOST_TEST((!tti::mf_has_type
<
tti::has_type_NoOtherType<_,_>,
boost::mpl::identity<AnotherType>,
boost::mpl::identity<double>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::mtfc_has_type_AnIntType,
boost::mpl::identity<AType>,
boost::mpl::identity<int>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::MFunctionNameStruct,
boost::mpl::identity<AType>,
tti::member_type_AStructType<AType>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::mtfc_has_type_AnIntTypeReference,
boost::mpl::identity<AType>,
boost::mpl::identity<int &>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::mtfc_has_type_BType,
boost::mpl::identity<AType>,
tti::member_type_BType<AType>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::MFCTheInteger,
tti::member_type_BType<AType>,
boost::mpl::identity<int>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::mtfc_has_type_CType,
tti::member_type_BType<AType>,
tti::mf_member_type
<
tti::member_type_CType<_>,
tti::member_type_BType<AType>
>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::mtfc_has_type_AnotherIntegerType,
tti::mf_member_type
<
tti::mtfc_member_type_CType,
tti::member_type_BType<AType>
>,
boost::mpl::identity<int>
>
::value
));
BOOST_TEST((tti::mf_has_type
<
tti::FClassSomethingElse,
boost::mpl::identity<AnotherType>,
tti::member_type_AnIntType<AType>
>
::value
));
BOOST_TEST((!tti::mf_has_type
<
tti::mtfc_has_type_NoOtherType,
boost::mpl::identity<AnotherType>,
boost::mpl::identity<double>
>
::value
));
return boost::report_errors();
}