diff options
author | 2015-05-27 15:00:06 +0200 | |
---|---|---|
committer | 2015-05-27 15:00:06 +0200 | |
commit | ee4adf600bdd3aa60cc0e92a39f2111be0a90bc6 (patch) | |
tree | 5ecb86b72eef1c19ad3ab6c7ba8d8b2a964e0cb9 /3rdparty/unittest-cpp/tests/TestXmlTestReporter.cpp | |
parent | 55fa9840f263361efc73126c3f41be606fea7168 (diff) |
Added library for supporting unit tests (nw)
Diffstat (limited to '3rdparty/unittest-cpp/tests/TestXmlTestReporter.cpp')
-rw-r--r-- | 3rdparty/unittest-cpp/tests/TestXmlTestReporter.cpp | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/3rdparty/unittest-cpp/tests/TestXmlTestReporter.cpp b/3rdparty/unittest-cpp/tests/TestXmlTestReporter.cpp new file mode 100644 index 00000000000..154ada82c79 --- /dev/null +++ b/3rdparty/unittest-cpp/tests/TestXmlTestReporter.cpp @@ -0,0 +1,188 @@ +#include "UnitTest++/Config.h" +#ifndef UNITTEST_NO_DEFERRED_REPORTER + +#include "UnitTest++/UnitTestPP.h" +#include "UnitTest++/XmlTestReporter.h" + +#include <sstream> + +using namespace UnitTest; +using std::ostringstream; + +namespace +{ + +#ifndef UNITTEST_MEMORYOUTSTREAM_IS_STD_OSTRINGSTREAM + +// Overload to let MemoryOutStream accept std::string +MemoryOutStream& operator<<(MemoryOutStream& s, const std::string& value) +{ + s << value.c_str(); + return s; +} + +#endif + +struct XmlTestReporterFixture +{ + XmlTestReporterFixture() + : reporter(output) + { + } + + ostringstream output; + XmlTestReporter reporter; +}; + +TEST_FIXTURE(XmlTestReporterFixture, MultipleCharactersAreEscaped) +{ + TestDetails const details("TestName", "suite", "filename.h", 4321); + + reporter.ReportTestStart(details); + reporter.ReportFailure(details, "\"\"\'\'&&<<>>"); + reporter.ReportTestFinish(details, 0.1f); + reporter.ReportSummary(1, 2, 3, 0.1f); + + char const* expected = + "<?xml version=\"1.0\"?>" + "<unittest-results tests=\"1\" failedtests=\"2\" failures=\"3\" time=\"0.1\">" + "<test suite=\"suite\" name=\"TestName\" time=\"0.1\">" + "<failure message=\"filename.h(4321) : " + """''&&<<>>\"/>" + "</test>" + "</unittest-results>"; + + CHECK_EQUAL(expected, output.str().c_str()); +} + +TEST_FIXTURE(XmlTestReporterFixture, OutputIsCachedUntilReportSummaryIsCalled) +{ + TestDetails const details("", "", "", 0); + + reporter.ReportTestStart(details); + reporter.ReportFailure(details, "message"); + reporter.ReportTestFinish(details, 1.0F); + CHECK(output.str().empty()); + + reporter.ReportSummary(1, 1, 1, 1.0f); + CHECK(!output.str().empty()); +} + +TEST_FIXTURE(XmlTestReporterFixture, EmptyReportSummaryFormat) +{ + reporter.ReportSummary(0, 0, 0, 0.1f); + + const char *expected = + "<?xml version=\"1.0\"?>" + "<unittest-results tests=\"0\" failedtests=\"0\" failures=\"0\" time=\"0.1\">" + "</unittest-results>"; + + CHECK_EQUAL(expected, output.str().c_str()); +} + +TEST_FIXTURE(XmlTestReporterFixture, SingleSuccessfulTestReportSummaryFormat) +{ + TestDetails const details("TestName", "DefaultSuite", "", 0); + + reporter.ReportTestStart(details); + reporter.ReportSummary(1, 0, 0, 0.1f); + + const char *expected = + "<?xml version=\"1.0\"?>" + "<unittest-results tests=\"1\" failedtests=\"0\" failures=\"0\" time=\"0.1\">" + "<test suite=\"DefaultSuite\" name=\"TestName\" time=\"0\"/>" + "</unittest-results>"; + + CHECK_EQUAL(expected, output.str().c_str()); +} + +TEST_FIXTURE(XmlTestReporterFixture, SingleFailedTestReportSummaryFormat) +{ + TestDetails const details("A Test", "suite", "A File", 4321); + + reporter.ReportTestStart(details); + reporter.ReportFailure(details, "A Failure"); + reporter.ReportSummary(1, 1, 1, 0.1f); + + const char *expected = + "<?xml version=\"1.0\"?>" + "<unittest-results tests=\"1\" failedtests=\"1\" failures=\"1\" time=\"0.1\">" + "<test suite=\"suite\" name=\"A Test\" time=\"0\">" + "<failure message=\"A File(4321) : A Failure\"/>" + "</test>" + "</unittest-results>"; + + CHECK_EQUAL(expected, output.str().c_str()); +} + +TEST_FIXTURE(XmlTestReporterFixture, FailureMessageIsXMLEscaped) +{ + TestDetails const details("TestName", "suite", "filename.h", 4321); + + reporter.ReportTestStart(details); + reporter.ReportFailure(details, "\"\'&<>"); + reporter.ReportTestFinish(details, 0.1f); + reporter.ReportSummary(1, 1, 1, 0.1f); + + char const* expected = + "<?xml version=\"1.0\"?>" + "<unittest-results tests=\"1\" failedtests=\"1\" failures=\"1\" time=\"0.1\">" + "<test suite=\"suite\" name=\"TestName\" time=\"0.1\">" + "<failure message=\"filename.h(4321) : "'&<>\"/>" + "</test>" + "</unittest-results>"; + + CHECK_EQUAL(expected, output.str().c_str()); +} + +TEST_FIXTURE(XmlTestReporterFixture, OneFailureAndOneSuccess) +{ + TestDetails const failedDetails("FailedTest", "suite", "fail.h", 1); + reporter.ReportTestStart(failedDetails); + reporter.ReportFailure(failedDetails, "expected 1 but was 2"); + reporter.ReportTestFinish(failedDetails, 0.1f); + + TestDetails const succeededDetails("SucceededTest", "suite", "", 0); + reporter.ReportTestStart(succeededDetails); + reporter.ReportTestFinish(succeededDetails, 1.0f); + reporter.ReportSummary(2, 1, 1, 1.1f); + + char const* expected = + "<?xml version=\"1.0\"?>" + "<unittest-results tests=\"2\" failedtests=\"1\" failures=\"1\" time=\"1.1\">" + "<test suite=\"suite\" name=\"FailedTest\" time=\"0.1\">" + "<failure message=\"fail.h(1) : expected 1 but was 2\"/>" + "</test>" + "<test suite=\"suite\" name=\"SucceededTest\" time=\"1\"/>" + "</unittest-results>"; + + CHECK_EQUAL(expected, output.str().c_str()); +} + +TEST_FIXTURE(XmlTestReporterFixture, MultipleFailures) +{ + TestDetails const failedDetails1("FailedTest", "suite", "fail.h", 1); + TestDetails const failedDetails2("FailedTest", "suite", "fail.h", 31); + + reporter.ReportTestStart(failedDetails1); + reporter.ReportFailure(failedDetails1, "expected 1 but was 2"); + reporter.ReportFailure(failedDetails2, "expected one but was two"); + reporter.ReportTestFinish(failedDetails1, 0.1f); + + reporter.ReportSummary(1, 1, 2, 1.1f); + + char const* expected = + "<?xml version=\"1.0\"?>" + "<unittest-results tests=\"1\" failedtests=\"1\" failures=\"2\" time=\"1.1\">" + "<test suite=\"suite\" name=\"FailedTest\" time=\"0.1\">" + "<failure message=\"fail.h(1) : expected 1 but was 2\"/>" + "<failure message=\"fail.h(31) : expected one but was two\"/>" + "</test>" + "</unittest-results>"; + + CHECK_EQUAL(expected, output.str().c_str()); +} + +} + +#endif |