summaryrefslogtreecommitdiff
path: root/src/utils/checkutils.h
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-05-11 17:21:45 +0300
committerAndrei Karas <akaras@inbox.ru>2016-05-11 17:21:45 +0300
commit7f5f2394d3f3dccf2e6a07a466f3840dafed8e04 (patch)
tree5a239f75c18d6a8f959409f4714d6b9ec861e253 /src/utils/checkutils.h
parent5b5f27a70fd8b3c421f350c39d7fe05f692df2ed (diff)
downloadmv-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.h87
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