Skip to content

Commit 967fa16

Browse files
committed
add more tests and link from readme
1 parent 23c5d48 commit 967fa16

File tree

3 files changed

+48
-9
lines changed

3 files changed

+48
-9
lines changed

README.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,23 @@ A one-pass minimal overhead walk of the raw bytes, using each one as an index in
1212
Parsing this:
1313

1414
````json
15-
{"foo":"bar","barbar":[1,2,3],"obj":{"a":"b"}}
15+
{
16+
"barbar": [
17+
1,
18+
2,
19+
3
20+
],
21+
"foo": "bar",
22+
"obj": {
23+
"a": "b"
24+
}
25+
}
26+
1627
````
1728

18-
Using `at = js0n("barbar", &len, json, strlen(json))` would return an at pointing to `[1,2,3]` and set len to `7`.
29+
Using `val = js0n("barbar", 6, json, strlen(json), &vlen)` would return a val pointing to `[1,2,3]` and set vlen to `7`.
1930

31+
For more usage examples see the [test.json](test/test.json) and [test.c](test/test.c).
2032

2133
## History
2234

test/test.c

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
int main(int argc, char **argv)
88
{
99
char buff[1024], *json = NULL, *ret;
10-
int len, jlen=0;
10+
int len, len2, jlen=0;
1111
FILE *f;
1212

1313
fail_unless((f = fopen("./test/test.json","r")) != NULL);
@@ -23,11 +23,36 @@ int main(int argc, char **argv)
2323
// printf("got %s %d\n",ret,len);
2424
fail_unless(strncmp("value",ret,len) == 0);
2525

26+
ret = js0n("foo",0,json,jlen,&len);
27+
fail_unless(strncmp("b\\\"a and \\\\ r",ret,len) == 0);
28+
29+
ret = js0n("array",0,json,jlen,&len);
30+
fail_unless(strncmp("[1,2,\"three\",4]",ret,len) == 0);
31+
32+
ret = js0n(0,2,ret,len,&len2);
33+
fail_unless(strncmp("three",ret,len2) == 0);
34+
35+
ret = js0n("baz",0,json,jlen,&len);
36+
fail_unless(strncmp("{\"a\":\"b\"}",ret,len) == 0);
37+
38+
ret = js0n("num",0,json,jlen,&len);
39+
fail_unless(strncmp("123.45",ret,len) == 0);
40+
41+
ret = js0n("bool",0,json,jlen,&len);
42+
fail_unless(strncmp("true",ret,len) == 0);
43+
44+
ret = js0n("bare",0,json,jlen,&len);
45+
fail_unless(strncmp("yep",ret,len) == 0);
46+
47+
ret = js0n("utf8",0,json,jlen,&len);
48+
fail_unless(strncmp("$¢€𤪤",ret,len) == 0);
49+
50+
ret = js0n("key",0,json,jlen,&len);
51+
fail_unless(strncmp("value\\n\\\"newline\\\"",ret,len) == 0);
52+
53+
ret = js0n("obj",0,json,jlen,&len);
54+
fail_unless(strncmp("{\"true\":true}",ret,len) == 0);
2655

27-
// printf("j0g_val 'key' val offset %d\n", j0g_val("key",(char*)json,res));
28-
// printf("j0g_str 'key' val '%s'\n", j0g_str("key",(char*)json,res));
29-
// printf("j0g_str 'num' val '%0.2f'\n", (j0g_str("num",(char*)json,res)!=NULL)?strtof(j0g_str("num",(char*)json,res), NULL):0);
30-
// printf("j0g_test obj->true %d\n", j0g_test("true",j0g(j0g_str("obj",(char*)json,res),res,16),res));
3156
return 0;
3257
}
3358

test/test.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{
22
"test":"value",
33
"foo":"b\"a and \\ r",
4-
"bar":[1,2,3],
4+
"array":[1,2,"three",4],
55
"baz":{"a":"b"},
66
"num":123.45,
7-
"utf8":"$¢€𤪤",
7+
"bool":true,
8+
"utf8":"$¢€𤪤",
9+
bare:"yep",
810
"key":"value\n\"newline\"",
911
"obj":{"true":true}
1012
}

0 commit comments

Comments
 (0)