diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rw-r--r-- | tests/test-05.c | 217 |
3 files changed, 222 insertions, 1 deletions
@@ -43,6 +43,8 @@ tests/test-03 tests/test-03.o tests/test-04 tests/test-04.o +tests/test-05 +tests/test-05.o .*.swp doc/reference/.libs doc/reference/html-build.stamp diff --git a/tests/Makefile.am b/tests/Makefile.am index f087f73..f403f00 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -2,7 +2,8 @@ noinst_PROGRAMS = \ test-01 \ test-02 \ test-03 \ - test-04 + test-04 \ + test-05 INCLUDES = -I$(top_srcdir) LDADD = $(top_builddir)/json-glib/libjson-glib-1.0.la @@ -14,3 +15,4 @@ test_01_SOURCES = test-01.c test_02_SOURCES = test-02.c test_03_SOURCES = test-03.c test_04_SOURCES = test-04.c +test_05_SOURCES = test-05.c diff --git a/tests/test-05.c b/tests/test-05.c new file mode 100644 index 0000000..b3da801 --- /dev/null +++ b/tests/test-05.c @@ -0,0 +1,217 @@ +#include <stdlib.h> +#include <glib.h> +#include <json-glib/json-glib.h> + +static void +test_empty (JsonGenerator *generator) +{ + JsonNode *root; + gchar *data; + gsize len; + + root = json_node_new (JSON_NODE_OBJECT); + json_node_take_object (root, json_object_new ()); + + json_generator_set_root (generator, root); + + g_object_set (generator, "pretty", FALSE, NULL); + data = json_generator_to_data (generator, &len); + g_print ("*** Empty object (len:%d): `%s'\n", len, data); + + g_free (data); +} + +static void +test_simple (JsonGenerator *generator) +{ + JsonNode *root, *val; + JsonObject *object; + GValue value = { 0, }; + gchar *data; + gsize len; + + root = json_node_new (JSON_NODE_OBJECT); + object = json_object_new (); + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_BOOLEAN); + g_value_set_boolean (&value, TRUE); + json_node_set_value (val, &value); + json_object_add_member (object, "Bool1", val); + g_value_unset (&value); + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_BOOLEAN); + g_value_set_boolean (&value, FALSE); + json_node_set_value (val, &value); + json_object_add_member (object, "Bool2", val); + g_value_unset (&value); + + val = json_node_new (JSON_NODE_NULL); + json_object_add_member (object, "Null", val); + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 42); + json_node_set_value (val, &value); + json_object_add_member (object, "Int", val); + g_value_unset (&value); + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_STRING); + g_value_set_string (&value, "foo"); + json_node_set_value (val, &value); + json_object_add_member (object, "String", val); + g_value_unset (&value); + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_FLOAT); + g_value_set_float (&value, 3.14); + json_node_set_value (val, &value); + json_object_add_member (object, "Float", val); + g_value_unset (&value); + + json_node_take_object (root, object); + json_generator_set_root (generator, root); + + g_object_set (generator, "pretty", FALSE, NULL); + data = json_generator_to_data (generator, &len); + g_print ("*** Simple object (len:%d): `%s'\n", len, data); + g_free (data); + + g_object_set (generator, "pretty", TRUE, NULL); + data = json_generator_to_data (generator, &len); + g_print ("*** Simple object (pretty, len:%d):\n%s\n", len, data); + g_free (data); +} + +static void +test_nested (JsonGenerator *generator) +{ + JsonNode *root, *val, *nested_val; + JsonObject *object, *nested; + JsonArray *array; + GValue value = { 0, }; + gchar *data; + gsize len; + + root = json_node_new (JSON_NODE_OBJECT); + object = json_object_new (); + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_STRING); + g_value_set_string (&value, "View from 15th Floor"); + json_node_set_value (val, &value); + json_object_add_member (object, "Title", val); + g_value_unset (&value); + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 800); + json_node_set_value (val, &value); + json_object_add_member (object, "Width", val); + g_value_unset (&value); + + val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 600); + json_node_set_value (val, &value); + json_object_add_member (object, "Height", val); + g_value_unset (&value); + + { + val = json_node_new (JSON_NODE_ARRAY); + array = json_array_new (); + + nested_val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 116); + json_node_set_value (nested_val, &value); + json_array_add_element (array, nested_val); + g_value_unset (&value); + + nested_val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 943); + json_node_set_value (nested_val, &value); + json_array_add_element (array, nested_val); + g_value_unset (&value); + + nested_val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 234); + json_node_set_value (nested_val, &value); + json_array_add_element (array, nested_val); + g_value_unset (&value); + + nested_val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 38793); + json_node_set_value (nested_val, &value); + json_array_add_element (array, nested_val); + g_value_unset (&value); + + json_node_take_array (val, array); + json_object_add_member (object, "IDs", val); + } + + { + val = json_node_new (JSON_NODE_OBJECT); + nested = json_object_new (); + + nested_val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_STRING); + g_value_set_string (&value, "http://www.example.com/image/481989943"); + json_node_set_value (nested_val, &value); + json_object_add_member (nested, "Url", nested_val); + g_value_unset (&value); + + nested_val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 125); + json_node_set_value (nested_val, &value); + json_object_add_member (nested, "Width", nested_val); + g_value_unset (&value); + + nested_val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 100); + json_node_set_value (nested_val, &value); + json_object_add_member (nested, "Height", nested_val); + g_value_unset (&value); + + json_node_take_object (val, nested); + json_object_add_member (object, "Thumbnail", val); + } + + json_node_take_object (root, object); + json_generator_set_root (generator, root); + + g_object_set (generator, "pretty", FALSE, NULL); + data = json_generator_to_data (generator, &len); + g_print ("*** Nested object (len:%d): `%s'\n", len, data); + g_free (data); + + g_object_set (generator, "pretty", TRUE, NULL); + data = json_generator_to_data (generator, &len); + g_print ("*** Nested object (pretty, len:%d):\n%s\n", len, data); + g_free (data); +} + +int +main (int argc, char *argv[]) +{ + JsonGenerator *generator; + + g_type_init (); + + generator = json_generator_new (); + + test_empty (generator); + test_simple (generator); + test_nested (generator); + + g_object_unref (generator); + + return EXIT_SUCCESS; +} |