summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2012-06-30 14:39:13 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2012-06-30 14:39:13 +0100
commitb6aad8b53e9250c6b7e9c8c7302c5f8bde3a2c72 (patch)
tree9d7eace9058592f9e156092df18958d7a0e08d08
parent9fd65a138d6ec46b94eaf807f9c87ea5ada11cf0 (diff)
downloadjson-glib-b6aad8b53e9250c6b7e9c8c7302c5f8bde3a2c72.tar.gz
Improve test coverage
-rw-r--r--json-glib/json-node.c9
-rw-r--r--json-glib/tests/node.c18
-rw-r--r--json-glib/tests/object.c2
3 files changed, 24 insertions, 5 deletions
diff --git a/json-glib/json-node.c b/json-glib/json-node.c
index 02ff4f7..3d434f3 100644
--- a/json-glib/json-node.c
+++ b/json-glib/json-node.c
@@ -132,13 +132,11 @@ json_node_copy (JsonNode *node)
switch (copy->type)
{
case JSON_NODE_OBJECT:
- if (node->data.object)
- copy->data.object = json_object_ref (node->data.object);
+ copy->data.object = json_node_dup_object (node);
break;
case JSON_NODE_ARRAY:
- if (node->data.array)
- copy->data.array = json_array_ref (node->data.array);
+ copy->data.array = json_node_dup_array (node);
break;
case JSON_NODE_VALUE:
@@ -485,7 +483,8 @@ json_node_type_name (JsonNode *node)
return json_node_type_get_name (node->type);
case JSON_NODE_VALUE:
- return g_type_name (G_VALUE_TYPE (&(node->data.value)));
+ if (node->data.value)
+ return json_value_type_get_name (node->data.value->type);
}
return "unknown";
diff --git a/json-glib/tests/node.c b/json-glib/tests/node.c
index 13f16f0..a50d980 100644
--- a/json-glib/tests/node.c
+++ b/json-glib/tests/node.c
@@ -105,6 +105,7 @@ test_null (void)
JsonNode *node = json_node_new (JSON_NODE_NULL);
g_assert (JSON_NODE_HOLDS_NULL (node));
+ g_assert (json_node_is_null (node));
g_assert_cmpint (json_node_get_value_type (node), ==, G_TYPE_INVALID);
g_assert_cmpstr (json_node_type_name (node), ==, "NULL");
@@ -136,6 +137,23 @@ test_gvalue (void)
g_value_unset (&value);
g_value_unset (&check);
+
+ g_value_init (&value, G_TYPE_STRING);
+ g_value_set_string (&value, "Hello, World!");
+
+ g_assert_cmpint (G_VALUE_TYPE (&value), ==, G_TYPE_STRING);
+ g_assert_cmpstr (g_value_get_string (&value), ==, "Hello, World!");
+
+ json_node_set_value (node, &value);
+ json_node_get_value (node, &check);
+
+ g_assert_cmpint (G_VALUE_TYPE (&value), ==, G_VALUE_TYPE (&check));
+ g_assert_cmpstr (g_value_get_string (&value), ==, g_value_get_string (&check));
+ g_assert_cmpint (G_VALUE_TYPE (&check), ==, G_TYPE_STRING);
+ g_assert_cmpstr (g_value_get_string (&check), ==, "Hello, World!");
+
+ g_value_unset (&value);
+ g_value_unset (&check);
json_node_free (node);
}
diff --git a/json-glib/tests/object.c b/json-glib/tests/object.c
index 2f00078..513e6b8 100644
--- a/json-glib/tests/object.c
+++ b/json-glib/tests/object.c
@@ -88,6 +88,7 @@ static const struct {
{ "integer", JSON_NODE_VALUE, G_TYPE_INT64 },
{ "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 }
};
@@ -122,6 +123,7 @@ test_foreach_member (void)
json_object_set_int_member (object, "integer", 42);
json_object_set_boolean_member (object, "boolean", TRUE);
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_foreach_member (object, verify_foreach, &fixture);