diff options
author | Dr. David Alan Gilbert <dave@treblig.org> | 2017-03-05 01:25:18 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2017-03-11 15:48:42 +0000 |
commit | 799e1651b463bf127e6a99573e20331f6d7399b3 (patch) | |
tree | 647420d1bd668a4bb6aa57061057911a3520b26d /json-glib/tests | |
parent | c7b7b18e39522d8718e1d5118fe34d9b1c9707a0 (diff) | |
download | json-glib-799e1651b463bf127e6a99573e20331f6d7399b3.tar.gz |
Allow empty string as object member name
Commit 028e540 disallowed empty member names in objects, however
they are unfortunately valid JSON. This patch reenables an empty
string as a member name.
Tests are updated to allow the empty string case, and to test
the use of an empty string in generation, iteration etc.
https://bugzilla.gnome.org/show_bug.cgi?id=747279
Diffstat (limited to 'json-glib/tests')
-rw-r--r-- | json-glib/tests/builder.c | 5 | ||||
-rw-r--r-- | json-glib/tests/generator.c | 3 | ||||
-rw-r--r-- | json-glib/tests/invalid.c | 2 | ||||
-rw-r--r-- | json-glib/tests/object.c | 8 | ||||
-rw-r--r-- | json-glib/tests/parser.c | 3 |
5 files changed, 16 insertions, 5 deletions
diff --git a/json-glib/tests/builder.c b/json-glib/tests/builder.c index eaabb0d..b3e07d6 100644 --- a/json-glib/tests/builder.c +++ b/json-glib/tests/builder.c @@ -6,7 +6,7 @@ #include <json-glib/json-glib.h> -static const gchar *complex_object = "{\"depth1\":[1,{\"depth2\":[3,[null,false],\"after array\"],\"value2\":true}],\"object1\":{},\"value3\":null,\"value4\":42}"; +static const gchar *complex_object = "{\"depth1\":[1,{\"depth2\":[3,[null,false],\"after array\"],\"value2\":true}],\"object1\":{},\"value3\":null,\"value4\":42,\"\":54}"; static const gchar *empty_object = "{\"a\":{}}"; @@ -58,6 +58,9 @@ test_builder_complex (void) json_builder_set_member_name (builder, "value4"); json_builder_add_int_value (builder, 42); + json_builder_set_member_name (builder, ""); + json_builder_add_int_value (builder, 54); + json_builder_end_object (builder); node = json_builder_get_root (builder); diff --git a/json-glib/tests/generator.c b/json-glib/tests/generator.c index f156fde..79b6887 100644 --- a/json-glib/tests/generator.c +++ b/json-glib/tests/generator.c @@ -16,7 +16,7 @@ static const gchar *empty_object = "{}"; static const gchar *simple_array = "[true,false,null,42,\"foo\"]"; static const gchar *nested_array = "[true,[false,null],42]"; -static const gchar *simple_object = "{\"Bool1\":true,\"Bool2\":false,\"Null\":null,\"Int\":42,\"String\":\"foo\"}"; +static const gchar *simple_object = "{\"Bool1\":true,\"Bool2\":false,\"Null\":null,\"Int\":42,\"\":54,\"String\":\"foo\"}"; /* taken from the RFC 4627, Examples section */ static const gchar *nested_object = "{" @@ -209,6 +209,7 @@ test_simple_object (void) json_object_set_boolean_member (object, "Bool2", FALSE); json_object_set_null_member (object, "Null"); json_object_set_int_member (object, "Int", 42); + json_object_set_int_member (object, "", 54); json_object_set_string_member (object, "String", "foo"); json_node_take_object (root, object); diff --git a/json-glib/tests/invalid.c b/json-glib/tests/invalid.c index c5fad16..b782566 100644 --- a/json-glib/tests/invalid.c +++ b/json-glib/tests/invalid.c @@ -231,7 +231,7 @@ static const struct { "object-4", "{ \"foo\" : 42 ]", test_invalid_object }, { "object-5", "{ \"blah\" }", test_invalid_object }, { "object-6", "{ \"a\" : 0 \"b\" : 1 }", test_invalid_object }, - { "object-7", "{ \"\" : false }", test_invalid_object }, + { "object-7", "{ null: false }", test_invalid_object }, /* missing commas */ { "missing-comma-1", "[ true false ]", test_missing_comma }, diff --git a/json-glib/tests/object.c b/json-glib/tests/object.c index 54b5934..03a478c 100644 --- a/json-glib/tests/object.c +++ b/json-glib/tests/object.c @@ -64,6 +64,9 @@ test_set_member (void) json_object_set_object_member (object, "Object", NULL); g_assert (json_object_get_null_member (object, "Object") == TRUE); + json_object_set_object_member (object, "", NULL); + g_assert (json_object_get_null_member (object, "") == TRUE); + json_object_unref (object); } @@ -95,7 +98,8 @@ static const struct { { "boolean", JSON_NODE_VALUE, G_TYPE_BOOLEAN }, { "string", JSON_NODE_VALUE, G_TYPE_STRING }, { "double", JSON_NODE_VALUE, G_TYPE_DOUBLE }, - { "null", JSON_NODE_NULL, G_TYPE_INVALID } + { "null", JSON_NODE_NULL, G_TYPE_INVALID }, + { "", JSON_NODE_VALUE, G_TYPE_INT64 } }; static void @@ -131,6 +135,7 @@ test_foreach_member (void) json_object_set_string_member (object, "string", "hello"); json_object_set_double_member (object, "double", 3.14159); json_object_set_null_member (object, "null"); + json_object_set_int_member (object, "", 0); json_object_foreach_member (object, verify_foreach, &fixture); @@ -155,6 +160,7 @@ test_iter (void) json_object_set_string_member (object, "string", "hello"); json_object_set_double_member (object, "double", 3.14159); json_object_set_null_member (object, "null"); + json_object_set_int_member (object, "", 0); json_object_iter_init (&iter, object); diff --git a/json-glib/tests/parser.c b/json-glib/tests/parser.c index bdfbf13..f71584a 100644 --- a/json-glib/tests/parser.c +++ b/json-glib/tests/parser.c @@ -96,7 +96,8 @@ static const struct { { "{ \"name\" : \"\", \"state\" : 1 }", 2, "name", JSON_NODE_VALUE, G_TYPE_STRING }, { "{ \"foo\" : \"bar\", \"baz\" : null }", 2, "baz", JSON_NODE_NULL, G_TYPE_INVALID }, { "{ \"channel\" : \"/meta/connect\" }", 1, "channel", JSON_NODE_VALUE, G_TYPE_STRING }, - { "{ \"halign\":0.5, \"valign\":0.5 }", 2, "valign", JSON_NODE_VALUE, G_TYPE_DOUBLE } + { "{ \"halign\":0.5, \"valign\":0.5 }", 2, "valign", JSON_NODE_VALUE, G_TYPE_DOUBLE }, + { "{ \"\" : \"emptiness\" }", 1, "", JSON_NODE_VALUE, G_TYPE_STRING } }; static const gchar *test_nested_objects[] = { |