diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-10-14 12:42:23 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-10-14 12:42:23 -0700 |
commit | c82cb9fc02c7f0727d8cb718949b09e3e31d1a8a (patch) | |
tree | c8864c05ecbf7ee4e6986da7d573c881ace27b4b /tests/runner.py | |
parent | 860cf619431ace201478625c1af8d411824caa6b (diff) | |
parent | 969004274e5569304e8c07e01d9db445aa0f02ae (diff) |
Merge pull request #636 from larsxschneider/json_parser
Add `library_jansson` for JSON parsing.
Diffstat (limited to 'tests/runner.py')
-rwxr-xr-x | tests/runner.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/runner.py b/tests/runner.py index 7a6cbc26..706d13fb 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -5256,6 +5256,59 @@ int main(int argc, char **argv) { self.do_run(src, '789:123.46\n0:100.1') + def test_jansson(self): + src = ''' + #include <jansson.h> + #include <stdio.h> + #include <string.h> + + int main() + { + const char* jsonString = "{\\"key\\": \\"value\\",\\"array\\": [\\"array_item1\\",\\"array_item2\\",\\"array_item3\\"],\\"dict\\":{\\"number\\": 3,\\"float\\": 2.2}}"; + + json_error_t error; + json_t *root = json_loadb(jsonString, strlen(jsonString), 0, &error); + + if(!root || !json_is_object(root)) + return 0; + printf("%s\\n", json_string_value(json_object_get(root, "key"))); + + json_t *array = json_object_get(root, "array"); + if(!array || !json_is_array(array)) + return 0; + for(size_t i=0; i<json_array_size(array); ++i) + { + json_t *arrayNode = json_array_get(array, i); + if(!root || !json_is_string(arrayNode)) + return 0; + printf("%s\\n", json_string_value(arrayNode)); + } + + json_t *dict = json_object_get(root, "dict"); + if(!dict || !json_is_object(dict)) + return 0; + + json_t *numberNode = json_object_get(dict, "number"); + json_t *floatNode = json_object_get(dict, "float"); + + if(!numberNode || !json_is_number(numberNode) || + !floatNode || !json_is_real(floatNode)) + return 0; + + printf("%i\\n", json_integer_value(numberNode)); + printf("%.2f\\n", json_number_value(numberNode)); + printf("%.2f\\n", json_real_value(floatNode)); + + json_decref(root); + + if(!json_is_object(root)) + printf("jansson!\\n"); + + return 0; + } + ''' + self.do_run(src, 'value\narray_item1\narray_item2\narray_item3\n3\n3.00\n2.20\njansson!') + ### 'Medium' tests def test_fannkuch(self): |