diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-05-11 17:21:45 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-05-11 17:21:45 +0300 |
commit | 7f5f2394d3f3dccf2e6a07a466f3840dafed8e04 (patch) | |
tree | 5a239f75c18d6a8f959409f4714d6b9ec861e253 /src/utils/checkutils.h | |
parent | 5b5f27a70fd8b3c421f350c39d7fe05f692df2ed (diff) | |
download | mv-7f5f2394d3f3dccf2e6a07a466f3840dafed8e04.tar.gz mv-7f5f2394d3f3dccf2e6a07a466f3840dafed8e04.tar.bz2 mv-7f5f2394d3f3dccf2e6a07a466f3840dafed8e04.tar.xz mv-7f5f2394d3f3dccf2e6a07a466f3840dafed8e04.zip |
In checkutils with unit tests enabled, any failed assert will throw exception.
Diffstat (limited to 'src/utils/checkutils.h')
-rw-r--r-- | src/utils/checkutils.h | 87 |
1 files changed, 85 insertions, 2 deletions
diff --git a/src/utils/checkutils.h b/src/utils/checkutils.h index 9966203dc..23b1fc965 100644 --- a/src/utils/checkutils.h +++ b/src/utils/checkutils.h @@ -89,6 +89,54 @@ "Detected false value", #val), \ throw new std::exception(), true) : false) +#define returnFailFalseV(val) \ + if (!val) \ + { \ + reportStack(__FILE__, __LINE__, __func__, \ + "Detected false value", #val); \ + throw new std::exception(); \ + } + +#define returnFailTrueV(val) \ + if (val) \ + { \ + reportStack(__FILE__, __LINE__, __func__, \ + "Detected true value", #val); \ + throw new std::exception(); \ + } + +#define returnFailFalse(ret, val) \ + if (!val) \ + { \ + reportStack(__FILE__, __LINE__, __func__, \ + "Detected false value", #val); \ + throw new std::exception(); \ + } + +#define returnFailTrue(ret, val) \ + if (val) \ + { \ + reportStack(__FILE__, __LINE__, __func__, \ + "Detected true value", #val); \ + throw new std::exception(); \ + } + +#define returnFailNullptrV(val) \ + if ((val) == nullptr) \ + { \ + reportStack(__FILE__, __LINE__, __func__, \ + "Detected null value", #val); \ + throw new std::exception(); \ + } + +#define returnFailNullptr(ret, val) \ + if ((val) == nullptr) \ + { \ + reportStack(__FILE__, __LINE__, __func__, \ + "Detected null value", #val); \ + throw new std::exception(); \ + } + void reportStack(const char *const file, const unsigned int line, const char *const func, @@ -118,17 +166,51 @@ void reportStack(const char *const file, #define returnNullptrVReal(val) \ if ((val) == nullptr) \ - return; \ + return; #define returnNullptrReal(ret, val) \ if ((val) == nullptr) \ - return ret; \ + return ret; #define failFalse(val) (val) #define failTrue(val) (val) +#define returnFailFalseV(val) \ + if (!val) \ + return; + +#define returnFailTrueV(val) \ + if (val) \ + return; + +#define returnFailFalse(ret, val) \ + if (!val) \ + return ret; + +#define returnFailTrue(ret, val) \ + if (val) \ + return ret; + +#define returnFailNullptrV(val) \ + if ((val) == nullptr) \ + return; + +#define returnFailNullptr(ret, val) \ + if ((val) == nullptr) \ + return ret; + #endif // ENABLE_ASSERTS +#ifdef UNITTESTS +#define reportFalse(val) failFalse(val) +#define reportTrue(val) failTrue(val) +#define returnFalseV(val) returnFailFalseV(val) +#define returnTrueV(val) returnFailTrueV(val) +#define returnFalse(ret, val) returnFailFalse(ret, val) +#define returnTrue(ret, val) returnFailTrue(ret, val) +#define returnNullptrV(val) returnFailNullptrV(val) +#define returnNullptr(ret, val) returnFailNullptr(ret, val) +#else // UNITTESTS #define reportFalse(val) reportFalseReal(val) #define reportTrue(val) reportTrueReal(val) #define returnFalseV(val) returnFalseVReal(val) @@ -137,5 +219,6 @@ void reportStack(const char *const file, #define returnTrue(ret, val) returnTrueReal(ret, val) #define returnNullptrV(val) returnNullptrVReal(val) #define returnNullptr(ret, val) returnNullptrReal(ret, val) +#endif // UNITTESTS #endif // UTILS_CHECKUTILS_H |