|
Packit |
8c9aa0 |
#ifndef CPPUNIT_PLUGIN_PLUGINMANAGER_H
|
|
Packit |
8c9aa0 |
#define CPPUNIT_PLUGIN_PLUGINMANAGER_H
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#include <cppunit/Portability.h>
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#if !defined(CPPUNIT_NO_TESTPLUGIN)
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#if CPPUNIT_NEED_DLL_DECL
|
|
Packit |
8c9aa0 |
#pragma warning( push )
|
|
Packit |
8c9aa0 |
#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z
|
|
Packit |
8c9aa0 |
#endif
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#include <cppunit/plugin/PlugInParameters.h>
|
|
Packit |
8c9aa0 |
struct CppUnitTestPlugIn;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_BEGIN
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
class DynamicLibraryManager;
|
|
Packit |
8c9aa0 |
class TestResult;
|
|
Packit |
8c9aa0 |
class XmlOutputter;
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! \brief Manges TestPlugIn.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
class CPPUNIT_API PlugInManager
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
public:
|
|
Packit |
8c9aa0 |
/*! Constructs a PlugInManager object.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
PlugInManager();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/// Destructor.
|
|
Packit |
8c9aa0 |
virtual ~PlugInManager();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! \brief Loads the specified plug-in.
|
|
Packit |
8c9aa0 |
*
|
|
Packit |
8c9aa0 |
* After being loaded, the CppUnitTestPlugIn::initialize() is called.
|
|
Packit |
8c9aa0 |
*
|
|
Packit |
8c9aa0 |
* \param libraryFileName Name of the file that contains the TestPlugIn.
|
|
Packit |
8c9aa0 |
* \param parameters List of string passed to the plug-in.
|
|
Packit |
8c9aa0 |
* \return Pointer on the DynamicLibraryManager associated to the library.
|
|
Packit |
8c9aa0 |
* Valid until the library is unloaded. Never \c NULL.
|
|
Packit |
8c9aa0 |
* \exception DynamicLibraryManagerException is thrown if an error occurs during loading.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
void load( const std::string &libraryFileName,
|
|
Packit |
8c9aa0 |
const PlugInParameters ¶meters = PlugInParameters() );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! \brief Unloads the specified plug-in.
|
|
Packit |
8c9aa0 |
* \param libraryFileName Name of the file that contains the TestPlugIn passed
|
|
Packit |
8c9aa0 |
* to a previous call to load().
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
void unload( const std::string &libraryFileName );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! \brief Gives a chance to each loaded plug-in to register TestListener.
|
|
Packit |
8c9aa0 |
*
|
|
Packit |
8c9aa0 |
* For each plug-in, call CppUnitTestPlugIn::addListener().
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
void addListener( TestResult *eventManager );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! \brief Gives a chance to each loaded plug-in to unregister TestListener.
|
|
Packit |
8c9aa0 |
* For each plug-in, call CppUnitTestPlugIn::removeListener().
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
void removeListener( TestResult *eventManager );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! \brief Provides a way for the plug-in to register some XmlOutputterHook.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
void addXmlOutputterHooks( XmlOutputter *outputter );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! \brief Called when the XmlOutputter is destroyed.
|
|
Packit |
8c9aa0 |
*
|
|
Packit |
8c9aa0 |
* Can be used to free some resources allocated by addXmlOutputterHooks().
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
void removeXmlOutputterHooks();
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
protected:
|
|
Packit |
8c9aa0 |
/*! \brief (INTERNAL) Information about a specific plug-in.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
struct PlugInInfo
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
std::string m_fileName;
|
|
Packit |
8c9aa0 |
DynamicLibraryManager *m_manager;
|
|
Packit |
8c9aa0 |
CppUnitTestPlugIn *m_interface;
|
|
Packit |
8c9aa0 |
};
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! Unloads the specified plug-in.
|
|
Packit |
8c9aa0 |
* \param plugIn Information about the plug-in.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
void unload( PlugInInfo &plugIn );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
private:
|
|
Packit |
8c9aa0 |
/// Prevents the use of the copy constructor.
|
|
Packit |
8c9aa0 |
PlugInManager( const PlugInManager © );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/// Prevents the use of the copy operator.
|
|
Packit |
8c9aa0 |
void operator =( const PlugInManager © );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
private:
|
|
Packit |
8c9aa0 |
typedef std::deque<PlugInInfo> PlugIns;
|
|
Packit |
8c9aa0 |
PlugIns m_plugIns;
|
|
Packit |
8c9aa0 |
};
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_END
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#if CPPUNIT_NEED_DLL_DECL
|
|
Packit |
8c9aa0 |
#pragma warning( pop )
|
|
Packit |
8c9aa0 |
#endif
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#endif // CPPUNIT_PLUGIN_PLUGINMANAGER_H
|