|
Packit |
8c9aa0 |
// ==> Implementation of cppunit/ui/text/TestRunner.h
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
#include <cppunit/config/SourcePrefix.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/TestSuite.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/TextTestResult.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/TextOutputter.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/TextTestProgressListener.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/TestResult.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/ui/text/TextTestRunner.h>
|
|
Packit |
8c9aa0 |
#include <cppunit/portability/Stream.h>
|
|
Packit |
8c9aa0 |
#include <stdexcept>
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_BEGIN
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! Constructs a new text runner.
|
|
Packit |
8c9aa0 |
* \param outputter used to print text result. Owned by the runner.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
TextTestRunner::TextTestRunner( Outputter *outputter )
|
|
Packit |
8c9aa0 |
: m_result( new TestResultCollector() )
|
|
Packit |
8c9aa0 |
, m_eventManager( new TestResult() )
|
|
Packit |
8c9aa0 |
, m_outputter( outputter )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
if ( !m_outputter )
|
|
Packit |
8c9aa0 |
m_outputter = new TextOutputter( m_result, stdCOut() );
|
|
Packit |
8c9aa0 |
m_eventManager->addListener( m_result );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
TextTestRunner::~TextTestRunner()
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
delete m_eventManager;
|
|
Packit |
8c9aa0 |
delete m_outputter;
|
|
Packit |
8c9aa0 |
delete m_result;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! Runs the named test case.
|
|
Packit |
8c9aa0 |
*
|
|
Packit |
8c9aa0 |
* \param testName Name of the test case to run. If an empty is given, then
|
|
Packit |
8c9aa0 |
* all added tests are run. The name can be the name of any
|
|
Packit |
8c9aa0 |
* test in the hierarchy.
|
|
Packit |
8c9aa0 |
* \param doWait if \c true then the user must press the RETURN key
|
|
Packit |
8c9aa0 |
* before the run() method exit.
|
|
Packit |
8c9aa0 |
* \param doPrintResult if \c true (default) then the test result are printed
|
|
Packit |
8c9aa0 |
* on the standard output.
|
|
Packit |
8c9aa0 |
* \param doPrintProgress if \c true (default) then TextTestProgressListener is
|
|
Packit |
8c9aa0 |
* used to show the progress.
|
|
Packit |
8c9aa0 |
* \return \c true is the test was successful, \c false if the test
|
|
Packit |
8c9aa0 |
* failed or was not found.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
bool
|
|
Packit |
8c9aa0 |
TextTestRunner::run( std::string testName,
|
|
Packit |
8c9aa0 |
bool doWait,
|
|
Packit |
8c9aa0 |
bool doPrintResult,
|
|
Packit |
8c9aa0 |
bool doPrintProgress )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
TextTestProgressListener progress;
|
|
Packit |
8c9aa0 |
if ( doPrintProgress )
|
|
Packit |
8c9aa0 |
m_eventManager->addListener( &progress );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
TestRunner *pThis = this;
|
|
Packit |
8c9aa0 |
pThis->run( *m_eventManager, testName );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
if ( doPrintProgress )
|
|
Packit |
8c9aa0 |
m_eventManager->removeListener( &progress );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
printResult( doPrintResult );
|
|
Packit |
8c9aa0 |
wait( doWait );
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
return m_result->wasSuccessful();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TextTestRunner::wait( bool doWait )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
#if !defined( CPPUNIT_NO_STREAM )
|
|
Packit |
8c9aa0 |
if ( doWait )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
stdCOut() << "<RETURN> to continue\n";
|
|
Packit |
8c9aa0 |
stdCOut().flush();
|
|
Packit |
8c9aa0 |
std::cin.get ();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
#endif
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TextTestRunner::printResult( bool doPrintResult )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
stdCOut() << "\n";
|
|
Packit |
8c9aa0 |
if ( doPrintResult )
|
|
Packit |
8c9aa0 |
m_outputter->write();
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! Returns the result of the test run.
|
|
Packit |
8c9aa0 |
* Use this after calling run() to access the result of the test run.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
TestResultCollector &
|
|
Packit |
8c9aa0 |
TextTestRunner::result() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return *m_result;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! Returns the event manager.
|
|
Packit |
8c9aa0 |
* The instance of TestResult results returned is the one that is used to run the
|
|
Packit |
8c9aa0 |
* test. Use this to register additional TestListener before running the tests.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
TestResult &
|
|
Packit |
8c9aa0 |
TextTestRunner::eventManager() const
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
return *m_eventManager;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
/*! Specifies an alternate outputter.
|
|
Packit |
8c9aa0 |
*
|
|
Packit |
8c9aa0 |
* Notes that the outputter will be use after the test run only if \a printResult was
|
|
Packit |
8c9aa0 |
* \c true.
|
|
Packit |
8c9aa0 |
* \param outputter New outputter to use. The previous outputter is destroyed.
|
|
Packit |
8c9aa0 |
* The TextTestRunner assumes ownership of the outputter.
|
|
Packit |
8c9aa0 |
* \see CompilerOutputter, XmlOutputter, TextOutputter.
|
|
Packit |
8c9aa0 |
*/
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TextTestRunner::setOutputter( Outputter *outputter )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
delete m_outputter;
|
|
Packit |
8c9aa0 |
m_outputter = outputter;
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
void
|
|
Packit |
8c9aa0 |
TextTestRunner::run( TestResult &controller,
|
|
Packit |
8c9aa0 |
const std::string &testPath )
|
|
Packit |
8c9aa0 |
{
|
|
Packit |
8c9aa0 |
TestRunner::run( controller, testPath );
|
|
Packit |
8c9aa0 |
}
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
|
|
Packit |
8c9aa0 |
CPPUNIT_NS_END
|