Blame include/cppunit/XmlOutputter.h

Packit Service e31359
#ifndef CPPUNIT_XMLTESTRESULTOUTPUTTER_H
Packit Service e31359
#define CPPUNIT_XMLTESTRESULTOUTPUTTER_H
Packit Service e31359
Packit Service e31359
#include <cppunit/Portability.h>
Packit Service e31359
Packit Service e31359
#if CPPUNIT_NEED_DLL_DECL
Packit Service e31359
#pragma warning( push )
Packit Service e31359
#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
Packit Service e31359
#endif
Packit Service e31359
Packit Service e31359
#include <cppunit/Outputter.h>
Packit Service e31359
#include <deque>
Packit Service e31359
#include <map>
Packit Service e31359
#include <cppunit/portability/Stream.h>
Packit Service e31359
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_BEGIN
Packit Service e31359
Packit Service e31359
Packit Service e31359
class Test;
Packit Service e31359
class TestFailure;
Packit Service e31359
class TestResultCollector;
Packit Service e31359
class XmlDocument;
Packit Service e31359
class XmlElement;
Packit Service e31359
class XmlOutputterHook;
Packit Service e31359
Packit Service e31359
Packit Service e31359
/*! \brief Outputs a TestResultCollector in XML format.
Packit Service e31359
 * \ingroup WritingTestResult
Packit Service e31359
 *
Packit Service e31359
 * Save the test result as a XML stream. 
Packit Service e31359
 *
Packit Service e31359
 * Additional datas can be added to the XML document using XmlOutputterHook. 
Packit Service e31359
 * Hook are not owned by the XmlOutputter. They should be valid until 
Packit Service e31359
 * destruction of the XmlOutputter. They can be removed with removeHook().
Packit Service e31359
 *
Packit Service e31359
 * \see XmlDocument, XmlElement, XmlOutputterHook.
Packit Service e31359
 */
