diff options
Diffstat (limited to 'camel/tests/lib/camel-test.h')
-rw-r--r-- | camel/tests/lib/camel-test.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/camel/tests/lib/camel-test.h b/camel/tests/lib/camel-test.h index 8d3c94bd00..6ff8281aeb 100644 --- a/camel/tests/lib/camel-test.h +++ b/camel/tests/lib/camel-test.h @@ -6,9 +6,25 @@ #include <stdlib.h> #include <glib.h> +void camel_test_failv(const char *why, va_list ap); + /* perform a check assertion */ -#define check(x) do {if (!(x)) { camel_test_fail("%s", #x); } } while (0) -#define check_msg(x, y, z...) do {if (!(x)) { camel_test_fail("%s\n\t" #y, #x, ##z); } } while (0) +#define check(x) do {if (!(x)) { camel_test_fail("%s (%d): %s", __FILE__, __LINE__, #x); } } while (0) +/* check with message */ +#ifdef __GNUC__ +#define check_msg(x, y, z...) do {if (!(x)) { camel_test_fail("%s (%d): %s\n\t" #y, __FILE__, __LINE__, #x, ##z); } } while (0) +#else +static void check_msg(int truth, char *fmt, ...) +{ + /* no gcc, we lose the condition that failed, nm */ + if (!truth) { + va_list ap; + va_start(ap, fmt); + camel_test_failv(fmt, ap); + va_end(ap); + } +} +#endif #define check_count(object, expected) do { \ if (CAMEL_OBJECT(object)->ref_count != expected) { \ @@ -41,11 +57,11 @@ void camel_test_pull(void); /* fail a test, with a reason why */ void camel_test_fail(const char *why, ...); +void camel_test_failv(const char *why, va_list ap); /* Set whether a failed test quits. May be nested, but must be called in nonfatal/fatal pairs */ void camel_test_nonfatal(const char *why, ...); -void camel_test_fatal(); - +void camel_test_fatal(void); /* utility functions */ /* compare strings, ignore whitespace though */ |