Skip to content

Instantly share code, notes, and snippets.

@stephenmathieson
Created November 21, 2014 18:48
Show Gist options
  • Save stephenmathieson/9d61e2ce08718e0cd785 to your computer and use it in GitHub Desktop.
Save stephenmathieson/9d61e2ce08718e0cd785 to your computer and use it in GitHub Desktop.
stephen@uklt:~/parson$ uname -a
Linux uklt 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 i686 i686 GNU/Linux
stephen@uklt:~/parson$ gcc --version
gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
stephen@uklt:~/parson$ make test
gcc -O0 -g -Wall -Wextra -std=c89 -pedantic-errors -o test tests.c parson.c
./test
(val = json_parse_file("tests/test_1_1.txt")) != NULL - OK
json_value_equals(json_parse_string(json_serialize_to_string(val)), val)- OK
(val = json_parse_file("tests/test_1_2.txt")) != NULL - OK
json_value_equals(json_parse_string(json_serialize_to_string(val)), val)- OK
(val = json_parse_file("tests/test_1_3.txt")) != NULL - OK
json_value_equals(json_parse_string(json_serialize_to_string(val)), val)- OK
(val = json_parse_file_with_comments("tests/test_1_1.txt")) != NULL - OK
json_value_equals(json_parse_string(json_serialize_to_string(val)), val)- OK
(val = json_parse_file_with_comments("tests/test_1_2.txt")) != NULL - OK
json_value_equals(json_parse_string(json_serialize_to_string(val)), val)- OK
(val = json_parse_file_with_comments("tests/test_1_3.txt")) != NULL - OK
json_value_equals(json_parse_string(json_serialize_to_string(val)), val)- OK
root_value - OK
json_value_get_type(root_value) == JSONObject - OK
STREQ(json_object_get_string(root_object, "string"), "lorem ipsum") - OK
STREQ(json_object_get_string(root_object, "utf string"), "lorem ipsum") - OK
STREQ(json_object_get_string(root_object, "utf-8 string"), "あいうえお")- OK
STREQ(json_object_get_string(root_object, "surrogate string"), "lorem𝄞ipsum𝍧lorem")- OK
json_object_get_number(root_object, "positive one") == 1.0 - OK
json_object_get_number(root_object, "negative one") == -1.0 - OK
json_object_get_number(root_object, "hard to parse number") == -0.000314- FAIL
json_object_get_boolean(root_object, "boolean true") == 1 - OK
json_object_get_boolean(root_object, "boolean false") == 0 - OK
json_value_get_type(json_object_get_value(root_object, "null")) == JSONNull- OK
STREQ(json_array_get_string(array, 0), "lorem") - OK
STREQ(json_array_get_string(array, 1), "ipsum") - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_object_get_array(root_object, "non existent array") == NULL - OK
STREQ(json_object_dotget_string(root_object, "object.nested string"), "str")- OK
json_object_dotget_boolean(root_object, "object.nested true") == 1 - OK
json_object_dotget_boolean(root_object, "object.nested false") == 0 - OK
json_object_dotget_value(root_object, "object.nested null") != NULL - OK
json_object_dotget_number(root_object, "object.nested number") == 123 - OK
json_object_dotget_value(root_object, "should.be.null") == NULL - OK
json_object_dotget_value(root_object, "should.be.null.") == NULL - OK
json_object_dotget_value(root_object, ".") == NULL - OK
json_object_dotget_value(root_object, "") == NULL - OK
array != NULL - OK
json_array_get_count(array) > 1 - OK
STREQ(json_array_get_string(array, 0), "lorem") - OK
STREQ(json_array_get_string(array, 1), "ipsum") - OK
json_object_dotget_boolean(root_object, "nested true") - OK
STREQ(json_object_get_string(root_object, "/**/"), "comment") - OK
STREQ(json_object_get_string(root_object, "//"), "comment") - OK
STREQ(json_object_get_string(root_object, "url"), "https://www.example.com/search?q=12345")- OK
STREQ(json_object_get_string(root_object, "escaped chars"), "\" \\ /") - OK
json_value_equals(root_value, json_parse_string(json_serialize_to_string(root_value)))- OK
root_value - OK
json_value_get_type(root_value) == JSONObject - OK
STREQ(json_object_get_string(root_object, "string"), "lorem ipsum") - OK
STREQ(json_object_get_string(root_object, "utf string"), "lorem ipsum") - OK
STREQ(json_object_get_string(root_object, "utf-8 string"), "あいうえお")- OK
STREQ(json_object_get_string(root_object, "surrogate string"), "lorem𝄞ipsum𝍧lorem")- OK
json_object_get_number(root_object, "positive one") == 1.0 - OK
json_object_get_number(root_object, "negative one") == -1.0 - OK
json_object_get_number(root_object, "hard to parse number") == -0.000314- FAIL
json_object_get_boolean(root_object, "boolean true") == 1 - OK
json_object_get_boolean(root_object, "boolean false") == 0 - OK
json_value_get_type(json_object_get_value(root_object, "null")) == JSONNull- OK
STREQ(json_array_get_string(array, 0), "lorem") - OK
STREQ(json_array_get_string(array, 1), "ipsum") - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_array_get_number(array, i) == (i * i) - OK
json_object_get_array(root_object, "non existent array") == NULL - OK
STREQ(json_object_dotget_string(root_object, "object.nested string"), "str")- OK
json_object_dotget_boolean(root_object, "object.nested true") == 1 - OK
json_object_dotget_boolean(root_object, "object.nested false") == 0 - OK
json_object_dotget_value(root_object, "object.nested null") != NULL - OK
json_object_dotget_number(root_object, "object.nested number") == 123 - OK
json_object_dotget_value(root_object, "should.be.null") == NULL - OK
json_object_dotget_value(root_object, "should.be.null.") == NULL - OK
json_object_dotget_value(root_object, ".") == NULL - OK
json_object_dotget_value(root_object, "") == NULL - OK
array != NULL - OK
json_array_get_count(array) > 1 - OK
STREQ(json_array_get_string(array, 0), "lorem") - OK
STREQ(json_array_get_string(array, 1), "ipsum") - OK
json_object_dotget_boolean(root_object, "nested true") - OK
STREQ(json_object_get_string(root_object, "/**/"), "comment") - OK
STREQ(json_object_get_string(root_object, "//"), "comment") - OK
STREQ(json_object_get_string(root_object, "url"), "https://www.example.com/search?q=12345")- OK
STREQ(json_object_get_string(root_object, "escaped chars"), "\" \\ /") - OK
json_value_equals(root_value, json_parse_string(json_serialize_to_string(root_value)))- OK
Testing invalid strings:
json_parse_string(NULL) == NULL - OK
json_parse_string("") == NULL - OK
json_parse_string("[\"lorem\",]") == NULL - OK
json_parse_string("{\"lorem\":\"ipsum\",}") == NULL - OK
json_parse_string("{lorem:ipsum}") == NULL - OK
json_parse_string("[,]") == NULL - OK
json_parse_string("[,") == NULL - OK
json_parse_string("[") == NULL - OK
json_parse_string("]") == NULL - OK
json_parse_string("{\"a\":0,\"a\":0}") == NULL - OK
json_parse_string("{:,}") == NULL - OK
json_parse_string("{,}") == NULL - OK
json_parse_string("{,") == NULL - OK
json_parse_string("{:") == NULL - OK
json_parse_string("{") == NULL - OK
json_parse_string("}") == NULL - OK
json_parse_string("x") == NULL - OK
json_parse_string("\"string\"") == NULL - OK
json_parse_string("{:\"no name\"}") == NULL - OK
json_parse_string("[,\"no first value\"]") == NULL - OK
json_parse_string("[\"\\u00zz\"]") == NULL - OK
json_parse_string("[\"\\u00\"]") == NULL - OK
json_parse_string("[\"\\u\"]") == NULL - OK
json_parse_string("[\"\\\"]") == NULL - OK
json_parse_string("[\"\"\"]") == NULL - OK
json_parse_string("[\"\0\"]") == NULL - OK
json_parse_string("[\"\a\"]") == NULL - OK
json_parse_string("[\"\b\"]") == NULL - OK
json_parse_string("[\"\t\"]") == NULL - OK
json_parse_string("[\"\n\"]") == NULL - OK
json_parse_string("[\"\f\"]") == NULL - OK
json_parse_string("[\"\r\"]") == NULL - OK
json_parse_string(nested_20x) == NULL - OK
json_parse_string("[0x2]") == NULL - OK
json_parse_string("[0X2]") == NULL - OK
json_parse_string("[07]") == NULL - OK
json_parse_string("[0070]") == NULL - OK
json_parse_string("[07.0]") == NULL - OK
json_parse_string("[-07]") == NULL - OK
json_parse_string("[-007]") == NULL - OK
json_parse_string("[-07.0]") == NULL - OK
json_parse_string("[\"\\uDF67\\uD834\"]") == NULL - OK
Testing tests/test_2.txt:
json_value_equals(a, a) - OK
a_copy != NULL - OK
json_value_equals(a, a_copy) - OK
json_object_set_string(obj, "first", "John") == JSONSuccess - OK
json_object_set_string(obj, "last", "Doe") == JSONSuccess - OK
json_object_set_number(obj, "age", 25) == JSONSuccess - OK
json_object_set_boolean(obj, "registered", 1) == JSONSuccess - OK
json_object_set_value(obj, "interests", json_value_init_array()) == JSONSuccess- OK
json_array_append_string(json_object_get_array(obj, "interests"), "Writing") == JSONSuccess- OK
json_array_append_string(json_object_get_array(obj, "interests"), "Mountain Biking") == JSONSuccess- OK
json_array_replace_string(json_object_get_array(obj, "interests"), 0, "Reading") == JSONSuccess- OK
json_object_dotset_string(obj, "favorites.color", "blue") == JSONSuccess- OK
json_object_dotset_string(obj, "favorites.sport", "running") == JSONSuccess- OK
json_object_dotset_string(obj, "favorites.fruit", "apple") == JSONSuccess- OK
json_object_dotremove(obj, "favorites.fruit") == JSONSuccess - OK
json_object_set_string(obj, "utf string", "\\u006corem\\u0020ipsum") == JSONSuccess- OK
json_object_set_string(obj, "utf-8 string", "あいうえお") == JSONSuccess- OK
json_object_set_string(obj, "surrogate string", "lorem\\uD834\\uDD1Eipsum\\uD834\\uDF67lorem") == JSONSuccess- OK
json_value_equals(val_from_file, val) - OK
json_value_equals(a, b) - OK
!json_value_equals(a, b) - OK
json_value_equals(a, b) - OK
!json_value_equals(a, b) - OK
json_validate(schema, val_from_file) == JSONSuccess - OK
json_validate(schema, val_from_file) == JSONFailure - OK
json_serialize_to_file(a, temp_filename) == JSONSuccess - OK
json_value_equals(a, b) - OK
Tests failed: 2
Tests passed: 169
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment