aboutsummaryrefslogtreecommitdiffstats
path: root/test.h
diff options
context:
space:
mode:
Diffstat (limited to 'test.h')
-rw-r--r--test.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/test.h b/test.h
index e68c9c1..dcbf3b8 100644
--- a/test.h
+++ b/test.h
@@ -20,6 +20,40 @@
return 0;\
} while (0)
+#define assert_unreached()\
+ assert(*&(volatile int *){0})
+
+#define assert_exit(EXPR)\
+ do {\
+ volatile int old_stderr_ok__ = stderr_ok;\
+ exit_ok = 1;\
+ stderr_ok = 1;\
+ stderr_n = 0;\
+ if (setjmp(exit_jmp)) {\
+ exit_ok = 0;\
+ stderr_ok = old_stderr_ok__;\
+ break;\
+ }\
+ assert(EXPR);\
+ assert_unreached();\
+ } while (0)
+
+#define assert_exit_ptr(EXPR)\
+ do {\
+ void *volatile ptr__;\
+ assert_exit((ptr__ = (EXPR)));\
+ } while (0)
+
+#define assert_stderr(FMT, ...)\
+ do {\
+ char buf__[1024];\
+ int len__;\
+ len__ = sprintf(buf__, FMT, __VA_ARGS__);\
+ assert(len__ >= 0);\
+ assert((size_t)len__ == stderr_n);\
+ assert(!memcmp(buf__, stderr_buf, stderr_n));\
+ } while (0);
+
struct allocinfo {
void *real_beginning;
@@ -32,6 +66,8 @@ struct allocinfo {
};
+extern char *argv0;
+
extern size_t alloc_fail_in;
extern int exit_real;
extern int exit_ok;
@@ -40,6 +76,7 @@ extern jmp_buf exit_jmp;
extern char stderr_buf[8 << 10];
extern size_t stderr_n;
extern int stderr_real;
+extern int stderr_ok;
size_t get_pagesize(void);