summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/unittest-cpp/tests/TestExceptions.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/TestExceptions.cpp
parent55fa9840f263361efc73126c3f41be606fea7168 (diff)
Added library for supporting unit tests (nw)
Diffstat (limited to '3rdparty/unittest-cpp/tests/TestExceptions.cpp')
-rw-r--r--3rdparty/unittest-cpp/tests/TestExceptions.cpp563
1 files changed, 563 insertions, 0 deletions
diff --git a/3rdparty/unittest-cpp/tests/TestExceptions.cpp b/3rdparty/unittest-cpp/tests/TestExceptions.cpp
new file mode 100644
index 00000000000..1a0ab04ef1a
--- /dev/null
+++ b/3rdparty/unittest-cpp/tests/TestExceptions.cpp
@@ -0,0 +1,563 @@
+#include "UnitTest++/Config.h"
+#ifndef UNITTEST_NO_EXCEPTIONS
+
+#include "UnitTest++/UnitTestPP.h"
+#include "UnitTest++/CurrentTest.h"
+#include "RecordingReporter.h"
+#include "ScopedCurrentTest.h"
+
+#include <stdexcept>
+
+using namespace std;
+
+namespace {
+
+int ThrowingFunction()
+{
+ throw "Doh";
+}
+
+int ThrowingStdExceptionFunction()
+{
+ throw std::logic_error("Doh");
+}
+
+SUITE(CheckExceptionTests)
+{
+ struct CheckFixture
+ {
+ CheckFixture()
+ : reporter()
+ , testResults(&reporter)
+ {
+ }
+
+ void PerformCheckWithNonStdThrow()
+ {
+ ScopedCurrentTest scopedResults(testResults);
+ CHECK(ThrowingFunction() == 1);
+ }
+
+ void PerformCheckWithStdThrow()
+ {
+ ScopedCurrentTest scopedResults(testResults);
+ CHECK(ThrowingStdExceptionFunction() == 1);
+ }
+
+ RecordingReporter reporter;
+ UnitTest::TestResults testResults;
+ };
+
+ TEST_FIXTURE(CheckFixture, CheckFailsOnException)
+ {
+ PerformCheckWithNonStdThrow();
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckFixture, CheckFailsOnStdException)
+ {
+ PerformCheckWithStdThrow();
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckFixture, CheckFailureBecauseOfExceptionIncludesCheckContents)
+ {
+ PerformCheckWithNonStdThrow();
+ CHECK(strstr(reporter.lastFailedMessage, "ThrowingFunction() == 1"));
+ }
+
+ TEST_FIXTURE(CheckFixture, CheckFailureBecauseOfStdExceptionIncludesCheckContents)
+ {
+ PerformCheckWithStdThrow();
+ CHECK(strstr(reporter.lastFailedMessage, "ThrowingStdExceptionFunction() == 1"));
+ }
+
+ TEST_FIXTURE(CheckFixture, CheckFailureBecauseOfStandardExceptionIncludesWhat)
+ {
+ PerformCheckWithStdThrow();
+ CHECK(strstr(reporter.lastFailedMessage, "exception (Doh)"));
+ }
+}
+
+SUITE(CheckEqualExceptionTests)
+{
+ struct CheckEqualFixture
+ {
+ CheckEqualFixture()
+ : reporter()
+ , testResults(&reporter)
+ , line(-1)
+ {
+ }
+
+ void PerformCheckWithNonStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("testName", "suiteName", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ CHECK_EQUAL(ThrowingFunction(), 123); line = __LINE__;
+ }
+
+ void PerformCheckWithStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("testName", "suiteName", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ CHECK_EQUAL(ThrowingStdExceptionFunction(), 123); line = __LINE__;
+ }
+
+ RecordingReporter reporter;
+ UnitTest::TestResults testResults;
+ int line;
+ };
+
+ TEST_FIXTURE(CheckEqualFixture, CheckEqualFailsOnException)
+ {
+ PerformCheckWithNonStdThrow();
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckEqualFixture, CheckEqualFailsOnStdException)
+ {
+ PerformCheckWithStdThrow();
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckEqualFixture, CheckEqualFailureBecauseOfExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK_EQUAL("testName", reporter.lastFailedTest);
+ CHECK_EQUAL("suiteName", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckEqualFixture, CheckEqualFailureBecauseOfStdExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK_EQUAL("testName", reporter.lastFailedTest);
+ CHECK_EQUAL("suiteName", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckEqualFixture, CheckEqualFailureBecauseOfExceptionIncludesCheckContents)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "ThrowingFunction()"));
+ CHECK(strstr(reporter.lastFailedMessage, "123"));
+ }
+
+ TEST_FIXTURE(CheckEqualFixture, CheckEqualFailureBecauseOfStdExceptionIncludesCheckContents)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "ThrowingStdExceptionFunction()"));
+ CHECK(strstr(reporter.lastFailedMessage, "123"));
+ }
+
+ TEST_FIXTURE(CheckEqualFixture, CheckEqualFailureBecauseOfStandardExceptionIncludesWhat)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "exception (Doh)"));
+ }
+}
+
+SUITE(CheckCloseExceptionTests)
+{
+ struct CheckCloseFixture
+ {
+ CheckCloseFixture()
+ : reporter()
+ , testResults(&reporter)
+ , line(-1)
+ {
+ }
+
+ void PerformCheckWithNonStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("closeTest", "closeSuite", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ CHECK_CLOSE(static_cast<float>(ThrowingFunction()), 1.0001f, 0.1f); line = __LINE__;
+ }
+
+ void PerformCheckWithStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("closeTest", "closeSuite", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ CHECK_CLOSE(static_cast<float>(ThrowingStdExceptionFunction()), 1.0001f, 0.1f); line = __LINE__;
+ }
+
+ RecordingReporter reporter;
+ UnitTest::TestResults testResults;
+ int line;
+ };
+
+ TEST_FIXTURE(CheckCloseFixture, CheckCloseFailsOnException)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckCloseFixture, CheckCloseFailsOnStdException)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckCloseFixture, CheckCloseFailureBecauseOfExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK_EQUAL("closeTest", reporter.lastFailedTest);
+ CHECK_EQUAL("closeSuite", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckCloseFixture, CheckCloseFailureBecauseOfStdExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK_EQUAL("closeTest", reporter.lastFailedTest);
+ CHECK_EQUAL("closeSuite", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckCloseFixture, CheckCloseFailureBecauseOfExceptionIncludesCheckContents)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "static_cast<float>(ThrowingFunction())"));
+ CHECK(strstr(reporter.lastFailedMessage, "1.0001f"));
+ }
+
+ TEST_FIXTURE(CheckCloseFixture, CheckCloseFailureBecauseOfStdExceptionIncludesCheckContents)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "static_cast<float>(ThrowingStdExceptionFunction())"));
+ CHECK(strstr(reporter.lastFailedMessage, "1.0001f"));
+ }
+
+ TEST_FIXTURE(CheckCloseFixture, CheckCloseFailureBecauseOfStandardExceptionIncludesWhat)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "exception (Doh)"));
+ }
+}
+
+class ThrowingObject
+{
+public:
+ float operator[](int) const
+ {
+ throw "Test throw";
+ }
+};
+
+class StdThrowingObject
+{
+public:
+ float operator[](int) const
+ {
+ throw std::runtime_error("Test throw");
+ }
+};
+
+SUITE(CheckArrayCloseExceptionTests)
+{
+ struct CheckArrayCloseFixture
+ {
+ CheckArrayCloseFixture()
+ : reporter()
+ , testResults(&reporter)
+ , line(-1)
+ {
+ }
+
+ void PerformCheckWithNonStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("arrayCloseTest", "arrayCloseSuite", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ int const data[4] = { 0, 1, 2, 3 };
+ CHECK_ARRAY_CLOSE(data, ThrowingObject(), 4, 0.01f); line = __LINE__;
+ }
+
+ void PerformCheckWithStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("arrayCloseTest", "arrayCloseSuite", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ int const data[4] = { 0, 1, 2, 3 };
+ CHECK_ARRAY_CLOSE(data, StdThrowingObject(), 4, 0.01f); line = __LINE__;
+ }
+
+ RecordingReporter reporter;
+ UnitTest::TestResults testResults;
+ int line;
+ };
+
+ TEST_FIXTURE(CheckArrayCloseFixture, CheckFailureBecauseOfExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK_EQUAL("arrayCloseTest", reporter.lastFailedTest);
+ CHECK_EQUAL("arrayCloseSuite", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckArrayCloseFixture, CheckFailureBecauseOfStdExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK_EQUAL("arrayCloseTest", reporter.lastFailedTest);
+ CHECK_EQUAL("arrayCloseSuite", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckArrayCloseFixture, CheckFailsOnException)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckArrayCloseFixture, CheckFailsOnStdException)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckArrayCloseFixture, CheckFailureOnExceptionIncludesCheckContents)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "data"));
+ CHECK(strstr(reporter.lastFailedMessage, "ThrowingObject()"));
+ }
+
+ TEST_FIXTURE(CheckArrayCloseFixture, CheckFailureOnStdExceptionIncludesCheckContents)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "data"));
+ CHECK(strstr(reporter.lastFailedMessage, "StdThrowingObject()"));
+ }
+
+ TEST_FIXTURE(CheckArrayCloseFixture, CheckFailureOnStdExceptionIncludesWhat)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "exception (Test throw)"));
+ }
+}
+
+SUITE(CheckArrayEqualExceptionTests)
+{
+ struct CheckArrayEqualFixture
+ {
+ CheckArrayEqualFixture()
+ : reporter()
+ , testResults(&reporter)
+ , line(-1)
+ {
+ }
+
+ void PerformCheckWithNonStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("arrayEqualTest", "arrayEqualSuite", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ int const data[4] = { 0, 1, 2, 3 };
+ CHECK_ARRAY_EQUAL(data, ThrowingObject(), 4); line = __LINE__;
+ }
+
+ void PerformCheckWithStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("arrayEqualTest", "arrayEqualSuite", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ int const data[4] = { 0, 1, 2, 3 };
+ CHECK_ARRAY_EQUAL(data, StdThrowingObject(), 4); line = __LINE__;
+ }
+
+ RecordingReporter reporter;
+ UnitTest::TestResults testResults;
+ int line;
+ };
+
+ TEST_FIXTURE(CheckArrayEqualFixture, CheckFailureBecauseOfExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK_EQUAL("arrayEqualTest", reporter.lastFailedTest);
+ CHECK_EQUAL("arrayEqualSuite", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckArrayEqualFixture, CheckFailureBecauseOfStdExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK_EQUAL("arrayEqualTest", reporter.lastFailedTest);
+ CHECK_EQUAL("arrayEqualSuite", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckArrayEqualFixture, CheckFailsOnException)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckArrayEqualFixture, CheckFailsOnStdException)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckArrayEqualFixture, CheckFailureOnExceptionIncludesCheckContents)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "data"));
+ CHECK(strstr(reporter.lastFailedMessage, "ThrowingObject()"));
+ }
+
+ TEST_FIXTURE(CheckArrayEqualFixture, CheckFailureOnStdExceptionIncludesCheckContents)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "data"));
+ CHECK(strstr(reporter.lastFailedMessage, "StdThrowingObject()"));
+ }
+
+ TEST_FIXTURE(CheckArrayEqualFixture, CheckFailureOnStdExceptionIncludesWhat)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "exception (Test throw)"));
+ }
+}
+
+SUITE(CheckArray2DExceptionTests)
+{
+ class ThrowingObject2D
+ {
+ public:
+ float* operator[](int) const
+ {
+ throw "Test throw";
+ }
+ };
+
+ class StdThrowingObject2D
+ {
+ public:
+ float* operator[](int) const
+ {
+ throw std::runtime_error("Test throw");
+ }
+ };
+
+ struct CheckArray2DCloseFixture
+ {
+ CheckArray2DCloseFixture()
+ : reporter()
+ , testResults(&reporter)
+ , line(-1)
+ {
+ }
+
+ void PerformCheckWithNonStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("array2DCloseTest", "array2DCloseSuite", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ const float data[2][2] = { {0, 1}, {2, 3} };
+ CHECK_ARRAY2D_CLOSE(data, ThrowingObject2D(), 2, 2, 0.01f); line = __LINE__;
+ }
+
+ void PerformCheckWithStdThrow()
+ {
+ UnitTest::TestDetails const testDetails("array2DCloseTest", "array2DCloseSuite", "filename", -1);
+ ScopedCurrentTest scopedResults(testResults, &testDetails);
+ const float data[2][2] = { {0, 1}, {2, 3} };
+ CHECK_ARRAY2D_CLOSE(data, StdThrowingObject2D(), 2, 2, 0.01f); line = __LINE__;
+ }
+
+ RecordingReporter reporter;
+ UnitTest::TestResults testResults;
+ int line;
+ };
+
+ TEST_FIXTURE(CheckArray2DCloseFixture, CheckFailureBecauseOfExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK_EQUAL("array2DCloseTest", reporter.lastFailedTest);
+ CHECK_EQUAL("array2DCloseSuite", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckArray2DCloseFixture, CheckFailureBecauseOfStdExceptionContainsCorrectDetails)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK_EQUAL("array2DCloseTest", reporter.lastFailedTest);
+ CHECK_EQUAL("array2DCloseSuite", reporter.lastFailedSuite);
+ CHECK_EQUAL("filename", reporter.lastFailedFile);
+ CHECK_EQUAL(line, reporter.lastFailedLine);
+ }
+
+ TEST_FIXTURE(CheckArray2DCloseFixture, CheckFailsOnException)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckArray2DCloseFixture, CheckFailsOnStdException)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(testResults.GetFailureCount() > 0);
+ }
+
+ TEST_FIXTURE(CheckArray2DCloseFixture, CheckFailureOnExceptionIncludesCheckContents)
+ {
+ PerformCheckWithNonStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "data"));
+ CHECK(strstr(reporter.lastFailedMessage, "ThrowingObject2D()"));
+ }
+
+ TEST_FIXTURE(CheckArray2DCloseFixture, CheckFailureOnStdExceptionIncludesCheckContents)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "data"));
+ CHECK(strstr(reporter.lastFailedMessage, "StdThrowingObject2D()"));
+ }
+
+ TEST_FIXTURE(CheckArray2DCloseFixture, CheckFailureOnStdExceptionIncludesWhat)
+ {
+ PerformCheckWithStdThrow();
+
+ CHECK(strstr(reporter.lastFailedMessage, "exception (Test throw)"));
+ }
+}
+}
+
+#endif