Added cppunit to the ./contrib dir. Build config for x64 and dll builds (some bugs remaining, but most configs are working)
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@70 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
This commit is contained in:
110
contrib/cppunit-1.12.1/src/cppunit/PlugInManager.cpp
Normal file
110
contrib/cppunit-1.12.1/src/cppunit/PlugInManager.cpp
Normal file
@@ -0,0 +1,110 @@
|
||||
#include <cppunit/config/SourcePrefix.h>
|
||||
#include <cppunit/XmlOutputterHook.h>
|
||||
|
||||
#if !defined(CPPUNIT_NO_TESTPLUGIN)
|
||||
#include <cppunit/extensions/TestFactoryRegistry.h>
|
||||
#include <cppunit/plugin/PlugInManager.h>
|
||||
#include <cppunit/plugin/TestPlugIn.h>
|
||||
#include <cppunit/plugin/DynamicLibraryManager.h>
|
||||
|
||||
|
||||
CPPUNIT_NS_BEGIN
|
||||
|
||||
|
||||
PlugInManager::PlugInManager()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
PlugInManager::~PlugInManager()
|
||||
{
|
||||
for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
|
||||
unload( *it );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PlugInManager::load( const std::string &libraryFileName,
|
||||
const PlugInParameters ¶meters )
|
||||
{
|
||||
PlugInInfo info;
|
||||
info.m_fileName = libraryFileName;
|
||||
info.m_manager = new DynamicLibraryManager( libraryFileName );
|
||||
|
||||
TestPlugInSignature plug = (TestPlugInSignature)info.m_manager->findSymbol(
|
||||
CPPUNIT_STRINGIZE( CPPUNIT_PLUGIN_EXPORTED_NAME ) );
|
||||
info.m_interface = (*plug)();
|
||||
|
||||
m_plugIns.push_back( info );
|
||||
|
||||
info.m_interface->initialize( &TestFactoryRegistry::getRegistry(), parameters );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PlugInManager::unload( const std::string &libraryFileName )
|
||||
{
|
||||
for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
|
||||
{
|
||||
if ( (*it).m_fileName == libraryFileName )
|
||||
{
|
||||
unload( *it );
|
||||
m_plugIns.erase( it );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PlugInManager::addListener( TestResult *eventManager )
|
||||
{
|
||||
for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
|
||||
(*it).m_interface->addListener( eventManager );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PlugInManager::removeListener( TestResult *eventManager )
|
||||
{
|
||||
for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
|
||||
(*it).m_interface->removeListener( eventManager );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PlugInManager::unload( PlugInInfo &plugIn )
|
||||
{
|
||||
try
|
||||
{
|
||||
plugIn.m_interface->uninitialize( &TestFactoryRegistry::getRegistry() );
|
||||
delete plugIn.m_manager;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
delete plugIn.m_manager;
|
||||
plugIn.m_manager = NULL;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PlugInManager::addXmlOutputterHooks( XmlOutputter *outputter )
|
||||
{
|
||||
for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
|
||||
(*it).m_interface->addXmlOutputterHooks( outputter );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
PlugInManager::removeXmlOutputterHooks()
|
||||
{
|
||||
for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
|
||||
(*it).m_interface->removeXmlOutputterHooks();
|
||||
}
|
||||
|
||||
|
||||
CPPUNIT_NS_END
|
||||
|
||||
#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
|
||||
Reference in New Issue
Block a user