#include #include #include #include "OutputSuite.h" #include "XmlOutputterTest.h" #include "XmlUniformiser.h" CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlOutputterTest, CppUnitTest::outputSuiteName() ); XmlOutputterTest::XmlOutputterTest() { } XmlOutputterTest::~XmlOutputterTest() { } void XmlOutputterTest::setUp() { m_dummyTests.clear(); m_result = new CppUnit::TestResultCollector(); } void XmlOutputterTest::tearDown() { delete m_result; for ( int index =0; index < m_dummyTests.size(); ++index ) delete m_dummyTests[index]; m_dummyTests.clear(); } void XmlOutputterTest::testEmptyNodeToString() { CppUnit::XmlOutputter::Node node( "element" ); std::string expectedXml = ""; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); } void XmlOutputterTest::testNodeWithAttributesToString() { CppUnit::XmlOutputter::Node node( "element" ); node.addAttribute( "id", 17 ); node.addAttribute( "date-format", "iso-8901" ); std::string expectedXml = "" ""; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); } void XmlOutputterTest::testEscapedAttributeValueToString() { CppUnit::XmlOutputter::Node node( "element" ); node.addAttribute( "escaped", "&<>\"'" ); std::string expectedXml = ""; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); } void XmlOutputterTest::testNodeWithChildrenToString() { CppUnit::XmlOutputter::Node node( "element" ); node.addNode( new CppUnit::XmlOutputter::Node( "child1" ) ); node.addNode( new CppUnit::XmlOutputter::Node( "child2" ) ); std::string expectedXml = "" ""; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); } void XmlOutputterTest::testNodeWithContentToString() { CppUnit::XmlOutputter::Node node( "element", "content\nline2" ); std::string expectedXml = "content\nline2"; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); } void XmlOutputterTest::testNodeWithNumericContentToString() { CppUnit::XmlOutputter::Node node( "element", 123456789 ); std::string expectedXml = "123456789"; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); } void XmlOutputterTest::testNodeWithContentAndChildToString() { CppUnit::XmlOutputter::Node node( "element", "content" ); node.addNode( new CppUnit::XmlOutputter::Node( "child1" ) ); std::string expectedXml = "content"; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() ); } void XmlOutputterTest::testWriteXmlResultWithNoTest() { CppUnit::OStringStream stream; CppUnit::XmlOutputter outputter( m_result, stream ); outputter.write(); std::string actualXml = stream.str(); std::string expectedXml = "" "" "" "" "0" "0" "0" "0" "" ""; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); } void XmlOutputterTest::testWriteXmlResultWithOneFailure() { addTestFailure( "test1", "message failure1", CppUnit::SourceLine( "test.cpp", 3 ) ); CppUnit::OStringStream stream; CppUnit::XmlOutputter outputter( m_result, stream ); outputter.write(); std::string actualXml = stream.str(); std::string expectedXml = "" "" "" "test1" "Assertion" "" "test.cpp" "3" "" "message failure1" "" "" "" "" "1" "1" "0" "1" "" ""; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); } void XmlOutputterTest::testWriteXmlResultWithOneError() { addTestError( "test1", "message error1" ); CppUnit::OStringStream stream; CppUnit::XmlOutputter outputter( m_result, stream ); outputter.write(); std::string actualXml = stream.str(); std::string expectedXml = "" "" "" "test1" "Error" "message error1" "" "" "" "" "1" "1" "1" "0" "" ""; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); } void XmlOutputterTest::testWriteXmlResultWithOneSucess() { addTest( "test1" ); CppUnit::OStringStream stream; CppUnit::XmlOutputter outputter( m_result, stream ); outputter.write(); std::string actualXml = stream.str(); std::string expectedXml = "" "" "" "" "test1" "" "" "" "1" "0" "0" "0" "" ""; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); } void XmlOutputterTest::testWriteXmlResultWithThreeFailureTwoErrorsAndTwoSucess() { addTestFailure( "test1", "failure1" ); addTestError( "test2", "error1" ); addTestFailure( "test3", "failure2" ); addTestFailure( "test4", "failure3" ); addTest( "test5" ); addTestError( "test6", "error2" ); addTest( "test7" ); CppUnit::OStringStream stream; CppUnit::XmlOutputter outputter( m_result, stream ); outputter.write(); std::string actualXml = stream.str(); std::string expectedXml = "" "" "" "test1" "Assertion" "failure1" "" "" "test2" "Error" "error1" "" "" "test3" "Assertion" "failure2" "" "" "test4" "Assertion" "failure3" "" "" "test6" "Error" "error2" "" "" "" "" "test5" "" "" "test7" "" "" "" "7" "5" "2" "3" "" ""; CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml ); } void XmlOutputterTest::addTest( std::string testName ) { CppUnit::Test *test = makeDummyTest( testName ); m_result->startTest( test ); m_result->endTest( test ); } void XmlOutputterTest::addTestFailure( std::string testName, std::string message, CppUnit::SourceLine sourceLine ) { addGenericTestFailure( testName, message, sourceLine, false ); } void XmlOutputterTest::addTestError( std::string testName, std::string message, CppUnit::SourceLine sourceLine ) { addGenericTestFailure( testName, message, sourceLine, true ); } void XmlOutputterTest::addGenericTestFailure( std::string testName, std::string message, CppUnit::SourceLine sourceLine, bool isError ) { CppUnit::Test *test = makeDummyTest( testName ); m_result->startTest( test ); CppUnit::TestFailure failure( test, new CppUnit::Exception( message, sourceLine ), isError ); m_result->addFailure( failure ); m_result->endTest( test ); } CppUnit::Test * XmlOutputterTest::makeDummyTest( std::string testName ) { CppUnit::Test *test = new CppUnit::TestCase( testName ); m_dummyTests.push_back( test ); return test; }