1 #include <cppunit/config/SourcePrefix.h>
2 #include <cppunit/XmlOutputterHook.h>
4 #if !defined(CPPUNIT_NO_TESTPLUGIN)
5 #include <cppunit/extensions/TestFactoryRegistry.h>
6 #include <cppunit/plugin/PlugInManager.h>
7 #include <cppunit/plugin/TestPlugIn.h>
8 #include <cppunit/plugin/DynamicLibraryManager.h>
14 PlugInManager::PlugInManager()
19 PlugInManager::~PlugInManager()
21 for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
27 PlugInManager::load( const std::string &libraryFileName,
28 const PlugInParameters ¶meters )
31 info.m_fileName = libraryFileName;
32 info.m_manager = new DynamicLibraryManager( libraryFileName );
34 TestPlugInSignature plug = (TestPlugInSignature)info.m_manager->findSymbol(
35 CPPUNIT_STRINGIZE( CPPUNIT_PLUGIN_EXPORTED_NAME ) );
36 info.m_interface = (*plug)();
38 m_plugIns.push_back( info );
40 info.m_interface->initialize( &TestFactoryRegistry::getRegistry(), parameters );
45 PlugInManager::unload( const std::string &libraryFileName )
47 for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
49 if ( (*it).m_fileName == libraryFileName )
52 m_plugIns.erase( it );
60 PlugInManager::addListener( TestResult *eventManager )
62 for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
63 (*it).m_interface->addListener( eventManager );
68 PlugInManager::removeListener( TestResult *eventManager )
70 for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
71 (*it).m_interface->removeListener( eventManager );
76 PlugInManager::unload( PlugInInfo &plugIn )
80 plugIn.m_interface->uninitialize( &TestFactoryRegistry::getRegistry() );
81 delete plugIn.m_manager;
85 delete plugIn.m_manager;
86 plugIn.m_manager = NULL;
93 PlugInManager::addXmlOutputterHooks( XmlOutputter *outputter )
95 for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
96 (*it).m_interface->addXmlOutputterHooks( outputter );
101 PlugInManager::removeXmlOutputterHooks()
103 for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
104 (*it).m_interface->removeXmlOutputterHooks();
110 #endif // !defined(CPPUNIT_NO_TESTPLUGIN)