test-json-parser.c revision 7877db7b5daad125b6cb3e015574f33871c9a51b
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen/* Copyright (c) 2012 Dovecot authors, see the included COPYING file */
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainenstatic const char json_input[] =
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen "\t\"key\"\t:\t\t\"string\","
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen " \"key2\" : 1234, \n"
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen "\"key3\":true,"
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen "\"key4\":false,"
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen "\"key5\":null,"
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen "\"key6\": {},"
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen "\"key7\": {"
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen " \"sub1\":\"value\""
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen "\"key8\": {"
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen " \"sub2\":-12.456,\n"
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen " \"sub3\":12.456e9,\n"
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen " \"sub4\":0.456e-789"
7877db7b5daad125b6cb3e015574f33871c9a51bTimo Sirainen "\"key9\": \"foo\\\\\\\"\\b\\f\\n\\r\\t\\u0001\uffff\","
7877db7b5daad125b6cb3e015574f33871c9a51bTimo Sirainen "\"key10\": \"foo\\\\\\\"\\b\\f\\n\\r\\t\\u0001\uffff\""
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainenstatic struct {
7877db7b5daad125b6cb3e015574f33871c9a51bTimo Sirainen { JSON_TYPE_STRING, "foo\\\"\b\f\n\r\t\001\xef\xbf\xbf" },
7877db7b5daad125b6cb3e015574f33871c9a51bTimo Sirainen { TYPE_STREAM, "foo\\\"\b\f\n\r\t\001\xef\xbf\xbf" }
7877db7b5daad125b6cb3e015574f33871c9a51bTimo Sirainenstream_read_value(struct istream **input, const char **value_r)
7877db7b5daad125b6cb3e015574f33871c9a51bTimo Sirainen const unsigned char *data;
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainenstatic void test_json_parser_success(bool full_size)
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen unsigned int i, pos, json_input_len = strlen(json_input);
7877db7b5daad125b6cb3e015574f33871c9a51bTimo Sirainen test_begin(full_size ? "json parser" : "json parser (nonblocking)");
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen input = test_istream_create_data(json_input, json_input_len);
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen test_assert(null_strcmp(json_output[pos].value, value) == 0);
ae9691f7ef36d5272d72c90fa51393dfea5dd126Timo Sirainen test_assert(json_parse_next(parser, &type, &value) == -1);