118 lines
3.9 KiB
C
118 lines
3.9 KiB
C
|
#ifndef CPPUNIT_TEST_H
|
||
|
#define CPPUNIT_TEST_H
|
||
|
|
||
|
#include <cppunit/Portability.h>
|
||
|
#include <string>
|
||
|
|
||
|
CPPUNIT_NS_BEGIN
|
||
|
|
||
|
|
||
|
class TestResult;
|
||
|
class TestPath;
|
||
|
|
||
|
/*! \brief Base class for all test objects.
|
||
|
* \ingroup BrowsingCollectedTestResult
|
||
|
*
|
||
|
* All test objects should be a subclass of Test. Some test objects,
|
||
|
* TestCase for example, represent one individual test. Other test
|
||
|
* objects, such as TestSuite, are comprised of several tests.
|
||
|
*
|
||
|
* When a Test is run, the result is collected by a TestResult object.
|
||
|
*
|
||
|
* \see TestCase
|
||
|
* \see TestSuite
|
||
|
*/
|
||
|
class CPPUNIT_API Test
|
||
|
{
|
||
|
public:
|
||
|
virtual ~Test() {};
|
||
|
|
||
|
/*! \brief Run the test, collecting results.
|
||
|
*/
|
||
|
virtual void run( TestResult *result ) =0;
|
||
|
|
||
|
/*! \brief Return the number of test cases invoked by run().
|
||
|
*
|
||
|
* The base unit of testing is the class TestCase. This
|
||
|
* method returns the number of TestCase objects invoked by
|
||
|
* the run() method.
|
||
|
*/
|
||
|
virtual int countTestCases () const =0;
|
||
|
|
||
|
/*! \brief Returns the number of direct child of the test.
|
||
|
*/
|
||
|
virtual int getChildTestCount() const =0;
|
||
|
|
||
|
/*! \brief Returns the child test of the specified index.
|
||
|
*
|
||
|
* This method test if the index is valid, then call doGetChildTestAt() if
|
||
|
* the index is valid. Otherwise std::out_of_range exception is thrown.
|
||
|
*
|
||
|
* You should override doGetChildTestAt() method.
|
||
|
*
|
||
|
* \param index Zero based index of the child test to return.
|
||
|
* \return Pointer on the test. Never \c NULL.
|
||
|
* \exception std::out_of_range is \a index is < 0 or >= getChildTestCount().
|
||
|
*/
|
||
|
virtual Test *getChildTestAt( int index ) const;
|
||
|
|
||
|
/*! \brief Returns the test name.
|
||
|
*
|
||
|
* Each test has a name. This name may be used to find the
|
||
|
* test in a suite or registry of tests.
|
||
|
*/
|
||
|
virtual std::string getName () const =0;
|
||
|
|
||
|
/*! \brief Finds the test with the specified name and its parents test.
|
||
|
* \param testName Name of the test to find.
|
||
|
* \param testPath If the test is found, then all the tests traversed to access
|
||
|
* \a test are added to \a testPath, including \c this and \a test.
|
||
|
* \return \c true if a test with the specified name is found, \c false otherwise.
|
||
|
*/
|
||
|
virtual bool findTestPath( const std::string &testName,
|
||
|
TestPath &testPath ) const;
|
||
|
|
||
|
/*! \brief Finds the specified test and its parents test.
|
||
|
* \param test Test to find.
|
||
|
* \param testPath If the test is found, then all the tests traversed to access
|
||
|
* \a test are added to \a testPath, including \c this and \a test.
|
||
|
* \return \c true if the specified test is found, \c false otherwise.
|
||
|
*/
|
||
|
virtual bool findTestPath( const Test *test,
|
||
|
TestPath &testPath ) const;
|
||
|
|
||
|
/*! \brief Finds the test with the specified name in the hierarchy.
|
||
|
* \param testName Name of the test to find.
|
||
|
* \return Pointer on the first test found that is named \a testName. Never \c NULL.
|
||
|
* \exception std::invalid_argument if no test named \a testName is found.
|
||
|
*/
|
||
|
virtual Test *findTest( const std::string &testName ) const;
|
||
|
|
||
|
/*! \brief Resolved the specified test path with this test acting as 'root'.
|
||
|
* \param testPath Test path string to resolve.
|
||
|
* \return Resolved TestPath.
|
||
|
* \exception std::invalid_argument if \a testPath could not be resolved.
|
||
|
* \see TestPath.
|
||
|
*/
|
||
|
virtual TestPath resolveTestPath( const std::string &testPath ) const;
|
||
|
|
||
|
protected:
|
||
|
/*! Throws an exception if the specified index is invalid.
|
||
|
* \param index Zero base index of a child test.
|
||
|
* \exception std::out_of_range is \a index is < 0 or >= getChildTestCount().
|
||
|
*/
|
||
|
virtual void checkIsValidIndex( int index ) const;
|
||
|
|
||
|
/*! \brief Returns the child test of the specified valid index.
|
||
|
* \param index Zero based valid index of the child test to return.
|
||
|
* \return Pointer on the test. Never \c NULL.
|
||
|
*/
|
||
|
virtual Test *doGetChildTestAt( int index ) const =0;
|
||
|
};
|
||
|
|
||
|
|
||
|
CPPUNIT_NS_END
|
||
|
|
||
|
#endif // CPPUNIT_TEST_H
|
||
|
|