[json-glib] Improve test coverage



commit b6aad8b53e9250c6b7e9c8c7302c5f8bde3a2c72
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Sat Jun 30 14:39:13 2012 +0100

    Improve test coverage

 json-glib/json-node.c    |    9 ++++-----
 json-glib/tests/node.c   |   18 ++++++++++++++++++
 json-glib/tests/object.c |    2 ++
 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);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]