Blame include/cppunit/TestRunner.h

Packit Service e31359
#ifndef CPPUNIT_TESTRUNNER_H
Packit Service e31359
#define CPPUNIT_TESTRUNNER_H
Packit Service e31359
Packit Service e31359
#include <cppunit/TestSuite.h>
Packit Service e31359
#include <string>
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_BEGIN
Packit Service e31359
Packit Service e31359
Packit Service e31359
class Test;
Packit Service e31359
class TestResult;
Packit Service e31359
Packit Service e31359
Packit Service e31359
/*! \brief Generic test runner.
Packit Service e31359
 * \ingroup ExecutingTest
Packit Service e31359
 *
Packit Service e31359
 * The TestRunner assumes ownership of all added tests: you can not add test
Packit Service e31359
 * or suite that are local variable since they can't be deleted.
Packit Service e31359
 *
Packit Service e31359
 * Example of usage:
Packit Service e31359
 * \code
Packit Service e31359
 * #include <cppunit/extensions/TestFactoryRegistry.h>
Packit Service e31359
 * #include <cppunit/CompilerOutputter.h>
Packit Service e31359
 * #include <cppunit/TestResult.h>
Packit Service e31359
 * #include <cppunit/TestResultCollector.h>
Packit Service e31359
 * #include <cppunit/TestRunner.h>
Packit Service e31359
 * #include <cppunit/TextTestProgressListener.h>
Packit Service e31359
 * 
Packit Service e31359
 * 
Packit Service e31359
 * int 
Packit Service e31359
 * main( int argc, char* argv[] )
Packit Service e31359
 * {
Packit Service e31359
 *   std::string testPath = (argc > 1) ? std::string(argv[1]) : "";
Packit Service e31359
 * 
Packit Service e31359
 *   // Create the event manager and test controller
Packit Service e31359
 *   CppUnit::TestResult controller;
Packit Service e31359
 * 
Packit Service e31359
 *   // Add a listener that colllects test result
Packit Service e31359
 *   CppUnit::TestResultCollector result;
Packit Service e31359
 *   controller.addListener( &result );        
Packit Service e31359
 * 
Packit Service e31359
 *   // Add a listener that print dots as test run.
Packit Service e31359
 *   CppUnit::TextTestProgressListener progress;
Packit Service e31359
 *   controller.addListener( &progress );      
Packit Service e31359
 * 
Packit Service e31359
 *   // Add the top suite to the test runner
Packit Service e31359
 *   CppUnit::TestRunner runner;
Packit Service e31359
 *   runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );   
Packit Service e31359
 *   try
Packit Service e31359
 *   {
Packit Service e31359
 *     std::cout << "Running "  <<  testPath;
Packit Service e31359
 *     runner.run( controller, testPath );
Packit Service e31359
 * 
Packit Service e31359
 *     std::cerr << std::endl;
Packit Service e31359
 * 
Packit Service e31359
 *     // Print test in a compiler compatible format.
Packit Service e31359
 *     CppUnit::CompilerOutputter outputter( &result, std::cerr );
Packit Service e31359
 *     outputter.write();                      
Packit Service e31359
 *   }
Packit Service e31359
 *   catch ( std::invalid_argument &e )  // Test path not resolved
Packit Service e31359
 *   {
Packit Service e31359
 *     std::cerr  <<  std::endl  
Packit Service e31359
 *                <<  "ERROR: "  <<  e.what()
Packit Service e31359
 *                << std::endl;
Packit Service e31359
 *     return 0;
Packit Service e31359
 *   }
Packit Service e31359
 * 
Packit Service e31359
 *   return result.wasSuccessful() ? 0 : 1;
Packit Service e31359
 * }
Packit Service e31359
 * \endcode
Packit Service e31359
 */
Packit Service e31359
class CPPUNIT_API TestRunner
Packit Service e31359
{
Packit Service e31359
public:
Packit Service e31359
  /*! \brief Constructs a TestRunner object.
Packit Service e31359
   */
Packit Service e31359
  TestRunner(  );
Packit Service e31359
Packit Service e31359
  /// Destructor.
Packit Service e31359
  virtual ~TestRunner();
Packit Service e31359
Packit Service e31359
  /*! \brief Adds the specified test.
Packit Service e31359
   * \param test Test to add. The TestRunner takes ownership of the test.
Packit Service e31359
   */
Packit Service e31359
  virtual void addTest( Test *test );
Packit Service e31359
Packit Service e31359
  /*! \brief Runs a test using the specified controller.
Packit Service e31359
   * \param controller Event manager and controller used for testing
Packit Service e31359
   * \param testPath Test path string. See Test::resolveTestPath() for detail.
Packit Service e31359
   * \exception std::invalid_argument if no test matching \a testPath is found.
Packit Service e31359
   *                                  see TestPath::TestPath( Test*, const std::string &)
Packit Service e31359
   *                                  for detail.
Packit Service e31359
   */
Packit Service e31359
  virtual void run( TestResult &controller,
Packit Service e31359
                    const std::string &testPath = "" );
Packit Service e31359
Packit Service e31359
protected:
Packit Service e31359
  /*! \brief (INTERNAL) Mutating test suite.
Packit Service e31359
   */
Packit Service e31359
  class CPPUNIT_API WrappingSuite : public TestSuite
Packit Service e31359
  {
Packit Service e31359
  public:
Packit Service e31359
    WrappingSuite( const std::string &name = "All Tests" );
Packit Service e31359
Packit Service e31359
    int getChildTestCount() const;
Packit Service e31359
Packit Service e31359
    std::string getName() const;
Packit Service e31359
Packit Service e31359
    void run( TestResult *result );
Packit Service e31359
Packit Service e31359
  protected:
Packit Service e31359
    Test *doGetChildTestAt( int index ) const;
Packit Service e31359
Packit Service e31359
    bool hasOnlyOneTest() const;
Packit Service e31359
Packit Service e31359
    Test *getUniqueChildTest() const;
Packit Service e31359
  };
Packit Service e31359
Packit Service e31359
protected:
Packit Service e31359
  WrappingSuite *m_suite;
Packit Service e31359
Packit Service e31359
private:
Packit Service e31359
  /// Prevents the use of the copy constructor.
Packit Service e31359
  TestRunner( const TestRunner &copy );
Packit Service e31359
Packit Service e31359
  /// Prevents the use of the copy operator.
Packit Service e31359
  void operator =( const TestRunner &copy );
Packit Service e31359
Packit Service e31359
private:
Packit Service e31359
};
Packit Service e31359
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_END
Packit Service e31359
Packit Service e31359
#endif  // CPPUNIT_TESTRUNNER_H