aboutsummaryrefslogtreecommitdiffstats
path: root/camel/tests/lib/camel-test.h
diff options
context:
space:
mode:
Diffstat (limited to 'camel/tests/lib/camel-test.h')
-rw-r--r--camel/tests/lib/camel-test.h24
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 */