CppUnit project page FAQ CppUnit home page

Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

HelperMacros.h

Go to the documentation of this file.
00001 // //////////////////////////////////////////////////////////////////////////
00002 // Header file HelperMacros.h
00003 // (c)Copyright 2000, Baptiste Lepilleur.
00004 // Created: 2001/04/15
00005 // //////////////////////////////////////////////////////////////////////////
00006 #ifndef CPPUNIT_EXTENSIONS_HELPERMACROS_H
00007 #define CPPUNIT_EXTENSIONS_HELPERMACROS_H
00008 
00009 #include <cppunit/TestCaller.h>
00010 #include <cppunit/TestSuite.h>
00011 #include <cppunit/extensions/AutoRegisterSuite.h>
00012 #include <cppunit/extensions/ExceptionTestCaseDecorator.h>
00013 #include <cppunit/extensions/TestFixtureFactory.h>
00014 #include <cppunit/extensions/TestNamer.h>
00015 #include <cppunit/extensions/TestSuiteBuilderContext.h>
00016 #include <memory>
00017 
00018 
00100 #define CPPUNIT_TEST_SUITE( ATestFixtureType )                              \
00101   public:                                                                   \
00102     typedef ATestFixtureType TestFixtureType;                               \
00103                                                                             \
00104   private:                                                                  \
00105     static const CPPUNIT_NS::TestNamer &getTestNamer__()                    \
00106     {                                                                       \
00107       static CPPUNIT_TESTNAMER_DECL( testNamer, ATestFixtureType );         \
00108       return testNamer;                                                     \
00109     }                                                                       \
00110                                                                             \
00111   public:                                                                   \
00112     typedef CPPUNIT_NS::TestSuiteBuilderContext<TestFixtureType>            \
00113                 TestSuiteBuilderContextType;                                \
00114                                                                             \
00115     static void                                                             \
00116     addTestsToSuite( CPPUNIT_NS::TestSuiteBuilderContextBase &baseContext ) \
00117     {                                                                       \
00118       TestSuiteBuilderContextType context( baseContext )
00119 
00120 
00151 #define CPPUNIT_TEST_SUB_SUITE( ATestFixtureType, ASuperClass )  \
00152   public:                                                        \
00153     typedef ASuperClass ParentTestFixtureType;                   \
00154   private:                                                       \
00155     CPPUNIT_TEST_SUITE( ATestFixtureType );                      \
00156       ParentTestFixtureType::addTestsToSuite( baseContext )
00157 
00158 
00166 #define CPPUNIT_TEST_SUITE_END()                                               \
00167     }                                                                          \
00168                                                                                \
00169     static CPPUNIT_NS::TestSuite *suite()                                      \
00170     {                                                                          \
00171       const CPPUNIT_NS::TestNamer &namer = getTestNamer__();                   \
00172       std::auto_ptr<CPPUNIT_NS::TestSuite> suite(                              \
00173              new CPPUNIT_NS::TestSuite( namer.getFixtureName() ));             \
00174       CPPUNIT_NS::ConcretTestFixtureFactory<TestFixtureType> factory;          \
00175       CPPUNIT_NS::TestSuiteBuilderContextBase context( *suite.get(),           \
00176                                                        namer,                  \
00177                                                        factory );              \
00178       TestFixtureType::addTestsToSuite( context );                             \
00179       return suite.release();                                                  \
00180     }                                                                          \
00181   private: /* dummy typedef so that the macro can still end with ';'*/         \
00182     typedef int CppUnitDummyTypedefForSemiColonEnding__
00183 
00237 #define CPPUNIT_TEST_SUITE_END_ABSTRACT()                                      \
00238     }                                                                          \
00239   private: /* dummy typedef so that the macro can still end with ';'*/         \
00240     typedef int CppUnitDummyTypedefForSemiColonEnding__
00241 
00242 
00287 #define CPPUNIT_TEST_SUITE_ADD_TEST( test ) \
00288       context.addTest( test )
00289 
00296 #define CPPUNIT_TEST( testMethod )                        \
00297     CPPUNIT_TEST_SUITE_ADD_TEST(                           \
00298         ( new CPPUNIT_NS::TestCaller<TestFixtureType>(    \
00299                   context.getTestNameFor( #testMethod),   \
00300                   &TestFixtureType::testMethod,           \
00301                   context.makeFixture() ) ) )
00302 
00327 #define CPPUNIT_TEST_EXCEPTION( testMethod, ExceptionType )          \
00328   CPPUNIT_TEST_SUITE_ADD_TEST(                                        \
00329       (new CPPUNIT_NS::ExceptionTestCaseDecorator< ExceptionType >(  \
00330           new CPPUNIT_NS::TestCaller< TestFixtureType >(             \
00331                                context.getTestNameFor( #testMethod ),  \
00332                                &TestFixtureType::testMethod,         \
00333                                context.makeFixture() ) ) ) )
00334 
00351 #define CPPUNIT_TEST_FAIL( testMethod ) \
00352               CPPUNIT_TEST_EXCEPTION( testMethod, CPPUNIT_NS::Exception )
00353 
00402 #define CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( testAdderMethod ) \
00403       testAdderMethod( context )
00404 
00412 #define CPPUNIT_TEST_SUITE_PROPERTY( APropertyKey, APropertyValue ) \
00413     context.addProperty( std::string(APropertyKey),                 \
00414                          std::string(APropertyValue) )
00415 
00437 #define CPPUNIT_TEST_SUITE_REGISTRATION( ATestFixtureType )      \
00438   static CPPUNIT_NS::AutoRegisterSuite< ATestFixtureType >       \
00439              CPPUNIT_MAKE_UNIQUE_NAME(autoRegisterRegistry__ )
00440 
00441 
00479 #define CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ATestFixtureType, suiteName ) \
00480   static CPPUNIT_NS::AutoRegisterSuite< ATestFixtureType >                   \
00481              CPPUNIT_MAKE_UNIQUE_NAME(autoRegisterRegistry__ )(suiteName)
00482 
00510 #define CPPUNIT_REGISTRY_ADD( which, to )                                     \
00511   static CPPUNIT_NS::AutoRegisterRegistry                                     \
00512              CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ )( which, to )
00513 
00523 #define CPPUNIT_REGISTRY_ADD_TO_DEFAULT( which )                         \
00524   static CPPUNIT_NS::AutoRegisterRegistry                                \
00525              CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ )( which )
00526 
00527 // Backwards compatibility
00528 // (Not tested!)
00529 
00530 #if CPPUNIT_ENABLE_CU_TEST_MACROS
00531 
00532 #define CU_TEST_SUITE(tc) CPPUNIT_TEST_SUITE(tc)
00533 #define CU_TEST_SUB_SUITE(tc,sc) CPPUNIT_TEST_SUB_SUITE(tc,sc)
00534 #define CU_TEST(tm) CPPUNIT_TEST(tm)
00535 #define CU_TEST_SUITE_END() CPPUNIT_TEST_SUITE_END()
00536 #define CU_TEST_SUITE_REGISTRATION(tc) CPPUNIT_TEST_SUITE_REGISTRATION(tc)
00537 
00538 #endif
00539 
00540 
00541 #endif  // CPPUNIT_EXTENSIONS_HELPERMACROS_H

SourceForge Logo hosts this site. Send comments to:
CppUnit Developers