CppUnit project page | FAQ | CppUnit home page

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

AutoRegisterSuite.h
Go to the documentation of this file.

    00001 #ifndef CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H
    00002 #define CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H
    00003
    00004 #include <cppunit/extensions/TestSuiteFactory.h>
    00005 #include <cppunit/extensions/TestFactoryRegistry.h>
    00006 #include <string>
    00007
    00008 CPPUNIT_NS_BEGIN
    00009
    00010
    00027 template<class TestCaseType>
    00028 class AutoRegisterSuite
    00029 {
    00030 public:
    00033   AutoRegisterSuite()
    00034       : m_registry( &TestFactoryRegistry::getRegistry() )
    00035   {
    00036     m_registry->registerFactory( &m_factory );
    00037   }
    00038
    00042   AutoRegisterSuite( const std::string &name )
    00043       : m_registry( &TestFactoryRegistry::getRegistry( name ) )
    00044   {
    00045     m_registry->registerFactory( &m_factory );
    00046   }
    00047
    00048   ~AutoRegisterSuite()
    00049   {
    00050     if ( TestFactoryRegistry::isValid() )
    00051       m_registry->unregisterFactory( &m_factory );
    00052   }
    00053
    00054 private:
    00055   TestFactoryRegistry *m_registry;
    00056   TestSuiteFactory<TestCaseType> m_factory;
    00057 };
    00058
    00059
    00065 class AutoRegisterRegistry
    00066 {
    00067 public:
    00068   AutoRegisterRegistry( const std::string &which,
    00069                         const std::string &to )
    00070   {
    00071     TestFactoryRegistry::getRegistry( to ).addRegistry( which );
    00072   }
    00073
    00074   AutoRegisterRegistry( const std::string &which )
    00075   {
    00076     TestFactoryRegistry::getRegistry().addRegistry( which );
    00077   }
    00078 };
    00079
    00080
    00081 CPPUNIT_NS_END
    00082
    00083 #endif  // CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H

| hosts this site. |  | Send comments to: CppUnit Developers