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")
60 #define MITK_TEST_BEGIN(testName) \
61 std::string mitkTestName(#testName); \
62 mitk::TestManager::GetInstance()->Initialize(); \
71 #define MITK_TEST_FAILED_MSG(MSG) \
72 MITK_TEST_OUTPUT(MSG) \
73 throw mitk::TestFailedException();
81 #define MITK_TEST_END() \
83 catch (const mitk::TestFailedException &) \
85 MITK_TEST_OUTPUT(<< "Further test execution skipped.") \
86 mitk::TestManager::GetInstance()->TestFailed(); \
88 catch (const std::exception &ex) \
90 MITK_TEST_OUTPUT(<< "std::exception occurred " << ex.what()) \
91 mitk::TestManager::GetInstance()->TestFailed(); \
93 if (mitk::TestManager::GetInstance()->NumberOfFailedTests() > 0) \
95 MITK_TEST_OUTPUT(<< mitkTestName << ": [DONE FAILED] , subtests passed: " \
96 << mitk::TestManager::GetInstance()->NumberOfPassedTests() \
98 << mitk::TestManager::GetInstance()->NumberOfFailedTests()) \
99 return EXIT_FAILURE; \
103 MITK_TEST_OUTPUT(<< mitkTestName << ": " << mitk::TestManager::GetInstance()->NumberOfPassedTests() \
104 << " tests [DONE PASSED]") \
105 return EXIT_SUCCESS; \
111 #define MITK_TEST_CONDITION(COND, MSG) \
112 MITK_TEST_OUTPUT_NO_ENDL(<< MSG) \
115 mitk::TestManager::GetInstance()->TestFailed(); \
116 MITK_TEST_OUTPUT(<< " [FAILED]\n" \
121 << ": " #COND " : [FAILED]") \
125 MITK_TEST_OUTPUT(<< " [PASSED]") \
126 mitk::TestManager::GetInstance()->TestPassed(); \
132 #define MITK_TEST_CONDITION_REQUIRED(COND, MSG) \
133 MITK_TEST_OUTPUT_NO_ENDL(<< MSG) \
136 MITK_TEST_FAILED_MSG(<< " [FAILED]\n" \
141 << ", expression is false: \"" #COND "\"") \
145 MITK_TEST_OUTPUT(<< " [PASSED]") \
146 mitk::TestManager::GetInstance()->TestPassed(); \
169 #define MITK_TEST_FOR_EXCEPTION_BEGIN(EXCEPTIONCLASS) \
175 #define MITK_TEST_FOR_EXCEPTION_END(EXCEPTIONCLASS) \
176 mitk::TestManager::GetInstance()->TestFailed(); \
177 MITK_TEST_OUTPUT(<< "Expected an '" << #EXCEPTIONCLASS << "' exception. [FAILED]") \
179 catch (const EXCEPTIONCLASS &) \
181 MITK_TEST_OUTPUT(<< "Caught an expected '" << #EXCEPTIONCLASS << "' exception. [PASSED]") \
182 mitk::TestManager::GetInstance()->TestPassed(); \
192 #define MITK_TEST_FOR_EXCEPTION(EXCEPTIONCLASS, STATEMENT) \
193 MITK_TEST_FOR_EXCEPTION_BEGIN(EXCEPTIONCLASS) \
195 MITK_TEST_FOR_EXCEPTION_END(EXCEPTIONCLASS)
211 #define MITK_ASSERT_EQUAL(EXPECTED, ACTUAL, MSG) \
212 if (((EXPECTED).IsNull()) || ((ACTUAL).IsNull())) \
214 mitkThrow() << "mitk::Equal does not work with nullptr pointer input."; \
216 CPPUNIT_ASSERT_MESSAGE(MSG, mitk::Equal(*(EXPECTED), *(ACTUAL), mitk::eps, true))
234 #define MITK_TEST_NOT_EQUAL(OBJ1, OBJ2, MSG) \
235 CPPUNIT_ASSERT_MESSAGE(MSG, !mitk::Equal(*(OBJ1), *(OBJ2), mitk::eps, true))
252 #define MITK_ASSERT_NOT_EQUAL(OBJ1, OBJ2, MSG) \
253 if (((OBJ1).IsNull()) || ((OBJ2).IsNull())) \
255 mitkThrow() << "mitk::Equal does not work with nullptr pointer input."; \
257 CPPUNIT_ASSERT_MESSAGE(MSG, !mitk::Equal(*(OBJ1), *(OBJ2), mitk::eps, true))
267 #define MITK_TEST_SUITE_REGISTRATION(TESTSUITE_NAME) \
268 int TESTSUITE_NAME##Test(int , char * []) \
273 CppUnit::TextUi::TestRunner runner; \
274 runner.addTest(TESTSUITE_NAME##TestSuite::suite()); \
275 result = runner.run() ? 0 : 1; \
277 catch (const mitk::TestNotRunException& e) \
279 MITK_WARN << "Test not run: " << e.GetDescription(); \
295 #define MITK_TEST(TESTMETHOD) CPPUNIT_TEST(TESTMETHOD)
311 #define MITK_PARAMETERIZED_TEST(TESTMETHOD, ARGS) \
314 std::string testName = #TESTMETHOD; \
315 for (std::size_t i = 0; i < ARGS.size(); ++i) \
317 testName += "_" + ARGS[i]; \
319 CPPUNIT_TEST_SUITE_ADD_TEST((new mitk::TestCaller<TestFixtureType>( \
320 context.getTestNameFor(testName), &TestFixtureType::TESTMETHOD, context.makeFixture(), args))); \
339 #define MITK_PARAMETERIZED_CMD_LINE_TEST(TESTMETHOD) \
340 CPPUNIT_TEST_SUITE_ADD_TEST((new mitk::TestCaller<TestFixtureType>( \
341 context.getTestNameFor(#TESTMETHOD), &TestFixtureType::TESTMETHOD, context.makeFixture())));
359 #define MITK_PARAMETERIZED_TEST_1(TESTMETHOD, arg1) \
362 std::vector<std::string> args; \
363 args.push_back(arg1); \
364 MITK_PARAMETERIZED_TEST(TESTMETHOD, args) \
384 #define MITK_PARAMETERIZED_TEST_2(TESTMETHOD, arg1, arg2) \
387 std::vector<std::string> args; \
388 args.push_back(arg1); \
389 args.push_back(arg2); \
390 MITK_PARAMETERIZED_TEST(TESTMETHOD, args) \
Find image slices visible on a given plane.