From 6a1755ef0e36aeb1ac2df0a46e5dafe08a4699ee Mon Sep 17 00:00:00 2001 From: Baptiste Lepilleur Date: Fri, 5 Oct 2001 07:06:28 +0000 Subject: NEWS : updated. NEWS : updated. * include/cppunit/Exception.h : added include Portability.h. * include/cppunit/TestResult.* : changed TestFailures to a deque. added tests(). * examples/cppunittest/CppUnitTest.dsp : * examples/cppunittest/MakeFile.am : * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp : Added XmlTestResultOutputterTest.*, XmlUniformiser.*, XmlUniformiserTest.*, UnitTestToolSuite.h, OutputSuite.h. * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp : revised project folders structure. Added missing NoteEqualExceptionTest.*. * examples/cppunittest/CppUnitTestSuite.cpp : added 'Output' and 'UnitTestTool' suites. * src/cppunit/cppunit.dsp: removed estring.h. Revised project folders structure. Removed TestRegistry.*. Added TestSetUp.h, XmlTestResultOutputter.*. * src/cppunit/MakeFile.am: added XmlTestResultOutputter.*. * src/testrunner/TestRunnerDlg.cpp: removed disabled code. --- include/cppunit/Exception.h | 1 + include/cppunit/TestResult.h | 11 +-- include/cppunit/XmlTestResultOutputter.h | 113 +++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 include/cppunit/XmlTestResultOutputter.h (limited to 'include/cppunit') diff --git a/include/cppunit/Exception.h b/include/cppunit/Exception.h index 39fbc02..8be5781 100644 --- a/include/cppunit/Exception.h +++ b/include/cppunit/Exception.h @@ -1,6 +1,7 @@ #ifndef CPPUNIT_EXCEPTION_H #define CPPUNIT_EXCEPTION_H +#include #include #include diff --git a/include/cppunit/TestResult.h b/include/cppunit/TestResult.h index 0a7ce58..dfb3889 100644 --- a/include/cppunit/TestResult.h +++ b/include/cppunit/TestResult.h @@ -1,8 +1,8 @@ #ifndef CPPUNIT_TESTRESULT_H #define CPPUNIT_TESTRESULT_H -#include #include +#include namespace CppUnit { @@ -34,7 +34,8 @@ class TestListener; class TestResult { public: - typedef std::vector TestFailures; + typedef std::deque TestFailures; + typedef std::deque Tests; class SynchronizationObject { @@ -63,6 +64,7 @@ class TestResult virtual void stop(); virtual const TestFailures& failures() const; + virtual const Tests &tests() const; virtual void addListener( TestListener *listener ); virtual void removeListener( TestListener *listener ); @@ -89,9 +91,10 @@ class TestResult virtual void setSynchronizationObject( SynchronizationObject *syncObject ); virtual void addFailure( TestFailure *failure ); + Tests m_tests; TestFailures m_failures; - std::vector m_listeners; - int m_runTests; + typedef std::deque TestListeners; + TestListeners m_listeners; int m_testErrors; bool m_stop; SynchronizationObject *m_syncObject; diff --git a/include/cppunit/XmlTestResultOutputter.h b/include/cppunit/XmlTestResultOutputter.h new file mode 100644 index 0000000..98952a4 --- /dev/null +++ b/include/cppunit/XmlTestResultOutputter.h @@ -0,0 +1,113 @@ +#ifndef CPPUNIT_XMLTESTRESULTOUTPUTTER_H +#define CPPUNIT_XMLTESTRESULTOUTPUTTER_H + +#include +#include +#include +#include +#include + + +namespace CppUnit +{ + +class Test; +class TestFailure; +class TestResult; + + +/*! This class ouputs a TestResult in XML format. + */ +class XmlTestResultOutputter +{ +public: + /*! Constructs a XmlTestResultOutputter object. + */ + XmlTestResultOutputter(); + + /// Destructor. + virtual ~XmlTestResultOutputter(); + + /*! Write the specified result as an XML document in the specified stream. + * + * Refer to examples/cppunittest/XmlTestResultOutputterTest.cpp for example + * of use and XML document structure. + * + * \param result TestResult to write. + * \param stream Output stream the result are wrote into. + */ + void write( TestResult *result, + std::ostream &stream ); + + /*! This class represents an XML Element. + * \warning This class will probably be replaced with an abstract + * builder in future version. + */ + class Node + { + public: + Node( std::string elementName, + std::string content ="" ); + Node( std::string elementName, + int numericContent ); + virtual ~Node(); + + void addAttribute( std::string attributeName, + std::string value ); + void addAttribute( std::string attributeName, + int numericValue ); + void addNode( Node *node ); + + std::string toString() const; + + private: + typedef std::pair Attribute; + + std::string attributesAsString() const; + std::string escape( std::string value ) const; + static std::string asString( int value ); + + private: + std::string m_name; + std::string m_content; + typedef std::deque Attributes; + Attributes m_attributes; + typedef std::deque Nodes; + Nodes m_nodes; + }; + + + virtual void writeProlog( std::ostream &stream ); + virtual void writeTestsResult( TestResult *result, + std::ostream &stream ); + + typedef std::map FailedTests; + virtual Node *makeRootNode( TestResult *result ); + virtual Node *makeFailedTestsNode( FailedTests &failedTests, + TestResult *result ); + virtual Node *makeSucessfulTestsNode( FailedTests &failedTests, + TestResult *result ); + virtual Node *makeStatisticsNode( TestResult *result ); + virtual Node *makeFailedTestNode( Test *test, + TestFailure *failure, + int testNumber ); + virtual Node *makeSucessfulTestNode( Test *test, + int testNumber ); +protected: + void fillFailedTestsMap( TestResult *result, + FailedTests &failedTests ); + +private: + /// Prevents the use of the copy constructor. + XmlTestResultOutputter( const XmlTestResultOutputter © ); + + /// Prevents the use of the copy operator. + void operator =( const XmlTestResultOutputter © ); + +private: +}; + + +} // namespace CppUnit + +#endif // CPPUNIT_XMLTESTRESULTOUTPUTTER_H -- cgit v1.2.1