13 #ifndef mitkTestingMacros_h
14 #define mitkTestingMacros_h
26 #include <cppunit/extensions/HelperMacros.h>
27 #include <cppunit/ui/text/TestRunner.h>
44 #define MITK_TEST_OUTPUT_NO_ENDL(x) std::cout x;
51 #define MITK_TEST_OUTPUT(x) MITK_TEST_OUTPUT_NO_ENDL(x << "\n")
59 #define MITK_TEST_BEGIN(testName) \
60 std::string mitkTestName(#testName); \
61 mitk::TestManager::GetInstance()->Initialize(); \
69 #define MITK_TEST_FAILED_MSG(MSG) \
70 MITK_TEST_OUTPUT(MSG) \
71 throw mitk::TestFailedException();
78 #define MITK_TEST_END() \
80 catch (const mitk::TestFailedException &) \
82 MITK_TEST_OUTPUT(<< "Further test execution skipped.") \
83 mitk::TestManager::GetInstance()->TestFailed(); \
85 catch (const std::exception &ex) \
87 MITK_TEST_OUTPUT(<< "std::exception occurred " << ex.what()) \
88 mitk::TestManager::GetInstance()->TestFailed(); \
90 if (mitk::TestManager::GetInstance()->NumberOfFailedTests() > 0) \
92 MITK_TEST_OUTPUT(<< mitkTestName << ": [DONE FAILED] , subtests passed: " \
93 << mitk::TestManager::GetInstance()->NumberOfPassedTests() \
95 << mitk::TestManager::GetInstance()->NumberOfFailedTests()) \
96 return EXIT_FAILURE; \
100 MITK_TEST_OUTPUT(<< mitkTestName << ": " << mitk::TestManager::GetInstance()->NumberOfPassedTests() \
101 << " tests [DONE PASSED]") \
102 return EXIT_SUCCESS; \
105 #define MITK_TEST_CONDITION(COND, MSG) \
106 MITK_TEST_OUTPUT_NO_ENDL(<< MSG) \
109 mitk::TestManager::GetInstance()->TestFailed(); \
110 MITK_TEST_OUTPUT(<< " [FAILED]\n" \
115 << ": " #COND " : [FAILED]") \
119 MITK_TEST_OUTPUT(<< " [PASSED]") \
120 mitk::TestManager::GetInstance()->TestPassed(); \
123 #define MITK_TEST_CONDITION_REQUIRED(COND, MSG) \
124 MITK_TEST_OUTPUT_NO_ENDL(<< MSG) \
127 MITK_TEST_FAILED_MSG(<< " [FAILED]\n" \
132 << ", expression is false: \"" #COND "\"") \
136 MITK_TEST_OUTPUT(<< " [PASSED]") \
137 mitk::TestManager::GetInstance()->TestPassed(); \
159 #define MITK_TEST_FOR_EXCEPTION_BEGIN(EXCEPTIONCLASS) \
162 #define MITK_TEST_FOR_EXCEPTION_END(EXCEPTIONCLASS) \
163 mitk::TestManager::GetInstance()->TestFailed(); \
164 MITK_TEST_OUTPUT(<< "Expected an '" << #EXCEPTIONCLASS << "' exception. [FAILED]") \
166 catch (const EXCEPTIONCLASS &) \
168 MITK_TEST_OUTPUT(<< "Caught an expected '" << #EXCEPTIONCLASS << "' exception. [PASSED]") \
169 mitk::TestManager::GetInstance()->TestPassed(); \
178 #define MITK_TEST_FOR_EXCEPTION(EXCEPTIONCLASS, STATEMENT) \
179 MITK_TEST_FOR_EXCEPTION_BEGIN(EXCEPTIONCLASS) \
181 MITK_TEST_FOR_EXCEPTION_END(EXCEPTIONCLASS)
197 #define MITK_ASSERT_EQUAL(EXPECTED, ACTUAL, MSG) \
198 if (((EXPECTED).IsNull()) || ((ACTUAL).IsNull())) \
200 mitkThrow() << "mitk::Equal does not work with nullptr pointer input."; \
202 CPPUNIT_ASSERT_MESSAGE(MSG, mitk::Equal(*(EXPECTED), *(ACTUAL), mitk::eps, true))
218 #define MITK_TEST_NOT_EQUAL(OBJ1, OBJ2, MSG) \
219 CPPUNIT_ASSERT_MESSAGE(MSG, !mitk::Equal(*(OBJ1), *(OBJ2), mitk::eps, true))
236 #define MITK_ASSERT_NOT_EQUAL(OBJ1, OBJ2, MSG) \
237 if (((OBJ1).IsNull()) || ((OBJ2).IsNull())) \
239 mitkThrow() << "mitk::Equal does not work with nullptr pointer input."; \
241 CPPUNIT_ASSERT_MESSAGE(MSG, !mitk::Equal(*(OBJ1), *(OBJ2), mitk::eps, true))
251 #define MITK_TEST_SUITE_REGISTRATION(TESTSUITE_NAME) \
252 int TESTSUITE_NAME##Test(int , char * []) \
257 CppUnit::TextUi::TestRunner runner; \
258 runner.addTest(TESTSUITE_NAME##TestSuite::suite()); \
259 result = runner.run() ? 0 : 1; \
261 catch (const mitk::TestNotRunException& e) \
263 MITK_WARN << "Test not run: " << e.GetDescription(); \
279 #define MITK_TEST(TESTMETHOD) CPPUNIT_TEST(TESTMETHOD)
295 #define MITK_PARAMETERIZED_TEST(TESTMETHOD, ARGS) \
298 std::string testName = #TESTMETHOD; \
299 for (std::size_t i = 0; i < ARGS.size(); ++i) \
301 testName += "_" + ARGS[i]; \
303 CPPUNIT_TEST_SUITE_ADD_TEST((new mitk::TestCaller<TestFixtureType>( \
304 context.getTestNameFor(testName), &TestFixtureType::TESTMETHOD, context.makeFixture(), args))); \
323 #define MITK_PARAMETERIZED_CMD_LINE_TEST(TESTMETHOD) \
324 CPPUNIT_TEST_SUITE_ADD_TEST((new mitk::TestCaller<TestFixtureType>( \
325 context.getTestNameFor(#TESTMETHOD), &TestFixtureType::TESTMETHOD, context.makeFixture())));
343 #define MITK_PARAMETERIZED_TEST_1(TESTMETHOD, arg1) \
346 std::vector<std::string> args; \
347 args.push_back(arg1); \
348 MITK_PARAMETERIZED_TEST(TESTMETHOD, args) \
368 #define MITK_PARAMETERIZED_TEST_2(TESTMETHOD, arg1, arg2) \
371 std::vector<std::string> args; \
372 args.push_back(arg1); \
373 args.push_back(arg2); \
374 MITK_PARAMETERIZED_TEST(TESTMETHOD, args) \
Find image slices visible on a given plane.