10 static int expect(json_parser_t p, const char *input,
16 n = json_parser_parse(p, input);
17 if (n == 0 && output == 0)
21 WRBUF result = wrbuf_alloc();
23 json_write_wrbuf(n, result);
24 if (strcmp(wrbuf_cstr(result), output) == 0)
28 yaz_log(YLOG_WARN, "expected '%s' but got '%s'",
29 output, wrbuf_cstr(result));
31 wrbuf_destroy(result);
35 yaz_log(YLOG_WARN, "expected '%s' but got error '%s'",
36 output, json_parser_get_errmsg(p));
42 static void tst1(void)
44 json_parser_t p = json_parser_create();
50 YAZ_CHECK(expect(p, "", 0));
52 YAZ_CHECK(expect(p, "1234", 0));
54 YAZ_CHECK(expect(p, "[ 1234 ]", 0));
56 YAZ_CHECK(expect(p, "{\"k\":tru}", 0));
58 YAZ_CHECK(expect(p, "{\"k\":null", 0));
60 YAZ_CHECK(expect(p, "{\"k\":nullx}", 0));
62 YAZ_CHECK(expect(p, "{\"k\":-", 0));
64 YAZ_CHECK(expect(p, "{\"k\":+", 0));
66 YAZ_CHECK(expect(p, "{\"k\":\"a}", 0));
68 YAZ_CHECK(expect(p, "{\"k\":\"a", 0));
70 YAZ_CHECK(expect(p, "{\"k\":\"", 0));
72 YAZ_CHECK(expect(p, "{", 0));
74 YAZ_CHECK(expect(p, "{}", "{}"));
76 YAZ_CHECK(expect(p, "{} extra", 0));
78 YAZ_CHECK(expect(p, "{\"a\":[1,2,3}", 0));
80 YAZ_CHECK(expect(p, "{\"a\":[1,2,", 0));
82 YAZ_CHECK(expect(p, "{\"k\":\"wa\"}", "{\"k\":\"wa\"}"));
84 YAZ_CHECK(expect(p, "{\"k\":null}", "{\"k\":null}"));
86 YAZ_CHECK(expect(p, "{\"k\":false}", "{\"k\":false}"));
88 YAZ_CHECK(expect(p, "{\"k\":true}", "{\"k\":true}"));
90 YAZ_CHECK(expect(p, "{\"k\":12}", "{\"k\":12}"));
92 YAZ_CHECK(expect(p, "{\"k\":-12}", "{\"k\":-12}"));
94 YAZ_CHECK(expect(p, "{\"k\":1.2e6}", "{\"k\":1.2e+06}"));
96 YAZ_CHECK(expect(p, "{\"k\":1e3}", "{\"k\":1000}"));
98 YAZ_CHECK(expect(p, "{\"k\":\"\"}", "{\"k\":\"\"}"));
100 YAZ_CHECK(expect(p, "{\"a\":1,\"b\":2}", "{\"a\":1,\"b\":2}"));
102 YAZ_CHECK(expect(p, "{\"a\":1,\"b\":2,\"c\":3}",
103 "{\"a\":1,\"b\":2,\"c\":3}"));
105 YAZ_CHECK(expect(p, "{\"a\":[]}", "{\"a\":[]}"));
107 YAZ_CHECK(expect(p, "{\"a\":[1]}", "{\"a\":[1]}"));
109 YAZ_CHECK(expect(p, "{\"a\":[1,2]}", "{\"a\":[1,2]}"));
111 YAZ_CHECK(expect(p, "{\"a\":[1,2,3]}", "{\"a\":[1,2,3]}"));
113 YAZ_CHECK(expect(p, "{\"k\":\"\\t\"}", "{\"k\":\"\x09\"}"));
115 YAZ_CHECK(expect(p, "{\"k\":\"\\u0009\"}", "{\"k\":\"\x09\"}"));
117 json_parser_destroy(p);
120 int main (int argc, char **argv)
122 YAZ_CHECK_INIT(argc, argv);
130 * c-file-style: "Stroustrup"
131 * indent-tabs-mode: nil
133 * vim: shiftwidth=4 tabstop=8 expandtab