summaryrefslogtreecommitdiff
path: root/json-glib/tests/node.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2012-06-30 13:45:53 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2012-06-30 13:45:53 +0100
commitc135d9ea1b143382fe1372be547cf5ea76444445 (patch)
tree40849b856ff3b17ef61fdfd506fd600dc713ff75 /json-glib/tests/node.c
parentc836800166f2b40e605bb497d7d6e884ae85254c (diff)
downloadjson-glib-c135d9ea1b143382fe1372be547cf5ea76444445.tar.gz
tests: Add more coverage to JsonNode
Diffstat (limited to 'json-glib/tests/node.c')
-rw-r--r--json-glib/tests/node.c113
1 files changed, 107 insertions, 6 deletions
diff --git a/json-glib/tests/node.c b/json-glib/tests/node.c
index 0c2fd9b..13f16f0 100644
--- a/json-glib/tests/node.c
+++ b/json-glib/tests/node.c
@@ -3,6 +3,50 @@
#include <string.h>
static void
+test_init_int (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_int (node, 42);
+ g_assert_cmpint (json_node_get_int (node), ==, 42);
+
+ json_node_free (node);
+}
+
+static void
+test_init_double (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_double (node, 3.14159);
+ g_assert_cmpfloat (json_node_get_double (node), ==, 3.14159);
+
+ json_node_free (node);
+}
+
+static void
+test_init_boolean (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_boolean (node, TRUE);
+ g_assert (json_node_get_boolean (node));
+
+ json_node_free (node);
+}
+
+static void
+test_init_string (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+
+ json_node_set_string (node, "Hello, World");
+ g_assert_cmpstr (json_node_get_string (node), ==, "Hello, World");
+
+ json_node_free (node);
+}
+
+static void
test_copy_null (void)
{
JsonNode *node = json_node_new (JSON_NODE_NULL);
@@ -68,7 +112,7 @@ test_null (void)
}
static void
-test_value (void)
+test_gvalue (void)
{
JsonNode *node = json_node_new (JSON_NODE_VALUE);
GValue value = { 0, };
@@ -95,6 +139,58 @@ test_value (void)
json_node_free (node);
}
+static void
+test_gvalue_autopromotion (void)
+{
+ JsonNode *node = json_node_new (JSON_NODE_VALUE);
+ GValue value = { 0, };
+ GValue check = { 0, };
+
+ g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_VALUE);
+
+ if (g_test_verbose ())
+ g_print ("Autopromotion of int to int64\n");
+
+ g_value_init (&value, G_TYPE_INT);
+ g_value_set_int (&value, 42);
+
+ json_node_set_value (node, &value);
+ json_node_get_value (node, &check);
+
+ if (g_test_verbose ())
+ g_print ("Expecting an gint64, got a %s\n", g_type_name (G_VALUE_TYPE (&check)));
+
+ g_assert_cmpint (G_VALUE_TYPE (&check), ==, G_TYPE_INT64);
+ g_assert_cmpint (g_value_get_int64 (&check), ==, 42);
+ g_assert_cmpint (G_VALUE_TYPE (&value), !=, G_VALUE_TYPE (&check));
+ g_assert_cmpint ((gint64) g_value_get_int (&value), ==, g_value_get_int64 (&check));
+
+ g_value_unset (&value);
+ g_value_unset (&check);
+
+ if (g_test_verbose ())
+ g_print ("Autopromotion of float to double\n");
+
+ g_value_init (&value, G_TYPE_FLOAT);
+ g_value_set_float (&value, 3.14159f);
+
+ json_node_set_value (node, &value);
+ json_node_get_value (node, &check);
+
+ if (g_test_verbose ())
+ g_print ("Expecting a gdouble, got a %s\n", g_type_name (G_VALUE_TYPE (&check)));
+
+ g_assert_cmpint (G_VALUE_TYPE (&check), ==, G_TYPE_DOUBLE);
+ g_assert_cmpfloat ((float) g_value_get_double (&check), ==, 3.14159f);
+ g_assert_cmpint (G_VALUE_TYPE (&value), !=, G_VALUE_TYPE (&check));
+ g_assert_cmpfloat ((gdouble) g_value_get_float (&value), ==, g_value_get_double (&check));
+
+ g_value_unset (&value);
+ g_value_unset (&check);
+
+ json_node_free (node);
+}
+
int
main (int argc,
char *argv[])
@@ -102,11 +198,16 @@ main (int argc,
g_type_init ();
g_test_init (&argc, &argv, NULL);
- g_test_add_func ("/nodes/null-node", test_null);
- g_test_add_func ("/nodes/copy-null", test_copy_null);
- g_test_add_func ("/nodes/copy-value", test_copy_value);
- g_test_add_func ("/nodes/copy-object", test_copy_object);
- g_test_add_func ("/nodes/value", test_value);
+ g_test_add_func ("/nodes/init/int", test_init_int);
+ g_test_add_func ("/nodes/init/double", test_init_double);
+ g_test_add_func ("/nodes/init/boolean", test_init_boolean);
+ g_test_add_func ("/nodes/init/string", test_init_string);
+ g_test_add_func ("/nodes/init/null", test_null);
+ g_test_add_func ("/nodes/copy/null", test_copy_null);
+ g_test_add_func ("/nodes/copy/value", test_copy_value);
+ g_test_add_func ("/nodes/copy/object", test_copy_object);
+ g_test_add_func ("/nodes/gvalue", test_gvalue);
+ g_test_add_func ("/nodes/gvalue/autopromotion", test_gvalue_autopromotion);
return g_test_run ();
}