From b87cde884d03091d81e4d3fa2199155e152dda80 Mon Sep 17 00:00:00 2001 From: Baptiste Lepilleur Date: Sat, 25 May 2002 08:29:07 +0000 Subject: Include/cppunit/extensions/TestSuiteBuilder. include/cppunit/extensions/TestSuiteBuilder.h: updated to use TestNamer. Removed template method addTestCallerForException() which should solve the compilation issue with Sun 5.0/6.0 compiler. * include/cppunit/extensions/HelperMacros.h: updated against TestSuiteBuilder change. Added CPPUNIT_TEST_CUSTOM and CPPUNIT_TEST_CUSTOMS to add custom tests to the fixture suite. * include/cppunit/extensions/TestNamer.h: * src/cppunit/TestNamer.cpp: added, TestNamer to name test case and fixture. --- include/cppunit/extensions/TestNamer.h | 86 ++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 include/cppunit/extensions/TestNamer.h (limited to 'include/cppunit/extensions/TestNamer.h') diff --git a/include/cppunit/extensions/TestNamer.h b/include/cppunit/extensions/TestNamer.h new file mode 100644 index 0000000..91262b9 --- /dev/null +++ b/include/cppunit/extensions/TestNamer.h @@ -0,0 +1,86 @@ +#ifndef CPPUNIT_EXTENSIONS_TESTNAMER_H +#define CPPUNIT_EXTENSIONS_TESTNAMER_H + +#include +#include + + + + +/*! \def CPPUNIT_TESTNAMER_DECL( variableName, FixtureType ) + * \brief Declares a TestNamer. + * + * Declares a TestNamer for the specified type, using RTTI if enabled, otherwise + * using macro string expansion. + * + * RTTI is used if CPPUNIT_USE_TYPEINFO_NAME is defined and not null. + * + * \code + * void someMethod() + * { + * CPPUNIT_TESTNAMER_DECL( namer, AFixtureType ); + * std::string fixtureName = namer.getFixtureName(); + * ... + * \endcode + * + * \relates TestNamer + * \see TestNamer + */ +#if CPPUNIT_USE_TYPEINFO_NAME +# define CPPUNIT_TESTNAMER_DECL( variableName, FixtureType ) \ + CppUnit::TestNamer variableName( typeid(FixtureType) ) +#else +# define CPPUNIT_TESTNAMER_DECL( variableName, FixtureType ) \ + CppUnit::TestNamer variableName( std::string(#FixtureType) ) +#endif + + + +namespace CppUnit +{ + +/*! \brief Names a test or a fixture suite. + * + * TestNamer is usually instantiated using CPPUNIT_TESTNAMER_DECL. + * + */ +class CPPUNIT_API TestNamer +{ +public: +#if CPPUNIT_HAVE_RTTI + /*! Constructs a namer using the fixture's type-info. + * \param typeInfo Type-info of the fixture type. Use to name the fixture suite. + */ + TestNamer( const std::type_info &typeInfo ); +#endif + + /*! Constructs a namer using the specified fixture name. + * \param fixtureName Name of the fixture suite. Usually extracted using a macro. + */ + TestNamer( const std::string &fixtureName ); + + /*! Returns the name of the fixture. + * \return Name of the fixture. + */ + virtual std::string getFixtureName() const; + + /*! Returns the name of the test for the specified method. + * \param testMethodName Name of the method that implements a test. + * \return A string that is the concatenation of the test fixture name + * (returned by getFixtureName()) and\a testMethodName, + * separated using '::'. This provides a fairly unique name for a given + * test. + */ + virtual std::string getTestNameFor( const std::string &testMethodName ) const; + +protected: + std::string m_fixtureName; +}; + + + +} // namespace CppUnit + + + +#endif // CPPUNIT_EXTENSIONS_TESTNAMER_H \ No newline at end of file -- cgit v1.2.1