diff options
| author | Baptiste Lepilleur <gaiacrtn@free.fr> | 2002-04-13 17:51:20 +0000 |
|---|---|---|
| committer | Baptiste Lepilleur <gaiacrtn@free.fr> | 2002-04-13 17:51:20 +0000 |
| commit | 70d62c5c20105c982df7379e2e61148fc959ff35 (patch) | |
| tree | 5c8a2bf11b5bba69f999d93e5519d766988caf88 | |
| parent | 342c67d11745f45c60deea59163c035ca5780619 (diff) | |
| download | cppunit-70d62c5c20105c982df7379e2e61148fc959ff35.tar.gz | |
Include/cppunit/XmlOutputter.
include/cppunit/XmlOutputter.h:
* src/cppunit/XmlOutputter.cpp: Made XML output more human readable. Idented element.
* examples/cppunittest/XmlUniformiser.h:
* examples/cppunittest/XmlUniformiser.cpp:
* examples/cppunittest/XmlUniformiserTest.cpp: modified to ignore trailing space
at the end of element content.
| -rw-r--r-- | ChangeLog | 10 | ||||
| -rw-r--r-- | examples/cppunittest/CppUnitTestMain.cpp | 10 | ||||
| -rw-r--r-- | examples/cppunittest/XmlUniformiser.cpp | 11 | ||||
| -rw-r--r-- | examples/cppunittest/XmlUniformiser.h | 1 | ||||
| -rw-r--r-- | examples/cppunittest/XmlUniformiserTest.cpp | 2 | ||||
| -rw-r--r-- | include/cppunit/XmlOutputter.h | 2 | ||||
| -rw-r--r-- | src/cppunit/XmlOutputter.cpp | 40 |
7 files changed, 63 insertions, 13 deletions
@@ -1,5 +1,15 @@ 2002-04-13 Baptiste Lepilleur <gaiacrtn@free.fr> + * include/cppunit/XmlOutputter.h: + * src/cppunit/XmlOutputter.cpp: Made XML output more human readable. Idented element. + + * examples/cppunittest/XmlUniformiser.h: + * examples/cppunittest/XmlUniformiser.cpp: + * examples/cppunittest/XmlUniformiserTest.cpp: modified to ignore trailing space + at the end of element content. + +2002-04-13 Baptiste Lepilleur <gaiacrtn@free.fr> + * NEWS: updated * doc/other_documentation.dox: addded new module for test plug-in. diff --git a/examples/cppunittest/CppUnitTestMain.cpp b/examples/cppunittest/CppUnitTestMain.cpp index fad2868..04da95d 100644 --- a/examples/cppunittest/CppUnitTestMain.cpp +++ b/examples/cppunittest/CppUnitTestMain.cpp @@ -3,8 +3,10 @@ #include <cppunit/TestResultCollector.h> #include <cppunit/TestRunner.h> #include <cppunit/TextTestProgressListener.h> +#include <cppunit/XmlOutputter.h> #include "CppUnitTestSuite.h" #include <stdexcept> +#include <fstream> int @@ -37,7 +39,13 @@ main( int argc, char* argv[] ) // Print test in a compiler compatible format. CppUnit::CompilerOutputter outputter( &result, std::cerr ); - outputter.write(); + outputter.write(); + + std::ofstream file( "tests.xml" ); + CppUnit::XmlOutputter xml( &result, file ); + xml.setStyleSheet( "report.xsl" ); + xml.write(); + file.close(); } catch ( std::invalid_argument &e ) // Test path not resolved { diff --git a/examples/cppunittest/XmlUniformiser.cpp b/examples/cppunittest/XmlUniformiser.cpp index 2776ddc..109a843 100644 --- a/examples/cppunittest/XmlUniformiser.cpp +++ b/examples/cppunittest/XmlUniformiser.cpp @@ -223,6 +223,17 @@ XmlUniformiser::copyElementContent() { while ( isValidIndex() && !startsWith( "<" ) ) copyNext(); + removeTrailingSpaces(); +} + + +void +XmlUniformiser::removeTrailingSpaces() +{ + int index = m_stripped.length(); + while ( index-1 > 0 && isSpace( m_stripped[index-1] ) ) + --index; + m_stripped.resize( index ); } diff --git a/examples/cppunittest/XmlUniformiser.h b/examples/cppunittest/XmlUniformiser.h index 7df2cc5..d1e98d5 100644 --- a/examples/cppunittest/XmlUniformiser.h +++ b/examples/cppunittest/XmlUniformiser.h @@ -40,6 +40,7 @@ private: bool isEndOfAttributeName(); void copyAttributeValue(); void copyUntilDoubleQuote(); + void removeTrailingSpaces(); private: int m_index; diff --git a/examples/cppunittest/XmlUniformiserTest.cpp b/examples/cppunittest/XmlUniformiserTest.cpp index c440f0a..300ca6b 100644 --- a/examples/cppunittest/XmlUniformiserTest.cpp +++ b/examples/cppunittest/XmlUniformiserTest.cpp @@ -98,7 +98,7 @@ void XmlUniformiserTest::testElementWithContent() { check( "<Element>\nContent\n</Element>\n", - "<Element>Content\n</Element>" ); + "<Element>Content</Element>" ); } diff --git a/include/cppunit/XmlOutputter.h b/include/cppunit/XmlOutputter.h index e1b12f5..4f93ed0 100644 --- a/include/cppunit/XmlOutputter.h +++ b/include/cppunit/XmlOutputter.h @@ -75,7 +75,7 @@ public: int numericValue ); void addNode( Node *node ); - std::string toString() const; + std::string toString( const std::string &indent = "" ) const; private: typedef std::pair<std::string,std::string> Attribute; diff --git a/src/cppunit/XmlOutputter.cpp b/src/cppunit/XmlOutputter.cpp index 7b9b2b7..d90513f 100644 --- a/src/cppunit/XmlOutputter.cpp +++ b/src/cppunit/XmlOutputter.cpp @@ -62,22 +62,42 @@ XmlOutputter::Node::addNode( Node *node ) std::string -XmlOutputter::Node::toString() const +XmlOutputter::Node::toString( const std::string &indent ) const { - std::string element = "<"; + std::string element( indent ); + element += "<"; element += m_name; - element += " "; - element += attributesAsString(); - element += " >\n"; + if ( !m_attributes.empty() ) + { + element += " "; + element += attributesAsString(); + } + element += ">"; - Nodes::const_iterator itNode = m_nodes.begin(); - while ( itNode != m_nodes.end() ) + if ( !m_nodes.empty() ) { - const Node *node = *itNode++; - element += node->toString(); + element += "\n"; + + std::string subNodeIndent( indent + " " ); + Nodes::const_iterator itNode = m_nodes.begin(); + while ( itNode != m_nodes.end() ) + { + const Node *node = *itNode++; + element += node->toString( subNodeIndent ); + } + + element += indent; } - element += escape( m_content ); + if ( !m_content.empty() ) + { + element += escape( m_content ); + if ( !m_nodes.empty() ) + { + element += "\n"; + element += indent; + } + } element += "</"; element += m_name; |
