Blame examples/cppunittest/XmlOutputterTest.cpp

Packit Service e31359
#include <cppunit/config/SourcePrefix.h>
Packit Service e31359
#include <cppunit/XmlOutputter.h>
Packit Service e31359
#include <cppunit/TestFailure.h>
Packit Service e31359
#include <cppunit/XmlOutputter.h>
Packit Service e31359
#include <cppunit/XmlOutputterHook.h>
Packit Service e31359
#include "OutputSuite.h"
Packit Service e31359
#include "XmlOutputterTest.h"
Packit Service e31359
#include "XmlUniformiser.h"
Packit Service e31359
Packit Service e31359
Packit Service e31359
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlOutputterTest, 
Packit Service e31359
                                       outputSuiteName() );
Packit Service e31359
Packit Service e31359
Packit Service e31359
XmlOutputterTest::XmlOutputterTest()
Packit Service e31359
{
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
XmlOutputterTest::~XmlOutputterTest()
Packit Service e31359
{
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::setUp()
Packit Service e31359
{
Packit Service e31359
  m_dummyTests.clear();
Packit Service e31359
  m_result = new CPPUNIT_NS::TestResultCollector();
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::tearDown()
Packit Service e31359
{
Packit Service e31359
  delete m_result;
Packit Service e31359
  for ( unsigned int index =0; index < m_dummyTests.size(); ++index )
Packit Service e31359
    delete m_dummyTests[index];
Packit Service e31359
  m_dummyTests.clear();
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::testWriteXmlResultWithNoTest()
Packit Service e31359
{
Packit Service e31359
  CPPUNIT_NS::OStringStream stream;
Packit Service e31359
  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
Packit Service e31359
  outputter.write();
Packit Service e31359
Packit Service e31359
  std::string actualXml = stream.str();
Packit Service e31359
  std::string expectedXml = 
Packit Service e31359
    "<TestRun>"
Packit Service e31359
      "<FailedTests></FailedTests>"
Packit Service e31359
      "<SuccessfulTests></SuccessfulTests>"
Packit Service e31359
      "<Statistics>"
Packit Service e31359
        "<Tests>0</Tests>"
Packit Service e31359
        "<FailuresTotal>0</FailuresTotal>"
Packit Service e31359
        "<Errors>0</Errors>"
Packit Service e31359
        "<Failures>0</Failures>"
Packit Service e31359
      "</Statistics>"
Packit Service e31359
    "</TestRun>";
Packit Service e31359
  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::testWriteXmlResultWithOneFailure()
Packit Service e31359
{
Packit Service e31359
  addTestFailure( "test1", "message failure1", CPPUNIT_NS::SourceLine( "test.cpp", 3 ) );
Packit Service e31359
Packit Service e31359
  CPPUNIT_NS::OStringStream stream;
Packit Service e31359
  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
Packit Service e31359
  outputter.write();
Packit Service e31359
Packit Service e31359
  std::string actualXml = stream.str();
Packit Service e31359
  std::string expectedXml = 
Packit Service e31359
    "<TestRun>"
Packit Service e31359
      "<FailedTests>"
Packit Service e31359
        "<FailedTest id=\"1\">"
Packit Service e31359
          "<Name>test1</Name>"
Packit Service e31359
          "<FailureType>Assertion</FailureType>"
Packit Service e31359
          "<Location>"
Packit Service e31359
            "<File>test.cpp</File>"
Packit Service e31359
            "<Line>3</Line>"
Packit Service e31359
          "</Location>"
Packit Service e31359
          "<Message>message failure1</Message>"
Packit Service e31359
        "</FailedTest>"
Packit Service e31359
      "</FailedTests>"
Packit Service e31359
      "<SuccessfulTests></SuccessfulTests>"
Packit Service e31359
      "<Statistics>"
Packit Service e31359
        "<Tests>1</Tests>"
Packit Service e31359
        "<FailuresTotal>1</FailuresTotal>"
Packit Service e31359
        "<Errors>0</Errors>"
Packit Service e31359
        "<Failures>1</Failures>"
Packit Service e31359
      "</Statistics>"
Packit Service e31359
    "</TestRun>";
Packit Service e31359
  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::testWriteXmlResultWithOneError()
Packit Service e31359
{
Packit Service e31359
  addTestError( "test1", "message error1" );
Packit Service e31359
Packit Service e31359
  CPPUNIT_NS::OStringStream stream;
Packit Service e31359
  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
Packit Service e31359
  outputter.write();
Packit Service e31359
Packit Service e31359
  std::string actualXml = stream.str();
Packit Service e31359
  std::string expectedXml = 
Packit Service e31359
    "<TestRun>"
Packit Service e31359
      "<FailedTests>"
Packit Service e31359
        "<FailedTest id=\"1\">"
Packit Service e31359
          "<Name>test1</Name>"
Packit Service e31359
          "<FailureType>Error</FailureType>"
Packit Service e31359
          "<Message>message error1</Message>"
Packit Service e31359
        "</FailedTest>"
Packit Service e31359
      "</FailedTests>"
Packit Service e31359
      "<SuccessfulTests></SuccessfulTests>"
Packit Service e31359
      "<Statistics>"
Packit Service e31359
        "<Tests>1</Tests>"
Packit Service e31359
        "<FailuresTotal>1</FailuresTotal>"
Packit Service e31359
        "<Errors>1</Errors>"
Packit Service e31359
        "<Failures>0</Failures>"
Packit Service e31359
      "</Statistics>"
Packit Service e31359
    "</TestRun>";
Packit Service e31359
  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::testWriteXmlResultWithOneSuccess()
Packit Service e31359
{
Packit Service e31359
  addTest( "test1" );
Packit Service e31359
Packit Service e31359
  CPPUNIT_NS::OStringStream stream;
Packit Service e31359
  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
Packit Service e31359
  outputter.write();
Packit Service e31359
Packit Service e31359
  std::string actualXml = stream.str();
Packit Service e31359
  std::string expectedXml = 
Packit Service e31359
    "<TestRun>"
Packit Service e31359
      "<FailedTests></FailedTests>"
Packit Service e31359
      "<SuccessfulTests>"
Packit Service e31359
        "<Test id=\"1\">"
Packit Service e31359
          "<Name>test1</Name>"
Packit Service e31359
        "</Test>"
Packit Service e31359
      "</SuccessfulTests>"
Packit Service e31359
      "<Statistics>"
Packit Service e31359
        "<Tests>1</Tests>"
Packit Service e31359
        "<FailuresTotal>0</FailuresTotal>"
Packit Service e31359
        "<Errors>0</Errors>"
Packit Service e31359
        "<Failures>0</Failures>"
Packit Service e31359
      "</Statistics>"
Packit Service e31359
    "</TestRun>";
Packit Service e31359
  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::testWriteXmlResultWithThreeFailureTwoErrorsAndTwoSuccess()
Packit Service e31359
{
Packit Service e31359
  addTestFailure( "test1", "failure1" );
Packit Service e31359
  addTestError( "test2", "error1" );
Packit Service e31359
  addTestFailure( "test3", "failure2" );
Packit Service e31359
  addTestFailure( "test4", "failure3" );
Packit Service e31359
  addTest( "test5" );
Packit Service e31359
  addTestError( "test6", "error2" );
Packit Service e31359
  addTest( "test7" );
Packit Service e31359
Packit Service e31359
  CPPUNIT_NS::OStringStream stream;
Packit Service e31359
  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
Packit Service e31359
  outputter.write();
Packit Service e31359
Packit Service e31359
  std::string actualXml = stream.str();
Packit Service e31359
  std::string expectedXml = 
Packit Service e31359
    "<TestRun>"
Packit Service e31359
       "<FailedTests>"
Packit Service e31359
        "<FailedTest id=\"1\">"
Packit Service e31359
          "<Name>test1</Name>"
Packit Service e31359
          "<FailureType>Assertion</FailureType>"
Packit Service e31359
          "<Message>failure1</Message>"
Packit Service e31359
        "</FailedTest>"
Packit Service e31359
        "<FailedTest id=\"2\">"
Packit Service e31359
          "<Name>test2</Name>"
Packit Service e31359
          "<FailureType>Error</FailureType>"
Packit Service e31359
          "<Message>error1</Message>"
Packit Service e31359
        "</FailedTest>"
Packit Service e31359
        "<FailedTest id=\"3\">"
Packit Service e31359
          "<Name>test3</Name>"
Packit Service e31359
          "<FailureType>Assertion</FailureType>"
Packit Service e31359
          "<Message>failure2</Message>"
Packit Service e31359
        "</FailedTest>"
Packit Service e31359
        "<FailedTest id=\"4\">"
Packit Service e31359
          "<Name>test4</Name>"
Packit Service e31359
          "<FailureType>Assertion</FailureType>"
Packit Service e31359
          "<Message>failure3</Message>"
Packit Service e31359
        "</FailedTest>"
Packit Service e31359
        "<FailedTest id=\"6\">"
Packit Service e31359
          "<Name>test6</Name>"
Packit Service e31359
          "<FailureType>Error</FailureType>"
Packit Service e31359
          "<Message>error2</Message>"
Packit Service e31359
        "</FailedTest>"
Packit Service e31359
      "</FailedTests>"
Packit Service e31359
     "<SuccessfulTests>"
Packit Service e31359
        "<Test id=\"5\">"
Packit Service e31359
          "<Name>test5</Name>"
Packit Service e31359
        "</Test>"
Packit Service e31359
        "<Test id=\"7\">"
Packit Service e31359
          "<Name>test7</Name>"
Packit Service e31359
        "</Test>"
Packit Service e31359
      "</SuccessfulTests>"
Packit Service e31359
      "<Statistics>"
Packit Service e31359
        "<Tests>7</Tests>"
Packit Service e31359
        "<FailuresTotal>5</FailuresTotal>"
Packit Service e31359
        "<Errors>2</Errors>"
Packit Service e31359
        "<Failures>3</Failures>"
Packit Service e31359
      "</Statistics>"
Packit Service e31359
    "</TestRun>";
Packit Service e31359
  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
class XmlOutputterTest::MockHook : public CPPUNIT_NS::XmlOutputterHook
Packit Service e31359
{
Packit Service e31359
public:
Packit Service e31359
  MockHook( int &beginCalls,
Packit Service e31359
            int &endCalls,
Packit Service e31359
            int &statisticsCalls,
Packit Service e31359
            int &successfulTestCalls,
Packit Service e31359
            int &failedTestCalls )
Packit Service e31359
      : m_beginCalls( beginCalls )
Packit Service e31359
      , m_endCalls( endCalls )
Packit Service e31359
      , m_statisticsCalls( statisticsCalls )
Packit Service e31359
      , m_successfulTestCalls( successfulTestCalls )
Packit Service e31359
      , m_failedTestCalls( failedTestCalls )
Packit Service e31359
  {
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  void beginDocument( CPPUNIT_NS::XmlDocument * )
Packit Service e31359
  {
Packit Service e31359
    ++m_beginCalls;
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  void endDocument( CPPUNIT_NS::XmlDocument * )
Packit Service e31359
  {
Packit Service e31359
    ++m_endCalls;
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  void failTestAdded( CPPUNIT_NS::XmlDocument *,
Packit Service e31359
                      CPPUNIT_NS::XmlElement *,
Packit Service e31359
                      CPPUNIT_NS::Test *,
Packit Service e31359
                      CPPUNIT_NS::TestFailure * )
Packit Service e31359
  {
Packit Service e31359
    ++m_failedTestCalls;
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  void successfulTestAdded( CPPUNIT_NS::XmlDocument *,
Packit Service e31359
                            CPPUNIT_NS::XmlElement *,
Packit Service e31359
                            CPPUNIT_NS::Test * )
Packit Service e31359
  {
Packit Service e31359
    ++m_successfulTestCalls;
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
  void statisticsAdded( CPPUNIT_NS::XmlDocument *,
Packit Service e31359
                        CPPUNIT_NS::XmlElement * )
Packit Service e31359
  {
Packit Service e31359
    ++m_statisticsCalls;
Packit Service e31359
  }
Packit Service e31359
Packit Service e31359
private:
Packit Service e31359
  int &m_beginCalls;
Packit Service e31359
  int &m_endCalls;
Packit Service e31359
  int &m_statisticsCalls;
Packit Service e31359
  int &m_successfulTestCalls;
Packit Service e31359
  int &m_failedTestCalls;
Packit Service e31359
};
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::testHook()
Packit Service e31359
{
Packit Service e31359
  int begin =0, end =0, statistics =0, successful =0, failed =0;
Packit Service e31359
  MockHook hook( begin, end, statistics, successful, failed );
Packit Service e31359
Packit Service e31359
  addTest( "test1" );
Packit Service e31359
  addTest( "test2" );
Packit Service e31359
  addTest( "test3" );
Packit Service e31359
  addTestFailure( "testfail1", "assertion failed" );
Packit Service e31359
  addTestError( "testerror1", "exception" );
Packit Service e31359
Packit Service e31359
  CPPUNIT_NS::OStringStream stream;
Packit Service e31359
  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
Packit Service e31359
  outputter.addHook( &hook );
Packit Service e31359
  outputter.write();
Packit Service e31359
Packit Service e31359
  CPPUNIT_ASSERT_EQUAL( 1, begin );
Packit Service e31359
  CPPUNIT_ASSERT_EQUAL( 1, end );
Packit Service e31359
  CPPUNIT_ASSERT_EQUAL( 1, statistics );
Packit Service e31359
  CPPUNIT_ASSERT_EQUAL( 3, successful );
Packit Service e31359
  CPPUNIT_ASSERT_EQUAL( 2, failed );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::addTest( std::string testName )
Packit Service e31359
{
Packit Service e31359
  CPPUNIT_NS::Test *test = makeDummyTest( testName );
Packit Service e31359
  m_result->startTest( test );
Packit Service e31359
  m_result->endTest( test );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::addTestFailure( std::string testName,
Packit Service e31359
                                  std::string message,
Packit Service e31359
                                  CPPUNIT_NS::SourceLine sourceLine )
Packit Service e31359
{
Packit Service e31359
  addGenericTestFailure( testName, CPPUNIT_NS::Message(message), sourceLine, false );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::addTestError( std::string testName,
Packit Service e31359
                                std::string message,
Packit Service e31359
                                CPPUNIT_NS::SourceLine sourceLine )
Packit Service e31359
{
Packit Service e31359
  addGenericTestFailure( testName, CPPUNIT_NS::Message(message), sourceLine, true );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
void 
Packit Service e31359
XmlOutputterTest::addGenericTestFailure(  std::string testName,
Packit Service e31359
                                          CPPUNIT_NS::Message message,
Packit Service e31359
                                          CPPUNIT_NS::SourceLine sourceLine,
Packit Service e31359
                                          bool isError )
Packit Service e31359
{
Packit Service e31359
  CPPUNIT_NS::Test *test = makeDummyTest( testName );
Packit Service e31359
  m_result->startTest( test );
Packit Service e31359
  CPPUNIT_NS::TestFailure failure( test, 
Packit Service e31359
                                new CPPUNIT_NS::Exception( message, sourceLine ),
Packit Service e31359
                                isError );
Packit Service e31359
  m_result->addFailure( failure );
Packit Service e31359
  m_result->endTest( test );
Packit Service e31359
}
Packit Service e31359
Packit Service e31359
Packit Service e31359
CPPUNIT_NS::Test *
Packit Service e31359
XmlOutputterTest::makeDummyTest( std::string testName )
Packit Service e31359
{
Packit Service e31359
  CPPUNIT_NS::Test *test = new CPPUNIT_NS::TestCase( testName );
Packit Service e31359
  m_dummyTests.push_back( test );
Packit Service e31359
  return test;
Packit Service e31359
}
Packit Service e31359