summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/unittest-cpp/tests/TestAssertHandler.cpp
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-05-27 15:00:06 +0200
committer Miodrag Milanovic <mmicko@gmail.com>2015-05-27 15:00:06 +0200
commitee4adf600bdd3aa60cc0e92a39f2111be0a90bc6 (patch)
tree5ecb86b72eef1c19ad3ab6c7ba8d8b2a964e0cb9 /3rdparty/unittest-cpp/tests/TestAssertHandler.cpp
parent55fa9840f263361efc73126c3f41be606fea7168 (diff)
Added library for supporting unit tests (nw)
Diffstat (limited to '3rdparty/unittest-cpp/tests/TestAssertHandler.cpp')
-rw-r--r--3rdparty/unittest-cpp/tests/TestAssertHandler.cpp136
1 files changed, 136 insertions, 0 deletions
diff --git a/3rdparty/unittest-cpp/tests/TestAssertHandler.cpp b/3rdparty/unittest-cpp/tests/TestAssertHandler.cpp
new file mode 100644
index 00000000000..c9286f38c03
--- /dev/null
+++ b/3rdparty/unittest-cpp/tests/TestAssertHandler.cpp
@@ -0,0 +1,136 @@
+#include "UnitTest++/Config.h"
+#include "UnitTest++/UnitTestPP.h"
+
+#include "UnitTest++/ReportAssert.h"
+#include "UnitTest++/ReportAssertImpl.h"
+#include "UnitTest++/AssertException.h"
+
+#include "RecordingReporter.h"
+#include <csetjmp>
+
+using namespace UnitTest;
+
+namespace {
+
+TEST(CanSetAssertExpected)
+{
+ Detail::ExpectAssert(true);
+ CHECK(Detail::AssertExpected());
+
+ Detail::ExpectAssert(false);
+ CHECK(!Detail::AssertExpected());
+}
+
+#ifndef UNITTEST_NO_EXCEPTIONS
+
+TEST(ReportAssertThrowsAssertException)
+{
+ bool caught = false;
+
+ try
+ {
+ TestResults testResults;
+ TestDetails testDetails("", "", "", 0);
+ Detail::ReportAssertEx(&testResults, &testDetails, "", "", 0);
+ }
+ catch(AssertException const&)
+ {
+ caught = true;
+ }
+
+ CHECK(true == caught);
+}
+
+TEST(ReportAssertClearsExpectAssertFlag)
+{
+ RecordingReporter reporter;
+ TestResults testResults(&reporter);
+ TestDetails testDetails("", "", "", 0);
+
+ try
+ {
+ Detail::ExpectAssert(true);
+ Detail::ReportAssertEx(&testResults, &testDetails, "", "", 0);
+ }
+ catch(AssertException const&)
+ {
+ }
+
+ CHECK(Detail::AssertExpected() == false);
+ CHECK_EQUAL(0, reporter.testFailedCount);
+}
+
+TEST(ReportAssertWritesFailureToResultsAndDetailsWhenAssertIsNotExpected)
+{
+ const int lineNumber = 12345;
+ const char* description = "description";
+ const char* filename = "filename";
+
+ RecordingReporter reporter;
+ TestResults testResults(&reporter);
+ TestDetails testDetails("", "", "", 0);
+
+ try
+ {
+ Detail::ReportAssertEx(&testResults, &testDetails, description, filename, lineNumber);
+ }
+ catch(AssertException const&)
+ {
+ }
+
+ CHECK_EQUAL(description, reporter.lastFailedMessage);
+ CHECK_EQUAL(filename, reporter.lastFailedFile);
+ CHECK_EQUAL(lineNumber, reporter.lastFailedLine);
+}
+
+TEST(ReportAssertReportsNoErrorsWhenAssertIsExpected)
+{
+ Detail::ExpectAssert(true);
+
+ RecordingReporter reporter;
+ TestResults testResults(&reporter);
+ TestDetails testDetails("", "", "", 0);
+
+ try
+ {
+ Detail::ReportAssertEx(&testResults, &testDetails, "", "", 0);
+ }
+ catch(AssertException const&)
+ {
+ }
+
+ CHECK_EQUAL(0, reporter.testFailedCount);
+}
+
+TEST(CheckAssertMacroSetsAssertExpectationToFalseAfterRunning)
+{
+ Detail::ExpectAssert(true);
+ CHECK_ASSERT(ReportAssert("", "", 0));
+ CHECK(!Detail::AssertExpected());
+ Detail::ExpectAssert(false);
+}
+
+#else
+
+TEST(SetAssertJumpTargetReturnsFalseWhenSettingJumpTarget)
+{
+ CHECK(UNITTEST_SET_ASSERT_JUMP_TARGET() == false);
+}
+
+TEST(JumpToAssertJumpTarget_JumpsToSetPoint_ReturnsTrue)
+{
+ const volatile bool taken = !!UNITTEST_SET_ASSERT_JUMP_TARGET();
+
+ volatile bool set = false;
+ if (taken == false)
+ {
+ UNITTEST_JUMP_TO_ASSERT_JUMP_TARGET();
+ set = true;
+ }
+
+ CHECK(set == false);
+}
+
+#endif
+
+}