Add lots of tests for pack/unpack code, fix bugs found
[jansson.git] / test / suites / api / util.h
index 986ef2e..83be721 100644 (file)
@@ -5,16 +5,51 @@
  * it under the terms of the MIT license. See LICENSE for details.
  */
 
-#ifndef TESTPROGS_UTIL_H
-#define TESTPROGS_UTIL_H
+#ifndef UTIL_H
+#define UTIL_H
 
+#include <stdio.h>
 #include <stdlib.h>
+#include <jansson.h>
+
+#define failhdr fprintf(stderr, "%s:%s:%d: ", __FILE__, __FUNCTION__, __LINE__)
 
 #define fail(msg)                                                \
     do {                                                         \
-        fprintf(stderr, "%s:%s:%d: %s\n",                        \
-                __FILE__, __FUNCTION__, __LINE__, msg);          \
+        failhdr;                                                 \
+        fprintf(stderr, "%s\n", msg);                            \
         exit(1);                                                 \
     } while(0)
 
+/* Assumes json_error_t error */
+#define check_error(text_, source_, line_, column_, position_)          \
+    do {                                                                \
+        if(strcmp(error.text, text_) != 0) {                            \
+            failhdr;                                                    \
+            fprintf(stderr, "text: \"%s\" != \"%s\"\n", error.text, text_); \
+            exit(1);                                                    \
+        }                                                               \
+        if(strcmp(error.source, source_) != 0) {                        \
+            failhdr;                                                    \
+                                                                        \
+            fprintf(stderr, "source: \"%s\" != \"%s\"\n", error.source, source_); \
+            exit(1);                                                    \
+        }                                                               \
+        if(error.line != line_) {                                       \
+            failhdr;                                                    \
+            fprintf(stderr, "line: %d != %d\n", error.line, line_);     \
+            exit(1);                                                    \
+        }                                                               \
+        if(error.column != column_) {                                   \
+            failhdr;                                                    \
+            fprintf(stderr, "column: %d != %d\n", error.column, column_); \
+            exit(1);                                                    \
+        }                                                               \
+        if(error.position != position_) {                               \
+            failhdr;                                                    \
+            fprintf(stderr, "position: %d != %d\n", error.position, position_); \
+            exit(1);                                                    \
+        }                                                               \
+    } while(0)
+
 #endif