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
include / cppunit / extensions

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

AltStyle によって変換されたページ (->オリジナル) /