summaryrefslogtreecommitdiff
path: root/json-glib/tests
diff options
context:
space:
mode:
authorDr. David Alan Gilbert <dave@treblig.org>2017-03-05 01:25:18 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2017-03-11 15:48:42 +0000
commit799e1651b463bf127e6a99573e20331f6d7399b3 (patch)
tree647420d1bd668a4bb6aa57061057911a3520b26d /json-glib/tests
parentc7b7b18e39522d8718e1d5118fe34d9b1c9707a0 (diff)
downloadjson-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.c5
-rw-r--r--json-glib/tests/generator.c3
-rw-r--r--json-glib/tests/invalid.c2
-rw-r--r--json-glib/tests/object.c8
-rw-r--r--json-glib/tests/parser.c3
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[] = {