summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaptiste Lepilleur <gaiacrtn@free.fr>2002-04-13 17:51:20 +0000
committerBaptiste Lepilleur <gaiacrtn@free.fr>2002-04-13 17:51:20 +0000
commit70d62c5c20105c982df7379e2e61148fc959ff35 (patch)
tree5c8a2bf11b5bba69f999d93e5519d766988caf88
parent342c67d11745f45c60deea59163c035ca5780619 (diff)
downloadcppunit-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--ChangeLog10
-rw-r--r--examples/cppunittest/CppUnitTestMain.cpp10
-rw-r--r--examples/cppunittest/XmlUniformiser.cpp11
-rw-r--r--examples/cppunittest/XmlUniformiser.h1
-rw-r--r--examples/cppunittest/XmlUniformiserTest.cpp2
-rw-r--r--include/cppunit/XmlOutputter.h2
-rw-r--r--src/cppunit/XmlOutputter.cpp40
7 files changed, 63 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 04254c4..c0eee81 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;