1/*
2 * Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
3 *
4 * Jansson is free software; you can redistribute it and/or modify
5 * it under the terms of the MIT license. See LICENSE for details.
6 */
7
8#ifndef UTIL_H
9#define UTIL_H
10
11#ifdef HAVE_CONFIG_H
12#include <jansson_private_config.h>
13#endif
14
15#include <stdio.h>
16#include <stdlib.h>
17#if HAVE_LOCALE_H
18#include <locale.h>
19#endif
20
21#include <jansson.h>
22
23#define failhdr fprintf(stderr, "%s:%s:%d: ", __FILE__, __FUNCTION__, __LINE__)
24
25#define fail(msg)                                                \
26    do {                                                         \
27        failhdr;                                                 \
28        fprintf(stderr, "%s\n", msg);                            \
29        exit(1);                                                 \
30    } while(0)
31
32/* Assumes json_error_t error */
33#define check_error(text_, source_, line_, column_, position_)          \
34    do {                                                                \
35        if(strcmp(error.text, text_) != 0) {                            \
36            failhdr;                                                    \
37            fprintf(stderr, "text: \"%s\" != \"%s\"\n", error.text, text_); \
38            exit(1);                                                    \
39        }                                                               \
40        if(strcmp(error.source, source_) != 0) {                        \
41            failhdr;                                                    \
42                                                                        \
43            fprintf(stderr, "source: \"%s\" != \"%s\"\n", error.source, source_); \
44            exit(1);                                                    \
45        }                                                               \
46        if(error.line != line_) {                                       \
47            failhdr;                                                    \
48            fprintf(stderr, "line: %d != %d\n", error.line, line_);     \
49            exit(1);                                                    \
50        }                                                               \
51        if(error.column != column_) {                                   \
52            failhdr;                                                    \
53            fprintf(stderr, "column: %d != %d\n", error.column, column_); \
54            exit(1);                                                    \
55        }                                                               \
56        if(error.position != position_) {                               \
57            failhdr;                                                    \
58            fprintf(stderr, "position: %d != %d\n", error.position, position_); \
59            exit(1);                                                    \
60        }                                                               \
61    } while(0)
62
63
64static void run_tests();
65
66int main() {
67#ifdef HAVE_SETLOCALE
68    setlocale(LC_ALL, "");
69#endif
70    run_tests();
71    return 0;
72}
73
74#endif
75