Packit Service e31359
class CPPUNIT_API XmlOutputter : public Outputter
Packit Service e31359
{
Packit Service e31359
public:
Packit Service e31359
  /*! \brief Constructs a XmlOutputter object.
Packit Service e31359
   * \param result Result of the test run.
Packit Service e31359
   * \param stream Stream used to output the XML output.
Packit Service e31359
   * \param encoding Encoding used in the XML file (default is Latin-1). 
Packit Service e31359
   */
Packit Service e31359
  XmlOutputter( TestResultCollector *result,
Packit Service e31359
                OStream &stream,
Packit Service e31359
                const std::string& encoding = std::string("ISO-8859-1") );
Packit Service e31359
Packit Service e31359
  /// Destructor.
Packit Service e31359
  virtual ~XmlOutputter();
Packit Service e31359
Packit Service e31359
  /*! \brief Adds the specified hook to the outputter.
Packit Service e31359
   * \param hook Hook to add. Must not be \c NULL.
Packit Service e31359
   */
Packit Service e31359
  virtual void addHook( XmlOutputterHook *hook );
Packit Service e31359
Packit Service e31359
  /*! \brief Removes the specified hook from the outputter.
Packit Service e31359
   * \param hook Hook to remove.
Packit Service e31359
   */
Packit Service e31359
  virtual void removeHook( XmlOutputterHook *hook );
Packit Service e31359
Packit Service e31359
  /*! \brief Writes the specified result as an XML document to the stream.
Packit Service e31359
   *
Packit Service e31359
   * Refer to examples/cppunittest/XmlOutputterTest.cpp for example
Packit Service e31359
   * of use and XML document structure.
Packit Service e31359
   */
Packit Service e31359
  virtual void write();
Packit Service e31359
Packit Service e31359
  /*! \brief Sets the XSL style sheet used.
Packit Service e31359
   *
Packit Service e31359
   * \param styleSheet Name of the style sheet used. If empty, then no style sheet
Packit Service e31359
   *                   is used (default).
Packit Service e31359
   */
Packit Service e31359
  virtual void setStyleSheet( const std::string &styleSheet );
Packit Service e31359
Packit Service e31359
  /*! \brief set the output document as standalone or not.
Packit Service e31359
   *
Packit Service e31359
   *  For the output document, specify wether it's a standalone XML
Packit Service e31359
   *  document, or not.
Packit Service e31359
   *
Packit Service e31359
   *  \param standalone if true, the output will be specified as standalone.
Packit Service e31359
   *         if false, it will be not.
Packit Service e31359
   */
Packit Service e31359
  virtual void setStandalone( bool standalone );
Packit Service e31359
Packit Service e31359
  typedef std::map<Test *,TestFailure*, std::less<Test*> > FailedTests;
Packit Service e31359
Packit Service e31359
  /*! \brief Sets the root element and adds its children.
Packit Service e31359
   *
Packit Service e31359
   * Set the root element of the XML Document and add its child elements.
Packit Service e31359
   *
Packit Service e31359
   * For all hooks, call beginDocument() just after creating the root element (it
Packit Service e31359
   * is empty at this time), and endDocument() once all the datas have been added
Packit Service e31359
   * to the root element.
Packit Service e31359
   */
Packit Service e31359
  virtual void setRootNode();
Packit Service e31359
Packit Service e31359
  virtual void addFailedTests( FailedTests &failedTests,
Packit Service e31359
                               XmlElement *rootNode );
Packit Service e31359
Packit Service e31359
  virtual void addSuccessfulTests( FailedTests &failedTests,
Packit Service e31359
                                   XmlElement *rootNode );
Packit Service e31359
Packit Service e31359
  /*! \brief Adds the statics element to the root node.
Packit Service e31359
   * 
Packit Service e31359
   * Creates a new element containing statistics data and adds it to the root element.
Packit Service e31359
   * Then, for all hooks, call statisticsAdded().
Packit Service e31359
   * \param rootNode Root element.
Packit Service e31359
   */
Packit Service e31359
  virtual void addStatistics( XmlElement *rootNode );
Packit Service e31359
Packit Service e31359
  /*! \brief Adds a failed test to the failed tests node.
Packit Service e31359
   * Creates a new element containing datas about the failed test, and adds it to 
Packit Service e31359
   * the failed tests element.
Packit Service e31359
   * Then, for all hooks, call failTestAdded().
Packit Service e31359
   */
Packit Service e31359
  virtual void addFailedTest( Test *test,
Packit Service e31359
                              TestFailure *failure,
Packit Service e31359
                              int testNumber,
Packit Service e31359
                              XmlElement *testsNode );
Packit Service e31359
Packit Service e31359
  virtual void addFailureLocation( TestFailure *failure,
Packit Service e31359
                                   XmlElement *testElement );
Packit Service e31359
Packit Service e31359
Packit Service e31359
  /*! \brief Adds a successful test to the successful tests node.
Packit Service e31359
   * Creates a new element containing datas about the successful test, and adds it to 
Packit Service e31359
   * the successful tests element.
Packit Service e31359
   * Then, for all hooks, call successfulTestAdded().
Packit Service e31359
   */
Packit Service e31359
  virtual void addSuccessfulTest( Test *test, 
Packit Service e31359
                                  int testNumber,
Packit Service e31359
                                  XmlElement *testsNode );
Packit Service e31359
protected:
Packit Service e31359
  virtual void fillFailedTestsMap( FailedTests &failedTests );
Packit Service e31359
Packit Service e31359
protected:
Packit Service e31359
  typedef std::deque<XmlOutputterHook *> Hooks;
Packit Service e31359
Packit Service e31359
  TestResultCollector *m_result;
Packit Service e31359
  OStream &m_stream;
Packit Service e31359
  std::string m_encoding;
Packit Service e31359
  std::string m_styleSheet;
Packit Service e31359
  XmlDocument *m_xml;
Packit Service e31359
  Hooks m_hooks;
Packit Service e31359
Packit Service e31359
private:
Packit Service e31359
  /// Prevents the use of the copy constructor.
Packit Service e31359
  XmlOutputter( const XmlOutputter &copy );
Packit Service e31359
Packit Service e31359
  /// Prevents the use of the copy operator.
Packit Service e31359
  void operator =( const XmlOutputter &copy );
Packit Service e31359
Packit Service e31359
private:
Packit Service e31359
};
Packit Service e31359
Packit Service e31359
Packit Service e31359
CPPUNIT_NS_END
Packit Service e31359
Packit Service e31359
#if CPPUNIT_NEED_DLL_DECL
Packit Service e31359
#pragma warning( pop )
Packit Service e31359
#endif
Packit Service e31359
Packit Service e31359
Packit Service e31359
#endif  // CPPUNIT_XMLTESTRESULTOUTPUTTER_H