diff options
| author | Baptiste Lepilleur <gaiacrtn@free.fr> | 2001-10-07 18:37:53 +0000 |
|---|---|---|
| committer | Baptiste Lepilleur <gaiacrtn@free.fr> | 2001-10-07 18:37:53 +0000 |
| commit | 150339335e3c5538c1e496ae01babf148bd29ec5 (patch) | |
| tree | 9f354aaee81e08c27dc6da0709074babde7672f5 /src/cppunit/XmlTestResultOutputter.cpp | |
| parent | 4410db53e88dc5aca9f86abaf9dffccbd5f94471 (diff) | |
| download | cppunit-150339335e3c5538c1e496ae01babf148bd29ec5.tar.gz | |
Include/cppunit/CompilerTestResultOutputter.
include/cppunit/CompilerTestResultOutputter.h :
renamed CompilerOutputter.h
* src/cppunit/CompilerTestResultOutputter.cpp :
renamed CompilerOutputter.cpp
* include/cppunit/CompilerTestResultOutputter.h :
* src/cppunit/CompilerTestResultOutputter.cpp : ajust max line length
for wrapping. Added static factory method defaultOutputter(). Print
the number of test runs on success.
* include/cppunit/CompilerTestResultOutputter.h : renamed
CompilerOutputter.h.
* src/cppunit/CompilerTestResultOutputter.cpp : renamed
CompilerOutputter.cpp.
* examples/cppunittest/CppUnitTestMain.cpp : use factory method
CompilerTestResultOutputter::defaultOutputter().
* src/msvc6/DSPlugIn/DSPlugIn.dsp : removed COM registration in
post-build step. IT is automatically done by VC++ when the add-in is
added. Caused build to failed if the add-in was used in VC++.
* NEWS : updated.
* src/cppunit/TestAssert.cpp : modified deprecated assert
implementations to use Asserter.
* examples/cppunittest/XmlTestResultOutputterTest.h :
renamed XmlOutputterTest.h.
* examples/cppunittest/XmlTestResultOutputterTest.cpp :
renamed XmlOutputterTest.cpp.
* NEWS :
* examples/cppunittest/CppUnitTestMain.cpp :
* examples/cppunittest/CppUnitTestMain.dsp :
* examples/cppunittest/Makefile.am :
* examples/cppunittest/XmlTestResultOutputterTest.h :
* examples/cppunittest/XmlTestResultOutputterTest.cpp :
* examples/msvc6/CppUniTestApp/CppUnitTestApp.dsp
* include/cppunit/CompilerOutputter.h :
* include/cppunit/Makefile.am :
* include/cppunit/XmlTestResultOutputter.h :
* src/cppunit/CompilerOutputter.cpp :
* src/cppunit/cppunit.dsp :
* src/cppunit/Makefile.am :
* src/cppunit/XmlTestResultOutputter.cpp : change due to renaming
CompilerTestResultOutputter to CompilerOutputter,
XmlTestResultOutputter to XmlOuputter, XmlTestResultOutputterTest
to XmlOutputterTest.
Diffstat (limited to 'src/cppunit/XmlTestResultOutputter.cpp')
| -rw-r--r-- | src/cppunit/XmlTestResultOutputter.cpp | 318 |
1 files changed, 0 insertions, 318 deletions
diff --git a/src/cppunit/XmlTestResultOutputter.cpp b/src/cppunit/XmlTestResultOutputter.cpp deleted file mode 100644 index 7e81c7c..0000000 --- a/src/cppunit/XmlTestResultOutputter.cpp +++ /dev/null @@ -1,318 +0,0 @@ -#include <cppunit/Exception.h> -#include <cppunit/Test.h> -#include <cppunit/TestResult.h> -#include <cppunit/XmlTestResultOutputter.h> -#include <map> -#include <stdlib.h> - - -namespace CppUnit -{ - -// XmlTestResultOutputter::Node -// ////////////////////////////////////////////////////////////////// - - -XmlTestResultOutputter::Node::Node( std::string elementName, - std::string content ) : - m_name( elementName ), - m_content( content ) -{ -} - - -XmlTestResultOutputter::Node::Node( std::string elementName, - int numericContent ) : - m_name( elementName ) -{ - m_content = asString( numericContent ); -} - - -XmlTestResultOutputter::Node::~Node() -{ - Nodes::iterator itNode = m_nodes.begin(); - while ( itNode != m_nodes.end() ) - delete *itNode++; -} - - -void -XmlTestResultOutputter::Node::addAttribute( std::string attributeName, - std::string value ) -{ - m_attributes.push_back( Attribute( attributeName, value ) ); -} - - -void -XmlTestResultOutputter::Node::addAttribute( std::string attributeName, - int numericValue ) -{ - addAttribute( attributeName, asString( numericValue ) ); -} - - -void -XmlTestResultOutputter::Node::addNode( Node *node ) -{ - m_nodes.push_back( node ); -} - - -std::string -XmlTestResultOutputter::Node::toString() const -{ - std::string element = "<"; - element += m_name; - element += " "; - element += attributesAsString(); - element += " >\n"; - - Nodes::const_iterator itNode = m_nodes.begin(); - while ( itNode != m_nodes.end() ) - { - const Node *node = *itNode++; - element += node->toString(); - } - - element += m_content; - - element += "</"; - element += m_name; - element += ">\n"; - - return element; -} - - -std::string -XmlTestResultOutputter::Node::attributesAsString() const -{ - std::string attributes; - Attributes::const_iterator itAttribute = m_attributes.begin(); - while ( itAttribute != m_attributes.end() ) - { - const Attribute &attribute = *itAttribute++; - attributes += attribute.first; - attributes += "=\""; - attributes += escape( attribute.second ); - attributes += "\""; - } - return attributes; -} - - -std::string -XmlTestResultOutputter::Node::escape( std::string value ) const -{ - std::string escaped; - for ( int index =0; index < value.length(); ++index ) - { - char c = value[index ]; - switch ( c ) // escape all predefined XML entity (safe?) - { - case '<': - escaped += "<"; - break; - case '>': - escaped += ">"; - break; - case '&': - escaped += "&"; - break; - case '\'': - escaped += "'"; - break; - case '"': - escaped += """; - break; - default: - escaped += c; - } - } - - return escaped; -} - -// should be somewhere else... Future CppUnit::String ? -std::string -XmlTestResultOutputter::Node::asString( int value ) -{ - OStringStream stream; - stream << value; - return stream.str(); -} - - - - -// XmlTestResultOutputter -// ////////////////////////////////////////////////////////////////// - -XmlTestResultOutputter::XmlTestResultOutputter() -{ -} - - -XmlTestResultOutputter::~XmlTestResultOutputter() -{ -} - - -void -XmlTestResultOutputter::write( TestResult *result, - std::ostream &stream ) -{ - writeProlog( stream ); - writeTestsResult( result, stream ); -} - - -void -XmlTestResultOutputter::writeProlog( std::ostream &stream ) -{ - stream << "<?xml version=\"1.0\" encoding='ISO-8859-1' standalone='yes' ?>" - << std::endl; -} - - -void -XmlTestResultOutputter::writeTestsResult( TestResult *result, - std::ostream &stream ) -{ - Node *rootNode = makeRootNode( result ); - stream << rootNode->toString(); - delete rootNode; -} - - -XmlTestResultOutputter::Node * -XmlTestResultOutputter::makeRootNode( TestResult *result ) -{ - Node *rootNode = new Node( "TestRun" ); - - FailedTests failedTests; - fillFailedTestsMap( result, failedTests ); - - rootNode->addNode( makeFailedTestsNode( failedTests, result ) ); - rootNode->addNode( makeSucessfulTestsNode( failedTests, result ) ); - rootNode->addNode( makeStatisticsNode( result ) ); - - return rootNode; -} - - -void -XmlTestResultOutputter::fillFailedTestsMap( TestResult *result, - FailedTests &failedTests ) -{ - const TestResult::TestFailures &failures = result->failures(); - TestResult::TestFailures::const_iterator itFailure = failures.begin(); - while ( itFailure != failures.end() ) - { - TestFailure *failure = *itFailure++; - failedTests.insert( std::make_pair(failure->failedTest(), failure ) ); - } -} - - -XmlTestResultOutputter::Node * -XmlTestResultOutputter::makeFailedTestsNode( FailedTests &failedTests, - TestResult *result ) -{ - Node *rootNode = new Node( "FailedTests" ); - - const TestResult::Tests &tests = result->tests(); - for ( int testNumber = 0; testNumber < tests.size(); ++testNumber ) - { - Test *test = tests[testNumber]; - if ( failedTests.find( test ) != failedTests.end() ) - { - rootNode->addNode( makeFailedTestNode( test, - failedTests[test], - testNumber+1 ) ); - } - } - - return rootNode; -} - - -XmlTestResultOutputter::Node * -XmlTestResultOutputter::makeSucessfulTestsNode( FailedTests &failedTests, - TestResult *result ) -{ - Node *rootNode = new Node( "SucessfulTests" ); - - const TestResult::Tests &tests = result->tests(); - for ( int testNumber = 0; testNumber < tests.size(); ++testNumber ) - { - Test *test = tests[testNumber]; - if ( failedTests.find( test ) == failedTests.end() ) - { - rootNode->addNode( makeSucessfulTestNode( test, - testNumber+1 ) ); - } - } - - return rootNode; -} - - -XmlTestResultOutputter::Node * -XmlTestResultOutputter::makeStatisticsNode( TestResult *result ) -{ - Node *statisticsNode = new Node( "Statistics" ); - statisticsNode->addNode( new Node( "Tests", result->runTests() ) ); - statisticsNode->addNode( new Node( "FailuresTotal", - result->testFailuresTotal() ) ); - statisticsNode->addNode( new Node( "Errors", result->testErrors() ) ); - statisticsNode->addNode( new Node( "Failures", result->testFailures() ) ); - - return statisticsNode; -} - - -XmlTestResultOutputter::Node * -XmlTestResultOutputter::makeFailedTestNode( Test *test, - TestFailure *failure, - int testNumber ) -{ - Exception *thrownException = failure->thrownException(); - - Node *testNode = new Node( "FailedTest", thrownException->what() ); - testNode->addAttribute( "id", testNumber ); - testNode->addNode( new Node( "Name", test->getName() ) ); - testNode->addNode( new Node( "FailureType", - failure->isError() ? "Error" : "Assertion" ) ); - - if ( failure->sourceLine().isValid() ) - testNode->addNode( makeFailureLocationNode( failure ) ); - return testNode; -} - - -XmlTestResultOutputter::Node * -XmlTestResultOutputter::makeFailureLocationNode( TestFailure *failure ) -{ - Node *locationNode = new Node( "Location" ); - SourceLine sourceLine = failure->sourceLine(); - locationNode->addNode( new Node( "File", sourceLine.fileName() ) ); - locationNode->addNode( new Node( "Line", sourceLine.lineNumber() ) ); - return locationNode; -} - - -XmlTestResultOutputter::Node * -XmlTestResultOutputter::makeSucessfulTestNode( Test *test, - int testNumber ) -{ - Node *testNode = new Node( "Test" ); - testNode->addAttribute( "id", testNumber ); - testNode->addNode( new Node( "Name", test->getName() ) ); - return testNode; -} - - -} // namespace CppUnit |
