Blame include/cppunit/extensions/TestNamer.h

Packit Service e31359
#ifndef CPPUNIT_EXTENSIONS_TESTNAMER_H
Packit Service e31359
#define CPPUNIT_EXTENSIONS_TESTNAMER_H
Packit Service e31359
Packit Service e31359
#include <cppunit/Portability.h>
Packit Service e31359
#include <string>
Packit Service e31359
#include <cppunit/tools/StringHelper.h>
Packit Service e31359
Packit Service e31359
#include <typeinfo>
Packit Service e31359
Packit Service e31359
Packit Service e31359
Packit Service e31359
/*! \def CPPUNIT_TESTNAMER_DECL( variableName, FixtureType )
Packit Service e31359
 * \brief Declares a TestNamer.
Packit Service e31359
 *
Packit Service e31359
 * Declares a TestNamer for the specified type
Packit Service e31359
 *
Packit Service e31359
 * \code
Packit Service e31359
 * void someMethod() 
Packit Service e31359
 * {
Packit Service e31359
 *   CPPUNIT_TESTNAMER_DECL( namer, AFixtureType );
Packit Service e31359
 *   std::string fixtureName = namer.getFixtureName();
Packit Service e31359
 *   ...
Packit Service e31359
 * \endcode
Packit Service e31359
 *
Packit Service e31359
 * \relates TestNamer
Packit Service e31359
 * \see TestNamer
Packit Service e31359
 */
Packit Service e31359
#  define CPPUNIT_TESTNAMER_DECL( variableName, FixtureType )       \
Packit Service e31359
              CPPUNIT_NS::TestNamer variableName( typeid(FixtureType) )
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_BEGIN
Packit Service e31359
Packit Service e31359
/*! \brief Names a test or a fixture suite.
Packit Service e31359
 *
Packit Service e31359
 * TestNamer is usually instantiated using CPPUNIT_TESTNAMER_DECL.
Packit Service e31359
 *
Packit Service e31359
 */
Packit Service e31359
class CPPUNIT_API TestNamer
Packit Service e31359
{
Packit Service e31359
public:
Packit Service e31359
  /*! \brief Constructs a namer using the fixture's type-info.
Packit Service e31359
   * \param typeInfo Type-info of the fixture type. Use to name the fixture suite.
Packit Service e31359
   */
Packit Service e31359
  TestNamer( const std::type_info &typeInfo );
Packit Service e31359
Packit Service e31359
  /*! \brief Constructs a namer using the specified fixture name.
Packit Service e31359
   * \param fixtureName Name of the fixture suite. Usually extracted using a macro.
Packit Service e31359
   */
Packit Service e31359
  TestNamer( const std::string &fixtureName );
Packit Service e31359
Packit Service e31359
  virtual ~TestNamer();
Packit Service e31359
Packit Service e31359
  /*! \brief Returns the name of the fixture.
Packit Service e31359
   * \return Name of the fixture.
Packit Service e31359
   */
Packit Service e31359
  virtual std::string getFixtureName() const;
Packit Service e31359
Packit Service e31359
  /*! \brief Returns the name of the test for the specified method.
Packit Service e31359
   * \param testMethodName Name of the method that implements a test.
Packit Service e31359
   * \return A string that is the concatenation of the test fixture name 
Packit Service e31359
   *         (returned by getFixtureName()) and\a testMethodName, 
Packit Service e31359
   *         separated using '::'. This provides a fairly unique name for a given
Packit Service e31359
   *         test.
Packit Service e31359
   */
Packit Service e31359
  virtual std::string getTestNameFor( const std::string &testMethodName ) const;
Packit Service e31359
Packit Service e31359
  template<typename E>
Packit Service e31359
  std::string getTestNameFor( const std::string& testMethodName, const E& val) const
Packit Service e31359
  {
Packit Service e31359
      return getTestNameFor(testMethodName) + " with parameter: " + CPPUNIT_NS::StringHelper::toString(val);
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
protected:
Packit Service e31359
  std::string m_fixtureName;
Packit Service e31359
};
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_END
Packit Service e31359
Packit Service e31359
#endif // CPPUNIT_EXTENSIONS_TESTNAMER_H
Packit Service e31359