From 4c6c7e6474bef34c4bed0d3eb9889012319c938f Mon Sep 17 00:00:00 2001 From: Baptiste Lepilleur Date: Sat, 6 Oct 2001 09:16:31 +0000 Subject: Examples/cppunittest/CppUnitTestMain. examples/cppunittest/CppUnitTestMain.cpp : application returns 0 is test suite run sucessfuly, 1 otherwise. * src/cppunit/Exception.cpp : bug fix, operator =() with VC++. Removed call to std::exception::operator =() which is bugged on VC++. * doc/FAQ : added a note explaining why the test ExceptionTest.testAssignment used to fail. * NEWS : updated and detailed. * include/cppunit/TestResult.h : * src/cppunit/TestResult.cpp : added reset(). * include/cppunit/TextTestRunner.h : * src/cppunit/TextTestRunner.cpp : Constructor take an optional TextTestRestult. The TextTestResult remain alive as long as the runner. Added result() to retreive the result. Printing the result is now optinal (enabled by default). --- src/cppunit/TextTestRunner.cpp | 50 +++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 10 deletions(-) (limited to 'src/cppunit/TextTestRunner.cpp') diff --git a/src/cppunit/TextTestRunner.cpp b/src/cppunit/TextTestRunner.cpp index c00c456..7f2bc37 100644 --- a/src/cppunit/TextTestRunner.cpp +++ b/src/cppunit/TextTestRunner.cpp @@ -6,14 +6,27 @@ namespace CppUnit { -TextTestRunner::TextTestRunner() +/** Constructs a test runner with the specified TestResult. + * + * A TextTestRunner owns a TextTestResult. It can be accessed + * anytime using result(). If you run the test more than once, + * remember to call result()->reset() before each run. + * + * \param result TextTestResult used by the test runner. If none + * is specified then a default TextTestResult is + * instanciated. + */ +TextTestRunner::TextTestRunner( TextTestResult *result ) : + m_result( result == 0 ? new TextTestResult() : + result ), + m_suite( new TestSuite( "All Tests" ) ) { - m_suite = new TestSuite( "All Tests" ); } TextTestRunner::~TextTestRunner() { + delete m_result; delete m_suite; } @@ -35,18 +48,22 @@ TextTestRunner::addTest( Test *test ) * \param testName Name of the test case to run. If an empty is given, then * all added test are run. The name must be the name of * of an added test. - * \param doWait if \c true then the user must press the RETURN key + * \param wait if \c true then the user must press the RETURN key * before the run() method exit. + * \param printResult if \c true (default) then the test result are printed + * on the standard output. * \return \c true is the test was successful, \c false if the test * failed or was not found. */ bool TextTestRunner::run( std::string testName, - bool doWait ) + bool doWait, + bool doPrintResult ) { - bool sucessful = runTestByName( testName ); + runTestByName( testName ); + printResult( doPrintResult ); wait( doWait ); - return sucessful; + return m_result->wasSuccessful(); } @@ -76,6 +93,14 @@ TextTestRunner::wait( bool doWait ) } +void +TextTestRunner::printResult( bool doPrintResult ) +{ + if ( doPrintResult ) + std::cout << *m_result << std::endl; +} + + Test * TextTestRunner::findTestByName( std::string name ) const { @@ -94,10 +119,15 @@ TextTestRunner::findTestByName( std::string name ) const bool TextTestRunner::runTest( Test *test ) { - TextTestResult result; - test->run( &result ); - std::cout << result << std::endl; - return result.wasSuccessful(); + test->run( m_result ); + return m_result->wasSuccessful(); +} + + +TextTestResult * +TextTestRunner::result() +{ + return m_result; } -- cgit v1.2.1