#include #include "cppunit/TextTestResult.h" #include "cppunit/Exception.h" #include "cppunit/NotEqualException.h" #include "cppunit/Test.h" namespace CppUnit { void TextTestResult::addError( Test *test, Exception *e ) { TestResult::addError( test, e ); std::cerr << "E"; } void TextTestResult::addFailure( Test *test, Exception *e ) { TestResult::addFailure (test, e); std::cerr << "F"; } void TextTestResult::startTest( Test *test ) { TestResult::startTest (test); std::cerr << "."; } void TextTestResult::printFailures( std::ostream &stream ) { TestFailures::const_iterator itFailure = failures().begin(); int failureNumber = 1; while ( itFailure != failures().end() ) printFailure( *itFailure++, failureNumber++, stream ); } void TextTestResult::printFailure( TestFailure *failure, int failureNumber, std::ostream &stream ) { printFailureListMark( failureNumber, stream ); stream << ' '; printFailureTestName( failure, stream ); stream << ' '; printFailureType( failure, stream ); stream << ' '; printFailureLocation( failure->thrownException(), stream ); stream << std::endl; printFailureDetail( failure->thrownException(), stream ); stream << std::endl; } void TextTestResult::printFailureListMark( int failureNumber, std::ostream &stream ) { stream << failureNumber << ")"; } void TextTestResult::printFailureTestName( TestFailure *failure, std::ostream &stream ) { stream << "test: " << failure->failedTest()->getName(); } void TextTestResult::printFailureType( TestFailure *failure, std::ostream &stream ) { stream << "(" << (failure->isError() ? "E" : "F") << ")"; } void TextTestResult::printFailureLocation( Exception *thrownException, std::ostream &stream ) { stream << "line: " << thrownException->lineNumber() << ' ' << thrownException->fileName(); } void TextTestResult::printFailureDetail( Exception *thrownException, std::ostream &stream ) { if ( thrownException->isInstanceOf( NotEqualException::type() ) ) { NotEqualException *e = (NotEqualException*)thrownException; stream << "expected: " << e->expectedValue() << std::endl << "but was: " << e->actualValue(); } else { stream << " \"" << thrownException->what() << "\""; } } void TextTestResult::print( std::ostream& stream ) { printHeader( stream ); stream << std::endl; printFailures( stream ); } void TextTestResult::printHeader( std::ostream &stream ) { if (wasSuccessful ()) stream << std::endl << "OK (" << runTests () << " tests)" << std::endl; else stream << std::endl << "!!!FAILURES!!!" << std::endl << "Test Results:" << std::endl << "Run: " << runTests() << " Failures: " << testFailures() << " Errors: " << testErrors() << std::endl; } std::ostream & operator <<( std::ostream &stream, TextTestResult &result ) { result.print (stream); return stream; } } // namespace CppUnit