summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/unittest-cpp/tests/TestXmlTestReporter.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/unittest-cpp/tests/TestXmlTestReporter.cpp')
-rw-r--r--3rdparty/unittest-cpp/tests/TestXmlTestReporter.cpp188
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) : "
+ "&quot;&quot;&apos;&apos;&amp;&amp;&lt;&lt;&gt;&gt;\"/>"
+ "</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) : &quot;&apos;&amp;&lt;&gt;\"/>"
+ "</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