aboutsummaryrefslogtreecommitdiff
path: root/test/task.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/task.h')
-rw-r--r--test/task.h50
1 files changed, 34 insertions, 16 deletions
diff --git a/test/task.h b/test/task.h
index d3eeaf77..2600da5e 100644
--- a/test/task.h
+++ b/test/task.h
@@ -113,8 +113,8 @@ typedef enum {
#define ASSERT_BASE(a, operator, b, type, conv) \
do { \
- volatile type eval_a = (type) (a); \
- volatile type eval_b = (type) (b); \
+ type const eval_a = (a); \
+ type const eval_b = (b); \
if (!(eval_a operator eval_b)) { \
fprintf(stderr, \
"Assertion failed in %s on line %d: `%s %s %s` " \
@@ -131,6 +131,21 @@ typedef enum {
} \
} while (0)
+#define ASSERT_OK(a) \
+ do { \
+ int64_t const eval_a = (a); \
+ if (eval_a) { \
+ fprintf(stderr, \
+ "Assertion failed in %s on line %d: `%s` okay " \
+ "(error: %"PRId64")\n", \
+ __FILE__, \
+ __LINE__, \
+ #a, \
+ eval_a); \
+ abort(); \
+ } \
+ } while (0)
+
#define ASSERT_BASE_STR(expr, a, operator, b, type, conv) \
do { \
if (!(expr)) { \
@@ -173,8 +188,8 @@ typedef enum {
do { \
if (!(expr)) { \
int i; \
- unsigned char* a_ = (unsigned char*)a; \
- unsigned char* b_ = (unsigned char*)b; \
+ const unsigned char* a_ = (a); \
+ const unsigned char* b_ = (b); \
fprintf(stderr, \
"Assertion failed in %s on line %d: `%s %s %s` (", \
__FILE__, \
@@ -202,7 +217,6 @@ typedef enum {
#define ASSERT_LE(a, b) ASSERT_BASE(a, <=, b, int64_t, PRId64)
#define ASSERT_LT(a, b) ASSERT_BASE(a, <, b, int64_t, PRId64)
#define ASSERT_NE(a, b) ASSERT_BASE(a, !=, b, int64_t, PRId64)
-#define ASSERT_OK(a) ASSERT_BASE(a, ==, 0, int64_t, PRId64)
#define ASSERT_UINT64_EQ(a, b) ASSERT_BASE(a, ==, b, uint64_t, PRIu64)
#define ASSERT_UINT64_GE(a, b) ASSERT_BASE(a, >=, b, uint64_t, PRIu64)
@@ -211,12 +225,12 @@ typedef enum {
#define ASSERT_UINT64_LT(a, b) ASSERT_BASE(a, <, b, uint64_t, PRIu64)
#define ASSERT_UINT64_NE(a, b) ASSERT_BASE(a, !=, b, uint64_t, PRIu64)
-#define ASSERT_DOUBLE_EQ(a, b) ASSERT_BASE(a, ==, b, double, "f")
-#define ASSERT_DOUBLE_GE(a, b) ASSERT_BASE(a, >=, b, double, "f")
-#define ASSERT_DOUBLE_GT(a, b) ASSERT_BASE(a, >, b, double, "f")
-#define ASSERT_DOUBLE_LE(a, b) ASSERT_BASE(a, <=, b, double, "f")
-#define ASSERT_DOUBLE_LT(a, b) ASSERT_BASE(a, <, b, double, "f")
-#define ASSERT_DOUBLE_NE(a, b) ASSERT_BASE(a, !=, b, double, "f")
+#define ASSERT_DOUBLE_EQ(a, b) ASSERT_BASE(a, ==, b, volatile double, "f")
+#define ASSERT_DOUBLE_GE(a, b) ASSERT_BASE(a, >=, b, volatile double, "f")
+#define ASSERT_DOUBLE_GT(a, b) ASSERT_BASE(a, >, b, volatile double, "f")
+#define ASSERT_DOUBLE_LE(a, b) ASSERT_BASE(a, <=, b, volatile double, "f")
+#define ASSERT_DOUBLE_LT(a, b) ASSERT_BASE(a, <, b, volatile double, "f")
+#define ASSERT_DOUBLE_NE(a, b) ASSERT_BASE(a, !=, b, volatile double, "f")
#define ASSERT_STR_EQ(a, b) \
ASSERT_BASE_STR(strcmp(a, b) == 0, a, == , b, char*, "s")
@@ -237,19 +251,23 @@ typedef enum {
ASSERT_BASE_HEX(memcmp(a, b, size) != 0, a, !=, b, size)
#define ASSERT_NULL(a) \
- ASSERT_BASE(a, ==, NULL, void*, "p")
+ ASSERT_BASE(a, ==, NULL, const void*, "p")
#define ASSERT_NOT_NULL(a) \
- ASSERT_BASE(a, !=, NULL, void*, "p")
+ ASSERT_BASE(a, !=, NULL, const void*, "p")
#define ASSERT_PTR_EQ(a, b) \
- ASSERT_BASE(a, ==, b, void*, "p")
+ ASSERT_BASE(a, ==, b, const void*, "p")
#define ASSERT_PTR_NE(a, b) \
- ASSERT_BASE(a, !=, b, void*, "p")
+ ASSERT_BASE(a, !=, b, const void*, "p")
#define ASSERT_PTR_LT(a, b) \
- ASSERT_BASE(a, <, b, void*, "p")
+ ASSERT_BASE(a, <, b, const void*, "p")
+#define ASSERT_PTR_LE(a, b) \
+ ASSERT_BASE(a, <=, b, const void*, "p")
+#define ASSERT_PTR_GE(a, b) \
+ ASSERT_BASE(a, >=, b, const void*, "p")
/* This macro cleans up the event loop. This is used to avoid valgrind
* warnings about memory being "leaked" by the event loop.