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)