From d1958e02f8414189bb11bfa90acc8176c89ca49e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 29 Nov 2004 16:51:31 +0000 Subject: [PATCH] Added additional tests for abstract template types. [SVN r26357] --- test/is_abstract_test.cpp | 206 +++++++++++++++++++++++++++++++++++++- 1 file changed, 205 insertions(+), 1 deletion(-) diff --git a/test/is_abstract_test.cpp b/test/is_abstract_test.cpp index 6e56aa4..f83852a 100755 --- a/test/is_abstract_test.cpp +++ b/test/is_abstract_test.cpp @@ -1,5 +1,5 @@ -// (C) Copyright Rani Sharoni,Robert Ramey and Pavel Vozenilek 2004. +// (C) Copyright Rani Sharoni,Robert Ramey, Pavel Vozenilek and Christoph Ludwig 2004. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -48,6 +48,41 @@ struct TestAE : TestAD { virtual void foo() {} }; struct TestAF : TestAD { virtual void foo(); }; void TestAF::foo(void) {} struct TestAG : virtual TestA {}; +// template test types: +template struct TTestA {}; +template struct TTestB { virtual void foo(void) = 0; }; +template struct TTestC { private: virtual void foo(void) = 0; }; +template struct TTestD : TTestA {}; +template struct TTestE : TTestB {}; +template struct TTestF : TTestC {}; +template struct TTestG : TTestB { virtual void foo(void) {} }; +template struct TTestH : TTestC { private: virtual void foo(void) {} }; +template struct TTestI : TTestB, TTestC {}; +template struct TTestJ : TTestI { virtual void foo(void) {} }; +template struct TTestK : TTestB { virtual void foo(void); virtual void foo2(void) = 0; }; +template struct TTestL : TTestK { virtual void foo2(void) {} }; +template struct TTestM : virtual TTestB {}; +template struct TTestN : virtual TTestC {}; +template struct TTestO : TTestM, TTestN {}; +template struct TTestP : TTestO { virtual void foo(void) {} }; +template struct TTestQ : TTestB { virtual void foo(void) = 0; }; +template struct TTestR : TTestC { private: virtual void foo(void) = 0; }; +template struct TTestS { virtual void foo(void) {} }; +template struct TTestT { virtual ~TTestT(void) {} virtual void foo(void) {} }; +template struct TTestU : TTestT { virtual void foo(void) = 0; }; +template struct TTestV : TTestT { virtual void foo(void) {} }; +template struct TTestW { virtual void foo1(void) = 0; virtual void foo2(void) = 0; }; +template struct TTestX : TTestW { virtual void foo1(void) {} virtual void foo2(void) {} }; +template struct TTestY { virtual ~TTestY(void) = 0; }; +template struct TTestZ { virtual ~TTestZ(void) = 0; }; template TTestZ::~TTestZ(void) {} +template struct TTestAA : TTestZ { virtual ~TTestAA(void) = 0; }; template TTestAA::~TTestAA(void) {} +template struct TTestAB : TTestAA { virtual ~TTestAB(void) {} }; +template struct TTestAC { virtual void foo(void) = 0; }; template void TTestAC::foo(void) {} +template struct TTestAD : TTestAC {}; +template struct TTestAE : TTestAD { virtual void foo() {} }; +template struct TTestAF : TTestAD { virtual void foo(); }; template void TTestAF::foo(void) {} +template struct TTestAG : virtual TTestA {}; + TT_TEST_BEGIN(is_abstract) @@ -221,6 +256,175 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); // only one method implemented! +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); // ??? +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); + +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); // only one method implemented! +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); // ??? +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); + +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); // only one method implemented! +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); // ??? +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); + +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); // only one method implemented! +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); // ??? +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), true); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract >::value), false); + +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); // only one method implemented! +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); // ??? +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); +BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_abstract& >::value), false); TT_TEST_END