Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <exception>
00019 #include <string>
00020 #include <iostream>
00021
00022 #include <itkExceptionObject.h>
00023 #include <mitkTestManager.h>
00024
00025 namespace mitk {
00027 class TestFailedException : public std::exception {
00028 public:
00029 TestFailedException() {}
00030 };
00031 }
00032
00038 #define MITK_TEST_OUTPUT_NO_ENDL(x) \
00039 std::cout x ;
00040
00042 #define MITK_TEST_OUTPUT(x) \
00043 MITK_TEST_OUTPUT_NO_ENDL(x << "\n")
00044
00047 #define MITK_TEST_BEGIN(testName) \
00048 std::string mitkTestName(#testName); \
00049 mitk::TestManager::GetInstance()->Initialize(); \
00050 try {
00051
00053 #define MITK_TEST_FAILED_MSG(MSG) \
00054 MITK_TEST_OUTPUT(MSG) \
00055 throw mitk::TestFailedException();
00056
00058 #define MITK_TEST_END() \
00059 } catch (mitk::TestFailedException ex) { \
00060 MITK_TEST_OUTPUT(<< "Further test execution skipped.") \
00061 mitk::TestManager::GetInstance()->TestFailed(); \
00062 } catch (itk::ExceptionObject ex) { \
00063 MITK_TEST_OUTPUT(<< "ITKException occured: " << ex) \
00064 mitk::TestManager::GetInstance()->TestFailed(); \
00065 } \
00066 if (mitk::TestManager::GetInstance()->NumberOfFailedTests() > 0) { \
00067 MITK_TEST_OUTPUT(<< mitkTestName << ": [DONE FAILED] , subtests passed: " << \
00068 mitk::TestManager::GetInstance()->NumberOfPassedTests() << " failed: " << \
00069 mitk::TestManager::GetInstance()->NumberOfFailedTests() ) \
00070 return EXIT_FAILURE; \
00071 } else { \
00072 MITK_TEST_OUTPUT(<< mitkTestName << ": " \
00073 << mitk::TestManager::GetInstance()->NumberOfPassedTests() \
00074 << " tests [DONE PASSED]") \
00075 return EXIT_SUCCESS; \
00076 } \
00077
00078 #define MITK_TEST_CONDITION(COND,MSG) \
00079 MITK_TEST_OUTPUT_NO_ENDL(<< MSG) \
00080 if ( ! (COND) ) { \
00081 mitk::TestManager::GetInstance()->TestFailed(); \
00082 MITK_TEST_OUTPUT(<< " [FAILED]\n" << "In " << __FILE__ \
00083 << ", line " << __LINE__ \
00084 << ": " #COND " : [FAILED]") \
00085 } else { \
00086 MITK_TEST_OUTPUT(<< " [PASSED]") \
00087 mitk::TestManager::GetInstance()->TestPassed(); \
00088 }
00089
00090 #define MITK_TEST_CONDITION_REQUIRED(COND,MSG) \
00091 MITK_TEST_OUTPUT_NO_ENDL(<< MSG) \
00092 if ( ! (COND) ) { \
00093 MITK_TEST_FAILED_MSG(<< " [FAILED]\n" << " +--> in " << __FILE__ \
00094 << ", line " << __LINE__ \
00095 << ", expression is false: \"" #COND "\"") \
00096 } else { \
00097 MITK_TEST_OUTPUT(<< " [PASSED]") \
00098 mitk::TestManager::GetInstance()->TestPassed(); \
00099 }
00100
00118 #define MITK_TEST_FOR_EXCEPTION_BEGIN(EXCEPTIONCLASS) \
00119 try {
00120
00121 #define MITK_TEST_FOR_EXCEPTION_END(EXCEPTIONCLASS) \
00122 mitk::TestManager::GetInstance()->TestFailed(); \
00123 MITK_TEST_OUTPUT( << "Expected an '" << #EXCEPTIONCLASS << "' exception. [FAILED]") \
00124 } \
00125 catch (EXCEPTIONCLASS) { \
00126 MITK_TEST_OUTPUT( << "Caught an expected '" << #EXCEPTIONCLASS \
00127 << "' exception. [PASSED]") \
00128 mitk::TestManager::GetInstance()->TestPassed(); \
00129 }
00130
00131
00136 #define MITK_TEST_FOR_EXCEPTION(EXCEPTIONCLASS, STATEMENT) \
00137 MITK_TEST_FOR_EXCEPTION_BEGIN(EXCEPTIONCLASS) \
00138 STATEMENT ; \
00139 MITK_TEST_FOR_EXCEPTION_END(EXCEPTIONCLASS)
00140