static void test_write_object(void) { struct spdk_json_write_ctx *w; BEGIN(); VAL_OBJECT_BEGIN(); VAL_OBJECT_END(); END("{}"); BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("a"); VAL_INT32(0); VAL_OBJECT_END(); END("{\"a\":0}"); BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("a"); VAL_INT32(0); VAL_NAME("b"); VAL_INT32(1); VAL_OBJECT_END(); END("{\"a\":0,\"b\":1}"); BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("a"); VAL_INT32(0); VAL_NAME("b"); VAL_INT32(1); VAL_NAME("c"); VAL_INT32(2); VAL_OBJECT_END(); END("{\"a\":0,\"b\":1,\"c\":2}"); }
#define VAL_NAME(x) { (x), #x} #ifndef LOG_PRI #define LOG_PRI(p) ((p) & LOG_PRIMASK) #endif static int use_syslog = 1; static int no_debuglog = 0; static int syslog_level_adjust = 0; static struct { int prio; const char *name; } prio_name[] = { VAL_NAME(LOG_EMERG), VAL_NAME(LOG_ALERT), VAL_NAME(LOG_CRIT), VAL_NAME(LOG_ERR), VAL_NAME(LOG_WARNING), VAL_NAME(LOG_NOTICE), VAL_NAME(LOG_INFO), VAL_NAME(LOG_DEBUG) }; static const char *prio_name_idx[16]; static void set_prio_idx_init() { int i;
static void test_write_nesting(void) { struct spdk_json_write_ctx *w; BEGIN(); VAL_ARRAY_BEGIN(); VAL_ARRAY_BEGIN(); VAL_ARRAY_END(); VAL_ARRAY_END(); END("[[]]"); BEGIN(); VAL_ARRAY_BEGIN(); VAL_ARRAY_BEGIN(); VAL_ARRAY_BEGIN(); VAL_ARRAY_END(); VAL_ARRAY_END(); VAL_ARRAY_END(); END("[[[]]]"); BEGIN(); VAL_ARRAY_BEGIN(); VAL_INT32(0); VAL_ARRAY_BEGIN(); VAL_ARRAY_END(); VAL_ARRAY_END(); END("[0,[]]"); BEGIN(); VAL_ARRAY_BEGIN(); VAL_ARRAY_BEGIN(); VAL_ARRAY_END(); VAL_INT32(0); VAL_ARRAY_END(); END("[[],0]"); BEGIN(); VAL_ARRAY_BEGIN(); VAL_INT32(0); VAL_ARRAY_BEGIN(); VAL_INT32(1); VAL_ARRAY_END(); VAL_INT32(2); VAL_ARRAY_END(); END("[0,[1],2]"); BEGIN(); VAL_ARRAY_BEGIN(); VAL_INT32(0); VAL_INT32(1); VAL_ARRAY_BEGIN(); VAL_INT32(2); VAL_INT32(3); VAL_ARRAY_END(); VAL_INT32(4); VAL_INT32(5); VAL_ARRAY_END(); END("[0,1,[2,3],4,5]"); BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("a"); VAL_OBJECT_BEGIN(); VAL_OBJECT_END(); VAL_OBJECT_END(); END("{\"a\":{}}"); BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("a"); VAL_OBJECT_BEGIN(); VAL_NAME("b"); VAL_INT32(0); VAL_OBJECT_END(); VAL_OBJECT_END(); END("{\"a\":{\"b\":0}}"); BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("a"); VAL_ARRAY_BEGIN(); VAL_INT32(0); VAL_ARRAY_END(); VAL_OBJECT_END(); END("{\"a\":[0]}"); BEGIN(); VAL_ARRAY_BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("a"); VAL_INT32(0); VAL_OBJECT_END(); VAL_ARRAY_END(); END("[{\"a\":0}]"); BEGIN(); VAL_ARRAY_BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("a"); VAL_OBJECT_BEGIN(); VAL_NAME("b"); VAL_ARRAY_BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("c"); VAL_INT32(1); VAL_OBJECT_END(); VAL_INT32(2); VAL_ARRAY_END(); VAL_NAME("d"); VAL_INT32(3); VAL_OBJECT_END(); VAL_NAME("e"); VAL_INT32(4); VAL_OBJECT_END(); VAL_INT32(5); VAL_ARRAY_END(); END("[{\"a\":{\"b\":[{\"c\":1},2],\"d\":3},\"e\":4},5]"); /* Examples from RFC 7159 */ BEGIN(); VAL_OBJECT_BEGIN(); VAL_NAME("Image"); VAL_OBJECT_BEGIN(); VAL_NAME("Width"); VAL_INT32(800); VAL_NAME("Height"); VAL_INT32(600); VAL_NAME("Title"); VAL_STRING("View from 15th Floor"); VAL_NAME("Thumbnail"); VAL_OBJECT_BEGIN(); VAL_NAME("Url"); VAL_STRING("http://www.example.com/image/481989943"); VAL_NAME("Height"); VAL_INT32(125); VAL_NAME("Width"); VAL_INT32(100); VAL_OBJECT_END(); VAL_NAME("Animated"); VAL_FALSE(); VAL_NAME("IDs"); VAL_ARRAY_BEGIN(); VAL_INT32(116); VAL_INT32(943); VAL_INT32(234); VAL_INT32(38793); VAL_ARRAY_END(); VAL_OBJECT_END(); VAL_OBJECT_END(); END( "{\"Image\":" "{" "\"Width\":800," "\"Height\":600," "\"Title\":\"View from 15th Floor\"," "\"Thumbnail\":{" "\"Url\":\"http://www.example.com/image/481989943\"," "\"Height\":125," "\"Width\":100" "}," "\"Animated\":false," "\"IDs\":[116,943,234,38793]" "}" "}"); }