diff options
author | Emmanuele Bassi <ebassi@openedhand.com> | 2008-04-03 16:32:53 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@openedhand.com> | 2008-04-03 16:32:53 +0100 |
commit | 4e826d9f209a8f68023bae54c91b2bbbb202a54a (patch) | |
tree | cf321bdd6a642cc9c542a95fc9cfc5cee4cb16c9 | |
parent | 98b6e5e2f151c4ee800754675bf01e585fee850b (diff) | |
parent | 2a579b51f38df1c009201703279a3e6cb4f57eea (diff) | |
download | json-glib-4e826d9f209a8f68023bae54c91b2bbbb202a54a.tar.gz |
Merge branch 'test-framework'
-rw-r--r-- | .gitignore | 35 | ||||
-rw-r--r-- | Makefile.am | 6 | ||||
-rw-r--r-- | Makefile.decl | 61 | ||||
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | contrib/Makefile.am | 4 | ||||
-rw-r--r-- | doc/Makefile.am | 2 | ||||
-rw-r--r-- | doc/reference/Makefile.am | 1 | ||||
-rw-r--r-- | json-glib/Makefile.am | 9 | ||||
-rw-r--r-- | json-glib/tests/Makefile.am | 24 | ||||
-rw-r--r-- | json-glib/tests/array-test.c | 62 | ||||
-rw-r--r-- | json-glib/tests/node-test.c | 71 | ||||
-rw-r--r-- | json-glib/tests/object-test.c | 62 | ||||
-rw-r--r-- | tests/Makefile.am | 61 | ||||
-rw-r--r-- | tests/test-01.c | 31 | ||||
-rw-r--r-- | tests/test-02.c | 225 | ||||
-rw-r--r-- | tests/test-03.c | 214 | ||||
-rw-r--r-- | tests/test-04.c | 238 | ||||
-rw-r--r-- | tests/test-05.c | 227 | ||||
-rw-r--r-- | tests/test-generator.c | 399 | ||||
-rw-r--r-- | tests/test-parser.c | 456 | ||||
-rw-r--r-- | tests/test-serialize-complex.c (renamed from tests/test-07.c) | 29 | ||||
-rw-r--r-- | tests/test-serialize-full.c (renamed from tests/test-08.c) | 56 | ||||
-rw-r--r-- | tests/test-serialize-simple.c (renamed from tests/test-06.c) | 29 |
23 files changed, 1284 insertions, 1021 deletions
@@ -30,28 +30,31 @@ json-glib/json-parser.lo json-glib/json-version.h json-glib/libjson-glib-1.0.la json-glib/stamp-json-marshal.h +json-glib/tests/.deps +json-glib/tests/.libs +json-glib/tests/array-test +json-glib/tests/array-test.o +json-glib/tests/object-test +json-glib/tests/object-test.o +json-glib/tests/node-test +json-glib/tests/node-test.o libtool ltmain.sh missing stamp-h1 +test-report.xml tests/.deps tests/.libs -tests/test-01 -tests/test-01.o -tests/test-02 -tests/test-02.o -tests/test-03 -tests/test-03.o -tests/test-04 -tests/test-04.o -tests/test-05 -tests/test-05.o -tests/test-06 -tests/test-06.o -tests/test-07 -tests/test-07.o -tests/test-08 -tests/test-08.o +tests/test-parser +tests/test-parser.o +tests/test-generator +tests/test-generator.o +tests/test-serialize-simple +tests/test-serialize-simple.o +tests/test-serialize-complex +tests/test-serialize-complex.o +tests/test-serialize-full +tests/test-serialize-full.o .*.swp doc/reference/.libs doc/reference/html-build.stamp diff --git a/Makefile.am b/Makefile.am index bea79c6..c71d12f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,3 +1,5 @@ +include $(top_srcdir)/Makefile.decl + SUBDIRS = json-glib doc tests if HAVE_VALA @@ -14,9 +16,9 @@ json-glib-1.0.pc: json-glib.pc pkgconfig_DATA = $(pcfiles) pkgconfigdir = $(libdir)/pkgconfig -EXTRA_DIST = json-glib.pc.in +EXTRA_DIST += json-glib.pc.in -CLEANFILES = $(pcfiles) +CLEANFILES = $(pcfiles) test-report.xml DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-maintainer-flags diff --git a/Makefile.decl b/Makefile.decl new file mode 100644 index 0000000..a01d1b0 --- /dev/null +++ b/Makefile.decl @@ -0,0 +1,61 @@ +# JSON-GLib - JSON reader and writer library + +GTESTER = gtester +GTESTER_REPORT = gtester-report + +# initialize variables for unconditional += appending +EXTRA_DIST = +TEST_PROGS = + +### testing rules + +# test: run all tests in cwd and subdirs +test: ${TEST_PROGS} + @test -z "${TEST_PROGS}" || ${GTESTER} --verbose ${TEST_PROGS} + @ for subdir in $(SUBDIRS) . ; do \ + test "$$subdir" = "." -o "$$subdir" = "po" || \ + ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ + done +# test-report: run tests in subdirs and generate report +# perf-report: run tests in subdirs with -m perf and generate report +# full-report: like test-report: with -m perf and -m slow +test-report perf-report full-report: ${TEST_PROGS} + @test -z "${TEST_PROGS}" || { \ + case $@ in \ + test-report) test_options="-k";; \ + perf-report) test_options="-k -m=perf";; \ + full-report) test_options="-k -m=perf -m=slow";; \ + esac ; \ + if test -z "$$GTESTER_LOGDIR" ; then \ + ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \ + elif test -n "${TEST_PROGS}" ; then \ + ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \ + fi ; \ + } + @ ignore_logdir=true ; \ + if test -z "$$GTESTER_LOGDIR" ; then \ + GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \ + ignore_logdir=false ; \ + fi ; \ + for subdir in $(SUBDIRS) . ; do \ + test "$$subdir" = "." -o "$$subdir" = "po" || \ + ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \ + done ; \ + $$ignore_logdir || { \ + echo '<?xml version="1.0"?>' > $@.xml ; \ + echo '<report-collection>' >> $@.xml ; \ + echo '<info>' >> $@.xml ; \ + echo ' <package>$(PACKAGE)</package>' >> $@.xml ; \ + echo ' <version>$(VERSION)</version>' >> $@.xml ; \ + echo '</info>' >> $@.xml ; \ + for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \ + sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \ + done ; \ + echo >> $@.xml ; \ + echo '</report-collection>' >> $@.xml ; \ + rm -rf "$$GTESTER_LOGDIR"/ ; \ + ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \ + } +.PHONY: test test-report perf-report full-report +# run make test as part of make check +check-local: test diff --git a/configure.ac b/configure.ac index a5eb9f5..5a9960a 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ m4_define([lt_revision], [json_interface_age]) m4_define([lt_age], [m4_eval(json_binary_age - json_interface_age)]) -m4_define([glib_req_version], [2.12]) +m4_define([glib_req_version], [2.15]) AC_PREREQ(2.59) AC_INIT([json-glib], [json_version], [], [json-glib]) @@ -113,6 +113,7 @@ AC_CONFIG_FILES([ Makefile json-glib/Makefile json-glib/json-version.h + json-glib/tests/Makefile tests/Makefile doc/Makefile doc/reference/Makefile diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 33325ba..8b1c468 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -1,4 +1,6 @@ +include $(top_srcdir)/Makefile.decl + vapidir = @VAPI_DIR@ vapi_DATA = json-glib-1.0.vapi -EXTRA_DIST = json-test.vala +EXTRA_DIST += json-test.vala diff --git a/doc/Makefile.am b/doc/Makefile.am index f3ddc22..3fe3167 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1 +1,3 @@ +include $(top_srcdir)/Makefile.decl + SUBDIRS = reference diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am index 46afe38..9d22407 100644 --- a/doc/reference/Makefile.am +++ b/doc/reference/Makefile.am @@ -1,4 +1,5 @@ ## Process this file with automake to produce Makefile.in +include $(top_srcdir)/Makefile.decl # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 diff --git a/json-glib/Makefile.am b/json-glib/Makefile.am index 3c2f403..0d3055a 100644 --- a/json-glib/Makefile.am +++ b/json-glib/Makefile.am @@ -1,3 +1,9 @@ +include $(top_srcdir)/Makefile.decl + +SUBDIRS = . tests + +DIST_SUBDIRS = tests + NULL = INCLUDES = \ @@ -75,5 +81,6 @@ CLEANFILES = $(STAMP_FILES) $(BUILT_SOURCES) DISTCLEANFILES = json-version.h -EXTRA_DIST = json-version.h.in json-glib.h json-marshal.list +EXTRA_DIST += json-version.h.in json-glib.h json-marshal.list +TESTS_ENVIRONMENT = srcdir="$(srcdir)" json_all_c_sources="$(source_c)" diff --git a/json-glib/tests/Makefile.am b/json-glib/tests/Makefile.am new file mode 100644 index 0000000..31e46d4 --- /dev/null +++ b/json-glib/tests/Makefile.am @@ -0,0 +1,24 @@ +include $(top_srcdir)/Makefile.decl + +INCLUDES = \ + -g \ + -I$(top_srcdir) \ + -I$(top_srcdir)/json-glib \ + $(JSON_DEBUG_CFLAGS) \ + $(JSON_CFLAGS) + +noinst_PROGRAMS = $(TEST_PROGS) +progs_ldadd = $(top_builddir)/json-glib/libjson-glib-1.0.la + +TEST_PROGS += array-test +array_test_SOURCES = array-test.c +array_test_LDADD = $(progs_ldadd) + +TEST_PROGS += object-test +object_test_SOURCES = object-test.c +object_test_LDADD = $(progs_ldadd) + +TEST_PROGS += node-test +node_test_SOURCES = node-test.c +node_test_LDADD = $(progs_ldadd) + diff --git a/json-glib/tests/array-test.c b/json-glib/tests/array-test.c new file mode 100644 index 0000000..f091ecd --- /dev/null +++ b/json-glib/tests/array-test.c @@ -0,0 +1,62 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <glib.h> +#include <json-glib/json-types.h> + +static void +test_empty_array (void) +{ + JsonArray *array = json_array_new (); + + g_assert_cmpint (json_array_get_length (array), ==, 0); + g_assert (json_array_get_elements (array) == NULL); + + json_array_unref (array); +} + +static void +test_add_element (void) +{ + JsonArray *array = json_array_new (); + JsonNode *node = json_node_new (JSON_NODE_NULL); + + g_assert_cmpint (json_array_get_length (array), ==, 0); + + json_array_add_element (array, node); + g_assert_cmpint (json_array_get_length (array), ==, 1); + + node = json_array_get_element (array, 0); + g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_NULL); + + json_array_unref (array); +} + +static void +test_remove_element (void) +{ + JsonArray *array = json_array_new (); + JsonNode *node = json_node_new (JSON_NODE_NULL); + + json_array_add_element (array, node); + + json_array_remove_element (array, 0); + g_assert_cmpint (json_array_get_length (array), ==, 0); + + json_array_unref (array); +} + +int +main (int argc, + char *argv[]) +{ + g_type_init (); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/array/empty-array", test_empty_array); + g_test_add_func ("/array/add-element", test_add_element); + g_test_add_func ("/array/remove-element", test_remove_element); + + return g_test_run (); +} diff --git a/json-glib/tests/node-test.c b/json-glib/tests/node-test.c new file mode 100644 index 0000000..70025cd --- /dev/null +++ b/json-glib/tests/node-test.c @@ -0,0 +1,71 @@ +#include <glib/gtestutils.h> +#include <json-glib/json-types.h> +#include <string.h> + +static void +test_copy (void) +{ + JsonNode *node = json_node_new (JSON_NODE_NULL); + JsonNode *copy = json_node_copy (node); + + g_assert_cmpint (node->type, ==, copy->type); + g_assert_cmpint (json_node_get_value_type (node), ==, json_node_get_value_type (copy)); + g_assert_cmpstr (json_node_type_name (node), ==, json_node_type_name (copy)); + + json_node_free (copy); + json_node_free (node); +} + +static void +test_null (void) +{ + JsonNode *node = json_node_new (JSON_NODE_NULL); + + g_assert_cmpint (node->type, ==, JSON_NODE_NULL); + g_assert_cmpint (json_node_get_value_type (node), ==, G_TYPE_INVALID); + g_assert_cmpstr (json_node_type_name (node), ==, "NULL"); + + json_node_free (node); +} + +static void +test_value (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); + + g_value_init (&value, G_TYPE_INT); + g_value_set_int (&value, 42); + + g_assert_cmpint (G_VALUE_TYPE (&value), ==, G_TYPE_INT); + g_assert_cmpint (g_value_get_int (&value), ==, 42); + + 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_cmpint (g_value_get_int (&value), ==, g_value_get_int (&check)); + g_assert_cmpint (G_VALUE_TYPE (&check), ==, G_TYPE_INT); + g_assert_cmpint (g_value_get_int (&check), ==, 42); + + g_value_unset (&value); + g_value_unset (&check); + json_node_free (node); +} + +int +main (int argc, + char *argv[]) +{ + g_type_init (); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/nodes/null-node", test_null); + g_test_add_func ("/nodes/copy-node", test_copy); + g_test_add_func ("/nodes/value", test_value); + + return g_test_run (); +} diff --git a/json-glib/tests/object-test.c b/json-glib/tests/object-test.c new file mode 100644 index 0000000..34d6539 --- /dev/null +++ b/json-glib/tests/object-test.c @@ -0,0 +1,62 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <glib.h> +#include <json-glib/json-types.h> + +static void +test_empty_object (void) +{ + JsonObject *object = json_object_new (); + + g_assert_cmpint (json_object_get_size (object), ==, 0); + g_assert (json_object_get_members (object) == NULL); + + json_object_unref (object); +} + +static void +test_add_member (void) +{ + JsonObject *object = json_object_new (); + JsonNode *node = json_node_new (JSON_NODE_NULL); + + g_assert_cmpint (json_object_get_size (object), ==, 0); + + json_object_add_member (object, "Null", node); + g_assert_cmpint (json_object_get_size (object), ==, 1); + + node = json_object_get_member (object, "Null"); + g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_NULL); + + json_object_unref (object); +} + +static void +test_remove_member (void) +{ + JsonObject *object = json_object_new (); + JsonNode *node = json_node_new (JSON_NODE_NULL); + + json_object_add_member (object, "Null", node); + + json_object_remove_member (object, "Null"); + g_assert_cmpint (json_object_get_size (object), ==, 0); + + json_object_unref (object); +} + +int +main (int argc, + char *argv[]) +{ + g_type_init (); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/object/empty-object", test_empty_object); + g_test_add_func ("/object/add-member", test_add_member); + g_test_add_func ("/object/remove-member", test_remove_member); + + return g_test_run (); +} diff --git a/tests/Makefile.am b/tests/Makefile.am index 2310eaa..2ffac99 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,24 +1,37 @@ -noinst_PROGRAMS = \ - test-01 \ - test-02 \ - test-03 \ - test-04 \ - test-05 \ - test-06 \ - test-07 \ - test-08 - -INCLUDES = -I$(top_srcdir) -LDADD = $(top_builddir)/json-glib/libjson-glib-1.0.la - -AM_CFLAGS = $(JSON_CFLAGS) -AM_LDFLAGS = $(JSON_LIBS) - -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 -test_06_SOURCES = test-06.c -test_07_SOURCES = test-07.c -test_08_SOURCES = test-08.c +include $(top_srcdir)/Makefile.decl + +NULL = + +noinst_PROGRAMS = $(TEST_PROGS) + +INCLUDES = -I$(top_srcdir) $(JSON_CFLAGS) +progs_ldadd = $(top_builddir)/json-glib/libjson-glib-1.0.la $(JSON_LIBS) + +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/json-glib \ + $(JSON_DEBUG_CFLAGS) + +AM_CFLAGS = -g + +TESTS_ENVIRONMENT = srcdir=$(srcdir) + +TEST_PROGS += test-parser +test_parser_SOURCES = test-parser.c +test_parser_LDADD = $(progs_ldadd) + +TEST_PROGS += test-generator +test_generator_SOURCES = test-generator.c +test_generator_LDADD = $(progs_ldadd) + +TEST_PROGS += test-serialize-simple +test_serialize_simple_SOURCES = test-serialize-simple.c +test_serialize_simple_LDADD = $(progs_ldadd) + +TEST_PROGS += test-serialize-complex +test_serialize_complex_SOURCES = test-serialize-complex.c +test_serialize_complex_LDADD = $(progs_ldadd) + +TEST_PROGS += test-serialize-full +test_serialize_full_SOURCES = test-serialize-full.c +test_serialize_full_LDADD = $(progs_ldadd) diff --git a/tests/test-01.c b/tests/test-01.c deleted file mode 100644 index 543803e..0000000 --- a/tests/test-01.c +++ /dev/null @@ -1,31 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> - -#include <json-glib/json-glib.h> - -static const gchar *test_empty = ""; - -int -main (int argc, char *argv[]) -{ - JsonParser *parser; - GError *error = NULL; - - g_type_init (); - - parser = json_parser_new (); - if (!json_parser_load_from_data (parser, test_empty, -1, &error)) - { - g_print ("Error: %s\n", error->message); - g_error_free (error); - g_object_unref (parser); - - return EXIT_FAILURE; - } - - g_assert (NULL == json_parser_get_root (parser)); - - g_object_unref (parser); - - return EXIT_SUCCESS; -} diff --git a/tests/test-02.c b/tests/test-02.c deleted file mode 100644 index 46938ef..0000000 --- a/tests/test-02.c +++ /dev/null @@ -1,225 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> - -#include <json-glib/json-glib.h> - -static const gchar *test_arrays[] = { - "[ ]", - "[ true ]", - "[ true, false, null ]", - "[ 1, 2, 3.14, \"test\" ]", - "[ 42, [ ], null ]", - "[ [ ], [ true, [ true ] ] ]", - "[ [ false, true, 42 ], [ true, false, 3.14 ], \"test\" ]", - "[ true, { } ]", - "[ false, { \"test\" : 42 } ]", - "var test = [ false, false, true ]", - "var test = [ true, 42 ];", -}; - -static guint n_test_arrays = G_N_ELEMENTS (test_arrays); - -static void print_array (gint indent, JsonArray *array); -static void print_value (gint indent, JsonNode *node); -static void print_object (gint indent, JsonObject *object); - -static void -print_value (gint indent, - JsonNode *node) -{ - gint j; - gchar indent_str[80]; - GValue value = { 0, }; - - for (j = 0; j < indent; j++) - indent_str[j] = ' '; - - indent_str[j] = '\0'; - - json_node_get_value (node, &value); - - switch (G_VALUE_TYPE (&value)) - { - case G_TYPE_INT: - g_print ("%sFound integer: `%d'\n", - indent_str, - g_value_get_int (&value)); - break; - - case G_TYPE_STRING: - g_print ("%sFound string: `%s'\n", - indent_str, - g_value_get_string (&value)); - break; - - case G_TYPE_DOUBLE: - g_print ("%sFound float: `%f'\n", - indent_str, - g_value_get_double (&value)); - break; - - case G_TYPE_BOOLEAN: - g_print ("%sFound boolean: `%s'\n", - indent_str, - g_value_get_boolean (&value) ? "true" : "false"); - break; - - default: - g_print ("%sUnknown value\n", indent_str); - break; - } - - g_value_unset (&value); -} - -static void -print_array (gint indent, - JsonArray *array) -{ - gint array_len = json_array_get_length (array); - gint j; - gchar indent_str[80]; - - for (j = 0; j < indent; j++) - indent_str[j] = ' '; - - indent_str[j] = '\0'; - - if (array_len == 0) - { - g_print ("%sFound empty array\n", indent_str); - return; - } - - for (j = 0; j < array_len; j++) - { - JsonNode *node = json_array_get_element (array, j); - - switch (JSON_NODE_TYPE (node)) - { - case JSON_NODE_ARRAY: - g_print ("%sFound array (index: %d, len: %d)\n", - indent_str, - j, - json_array_get_length (json_node_get_array (node))); - print_array (indent + 1, json_node_get_array (node)); - break; - case JSON_NODE_OBJECT: - g_print ("%sFound object (index: %d, size: %d)\n", - indent_str, - j, - json_object_get_size (json_node_get_object (node))); - print_object (indent + 1, json_node_get_object (node)); - break; - case JSON_NODE_VALUE: - g_print ("%sFound value (index: %d)\n", indent_str, j); - print_value (indent + 1, node); - break; - case JSON_NODE_NULL: - g_print ("%sFound null (index: %d)\n", indent_str, j); - break; - } - } -} - -static void -print_object (gint indent, - JsonObject *object) -{ - gint object_size = json_object_get_size (object); - gint j; - gchar indent_str[80]; - GList *members, *l; - - for (j = 0; j < indent; j++) - indent_str[j] = ' '; - - indent_str[j] = '\0'; - - if (object_size == 0) - { - g_print ("%sFound empty object\n", indent_str); - return; - } - - members = json_object_get_members (object); - for (l = members; l; l = l->next) - { - const gchar *name = l->data; - JsonNode *node = json_object_get_member (object, name); - - switch (JSON_NODE_TYPE (node)) - { - case JSON_NODE_ARRAY: - g_print ("%sFound array (member: `%s', len: %d)\n", - indent_str, - name, - json_array_get_length (json_node_get_array (node))); - print_array (indent + 1, json_node_get_array (node)); - break; - case JSON_NODE_OBJECT: - g_print ("%sFound object (member: `%s', size: %d)\n", - indent_str, - name, - json_object_get_size (json_node_get_object (node))); - print_object (indent + 1, json_node_get_object (node)); - break; - case JSON_NODE_VALUE: - g_print ("%sFound value (member: `%s')\n", indent_str, name); - print_value (indent + 1, node); - break; - case JSON_NODE_NULL: - g_print ("%sFound null (member: `%s')\n", indent_str, name); - break; - } - } - - g_list_free (members); -} - -int -main (int argc, char *argv[]) -{ - JsonParser *parser; - gint i; - - g_type_init (); - - parser = json_parser_new (); - - for (i = 0; i < n_test_arrays; i++) - { - GError *error = NULL; - JsonNode *node; - JsonArray *array; - gchar *var_name; - - if (!json_parser_load_from_data (parser, test_arrays[i], -1, &error)) - { - g_print ("* Error, test %d:\n" - "* \t%s:\n" - "* Message: %s\n", - i, test_arrays[i], error->message); - g_error_free (error); - g_object_unref (parser); - return EXIT_FAILURE; - } - - node = json_parser_get_root (parser); - g_assert (node != NULL); - g_assert (JSON_NODE_TYPE (node) == JSON_NODE_ARRAY); - - array = json_node_get_array (node); - g_assert (array != NULL); - - g_print ("*** Test %d: '%s' ***\n", i, test_arrays[i]); - if (json_parser_has_assignment (parser, &var_name)) - g_print ("*** Test %d: assigns '%s'\n", i, var_name); - - print_array (1, array); - } - - g_object_unref (parser); - - return EXIT_SUCCESS; -} diff --git a/tests/test-03.c b/tests/test-03.c deleted file mode 100644 index 6dfe4f8..0000000 --- a/tests/test-03.c +++ /dev/null @@ -1,214 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> - -#include <json-glib/json-glib.h> - -static const gchar *test_objects[] = { - "{ }", - "{ \"test\" : 42 }", - "{ \"foo\" : \"bar\", \"baz\" : null }", - "{ \"array\" : [ false, \"foo\" ], \"object\" : { \"foo\" : true } }" -}; - -static guint n_test_objects = G_N_ELEMENTS (test_objects); - -static void print_array (gint indent, JsonArray *array); -static void print_value (gint indent, JsonNode *node); -static void print_object (gint indent, JsonObject *object); - -static void -print_value (gint indent, - JsonNode *node) -{ - gint j; - gchar indent_str[80]; - GValue value = { 0, }; - - for (j = 0; j < indent; j++) - indent_str[j] = ' '; - - indent_str[j] = '\0'; - - json_node_get_value (node, &value); - - switch (G_VALUE_TYPE (&value)) - { - case G_TYPE_INT: - g_print ("%sFound integer: `%d'\n", - indent_str, - g_value_get_int (&value)); - break; - - case G_TYPE_STRING: - g_print ("%sFound string: `%s'\n", - indent_str, - g_value_get_string (&value)); - break; - - case G_TYPE_DOUBLE: - g_print ("%sFound float: `%f'\n", - indent_str, - g_value_get_double (&value)); - break; - - case G_TYPE_BOOLEAN: - g_print ("%sFound boolean: `%s'\n", - indent_str, - g_value_get_boolean (&value) ? "true" : "false"); - break; - - default: - g_print ("%sUnknown value\n", indent_str); - break; - } - - g_value_unset (&value); -} - -static void -print_array (gint indent, - JsonArray *array) -{ - gint array_len = json_array_get_length (array); - gint j; - gchar indent_str[80]; - - for (j = 0; j < indent; j++) - indent_str[j] = ' '; - - indent_str[j] = '\0'; - - if (array_len == 0) - { - g_print ("%sFound empty array\n", indent_str); - return; - } - - for (j = 0; j < array_len; j++) - { - JsonNode *node = json_array_get_element (array, j); - - switch (JSON_NODE_TYPE (node)) - { - case JSON_NODE_ARRAY: - g_print ("%sFound array (index: %d, len: %d)\n", - indent_str, - j, - json_array_get_length (json_node_get_array (node))); - print_array (indent + 1, json_node_get_array (node)); - break; - case JSON_NODE_OBJECT: - g_print ("%sFound object (index: %d, size: %d)\n", - indent_str, - j, - json_object_get_size (json_node_get_object (node))); - print_object (indent + 1, json_node_get_object (node)); - break; - case JSON_NODE_VALUE: - g_print ("%sFound value (index: %d)\n", indent_str, j); - print_value (indent + 1, node); - break; - case JSON_NODE_NULL: - g_print ("%sFound null (index: %d)\n", indent_str, j); - break; - } - } -} - -static void -print_object (gint indent, - JsonObject *object) -{ - gint object_size = json_object_get_size (object); - gint j; - gchar indent_str[80]; - GList *members, *l; - - for (j = 0; j < indent; j++) - indent_str[j] = ' '; - - indent_str[j] = '\0'; - - if (object_size == 0) - { - g_print ("%sFound empty object\n", indent_str); - return; - } - - members = json_object_get_members (object); - for (l = members; l; l = l->next) - { - const gchar *name = l->data; - JsonNode *node = json_object_get_member (object, name); - - switch (JSON_NODE_TYPE (node)) - { - case JSON_NODE_ARRAY: - g_print ("%sFound array (member: `%s', len: %d)\n", - indent_str, - name, - json_array_get_length (json_node_get_array (node))); - print_array (indent + 1, json_node_get_array (node)); - break; - case JSON_NODE_OBJECT: - g_print ("%sFound object (member: `%s', size: %d)\n", - indent_str, - name, - json_object_get_size (json_node_get_object (node))); - print_object (indent + 1, json_node_get_object (node)); - break; - case JSON_NODE_VALUE: - g_print ("%sFound value (member: `%s')\n", indent_str, name); - print_value (indent + 1, node); - break; - case JSON_NODE_NULL: - g_print ("%sFound null (member: `%s')\n", indent_str, name); - break; - } - } - - g_list_free (members); -} - -int -main (int argc, char *argv[]) -{ - JsonParser *parser; - gint i; - - g_type_init (); - - parser = json_parser_new (); - - for (i = 0; i < n_test_objects; i++) - { - GError *error = NULL; - JsonNode *node; - JsonObject *object; - - if (!json_parser_load_from_data (parser, test_objects[i], -1, &error)) - { - g_print ("* Error, test %d:\n" - "* \t%s:\n" - "* Message: %s\n", - i, test_objects[i], error->message); - g_error_free (error); - g_object_unref (parser); - return EXIT_FAILURE; - } - - node = json_parser_get_root (parser); - g_assert (node != NULL); - g_assert (JSON_NODE_TYPE (node) == JSON_NODE_OBJECT); - - object = json_node_get_object (node); - g_assert (object != NULL); - - g_print ("*** Test %d: '%s' ***\n", i, test_objects[i]); - print_object (1, object); - } - - g_object_unref (parser); - - return EXIT_SUCCESS; -} diff --git a/tests/test-04.c b/tests/test-04.c deleted file mode 100644 index b3b73b6..0000000 --- a/tests/test-04.c +++ /dev/null @@ -1,238 +0,0 @@ -#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_ARRAY); - json_node_take_array (root, json_array_new ()); - - json_generator_set_root (generator, root); - - g_object_set (generator, "pretty", FALSE, NULL); - data = json_generator_to_data (generator, &len); - g_print ("*** Empty array (len:%d): `%s'\n", len, data); - - g_free (data); - - json_node_free (root); -} - -static void -test_simple (JsonGenerator *generator) -{ - JsonNode *root, *val; - JsonArray *array; - GValue value = { 0, }; - gchar *data; - gsize len; - - root = json_node_new (JSON_NODE_ARRAY); - array = json_array_sized_new (6); - - 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_array_add_element (array, 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_array_add_element (array, val); - g_value_unset (&value); - - val = json_node_new (JSON_NODE_NULL); - json_array_add_element (array, 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_array_add_element (array, 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_array_add_element (array, 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_array_add_element (array, val); - g_value_unset (&value); - - json_node_take_array (root, array); - json_generator_set_root (generator, root); - - g_object_set (generator, "pretty", FALSE, NULL); - data = json_generator_to_data (generator, &len); - g_print ("*** Simple array (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 array (pretty, len:%d):\n%s\n", len, data); - g_free (data); - - json_node_free (root); -} - -static void -test_nested (JsonGenerator *generator) -{ - JsonNode *root, *val, *nested_val; - JsonArray *array, *nested; - GValue value = { 0, }; - gchar *data; - gsize len; - - root = json_node_new (JSON_NODE_ARRAY); - array = json_array_sized_new (3); - - 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_array_add_element (array, val); - g_value_unset (&value); - - { - val = json_node_new (JSON_NODE_ARRAY); - nested = json_array_new (); - - nested_val = json_node_new (JSON_NODE_VALUE); - g_value_init (&value, G_TYPE_BOOLEAN); - g_value_set_boolean (&value, FALSE); - json_node_set_value (nested_val, &value); - json_array_add_element (nested, nested_val); - g_value_unset (&value); - - nested_val = json_node_new (JSON_NODE_NULL); - json_array_add_element (nested, nested_val); - - json_node_take_array (val, nested); - json_array_add_element (array, 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_array_add_element (array, val); - g_value_unset (&value); - - json_node_take_array (root, array); - json_generator_set_root (generator, root); - - g_object_set (generator, "pretty", FALSE, NULL); - data = json_generator_to_data (generator, &len); - g_print ("*** Nested array (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 array (pretty, len:%d):\n%s\n", len, data); - g_free (data); - - json_node_free (root); -} - -static void -test_object (JsonGenerator *generator) -{ - JsonNode *root, *val, *nested_val; - JsonArray *array; - JsonObject *nested; - GValue value = { 0, }; - gchar *data; - gsize len; - - root = json_node_new (JSON_NODE_ARRAY); - array = json_array_sized_new (3); - - 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_array_add_element (array, val); - g_value_unset (&value); - - { - 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_BOOLEAN); - g_value_set_boolean (&value, FALSE); - json_node_set_value (nested_val, &value); - json_object_add_member (nested, "foo", nested_val); - g_value_unset (&value); - - nested_val = json_node_new (JSON_NODE_NULL); - json_object_add_member (nested, "bar", nested_val); - - json_node_take_object (val, nested); - json_array_add_element (array, 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_INT); - g_value_set_int (&value, 42); - json_node_set_value (nested_val, &value); - json_object_add_member (nested, "baz", nested_val); - g_value_unset (&value); - - json_node_take_object (val, nested); - json_array_add_element (array, val); - } - - json_node_take_array (root, array); - 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); - - json_node_free (root); -} - -int -main (int argc, char *argv[]) -{ - JsonGenerator *generator; - - g_type_init (); - - generator = json_generator_new (); - - test_empty (generator); - test_simple (generator); - test_nested (generator); - test_object (generator); - - g_object_unref (generator); - - return EXIT_SUCCESS; -} diff --git a/tests/test-05.c b/tests/test-05.c deleted file mode 100644 index abdb3cd..0000000 --- a/tests/test-05.c +++ /dev/null @@ -1,227 +0,0 @@ -#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); - - json_node_free (root); -} - -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); - - json_node_free (root); -} - -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, - "indent", 1, - "indent-char", '\t', - NULL); - data = json_generator_to_data (generator, &len); - g_print ("*** Nested object (pretty, len:%d):\n%s\n", len, data); - g_free (data); - - json_node_free (root); -} - -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; -} diff --git a/tests/test-generator.c b/tests/test-generator.c new file mode 100644 index 0000000..f3edda7 --- /dev/null +++ b/tests/test-generator.c @@ -0,0 +1,399 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include <glib.h> + +#include <json-glib/json-glib.h> + +static const gchar *empty_array = "[ ]"; +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 void +test_empty_array (void) +{ + JsonGenerator *gen = json_generator_new (); + JsonNode *root; + gchar *data; + gsize len; + + root = json_node_new (JSON_NODE_ARRAY); + json_node_take_array (root, json_array_new ()); + + json_generator_set_root (gen, root); + g_object_set (gen, "pretty", FALSE, NULL); + + data = json_generator_to_data (gen, &len); + + g_assert_cmpint (len, ==, strlen (empty_array)); + g_assert_cmpstr (data, ==, empty_array); + + g_free (data); + json_node_free (root); + g_object_unref (gen); +} + +static void +test_empty_object (void) +{ + JsonGenerator *gen = json_generator_new (); + 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 (gen, root); + g_object_set (gen, "pretty", FALSE, NULL); + + data = json_generator_to_data (gen, &len); + + g_assert_cmpint (len, ==, strlen (empty_object)); + g_assert_cmpstr (data, ==, empty_object); + + g_free (data); + json_node_free (root); + g_object_unref (gen); +} + +static void +test_simple_array (void) +{ + JsonGenerator *generator = json_generator_new (); + JsonNode *root, *val; + JsonArray *array; + GValue value = { 0, }; + gchar *data; + gsize len; + + root = json_node_new (JSON_NODE_ARRAY); + array = json_array_sized_new (6); + + 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_array_add_element (array, 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_array_add_element (array, val); + g_value_unset (&value); + + val = json_node_new (JSON_NODE_NULL); + json_array_add_element (array, 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_array_add_element (array, 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_array_add_element (array, val); + g_value_unset (&value); + + json_node_take_array (root, array); + json_generator_set_root (generator, root); + + g_object_set (generator, "pretty", FALSE, NULL); + data = json_generator_to_data (generator, &len); + + if (g_test_verbose ()) + g_print ("checking simple array `%s' (expected: %s)\n", + data, + simple_array); + + g_assert_cmpint (len, ==, strlen (simple_array)); + g_assert_cmpstr (data, ==, simple_array); + + g_free (data); + json_node_free (root); + g_object_unref (generator); +} + +static void +test_nested_array (void) +{ + JsonGenerator *generator = json_generator_new (); + JsonNode *root, *val, *nested_val; + JsonArray *array, *nested; + GValue value = { 0, }; + gchar *data; + gsize len; + + root = json_node_new (JSON_NODE_ARRAY); + array = json_array_sized_new (3); + + 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_array_add_element (array, val); + g_value_unset (&value); + + { + val = json_node_new (JSON_NODE_ARRAY); + nested = json_array_new (); + + nested_val = json_node_new (JSON_NODE_VALUE); + g_value_init (&value, G_TYPE_BOOLEAN); + g_value_set_boolean (&value, FALSE); + json_node_set_value (nested_val, &value); + json_array_add_element (nested, nested_val); + g_value_unset (&value); + + nested_val = json_node_new (JSON_NODE_NULL); + json_array_add_element (nested, nested_val); + + json_node_take_array (val, nested); + json_array_add_element (array, 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_array_add_element (array, val); + g_value_unset (&value); + + json_node_take_array (root, array); + json_generator_set_root (generator, root); + + g_object_set (generator, "pretty", FALSE, NULL); + data = json_generator_to_data (generator, &len); + + g_assert_cmpint (len, ==, strlen (nested_array)); + g_assert_cmpstr (data, ==, nested_array); + + g_free (data); + json_node_free (root); + g_object_unref (generator); +} + +static void +test_simple_object (void) +{ + JsonGenerator *generator = json_generator_new (); + 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); + + 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); + + if (g_test_verbose ()) + g_print ("checking simple array `%s' (expected: %s)\n", + data, + simple_object); + + g_assert_cmpint (len, ==, strlen (simple_object)); + + /* we cannot compare the strings literal because JsonObject does not + * guarantee any ordering + */ + + g_free (data); + json_node_free (root); + g_object_unref (generator); +} + +#if 0 +/* this is just overkill, but I'll add it commented out, so it + * can be enabled if I feel like running this just to compare + * the length of the strings + */ +static void +test_nested_object (void) +{ + JsonGenerator *generator = json_generator_new (); + 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); + + if (g_test_verbose ()) + g_print ("checking nested object `%s' (expected: %s)\n", + data, + nested_object); + + g_assert_cmpint (len, ==, strlen (nested_object)); + + /* we cannot compare the strings literal because JsonObject does not + * guarantee any ordering + */ + + g_free (data); + json_node_free (root); + g_object_unref (generator); +} +#endif + +int +main (int argc, + char *argv[]) +{ + g_type_init (); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/json-generator/empty-array", test_empty_array); + g_test_add_func ("/json-generator/empty-object", test_empty_object); + g_test_add_func ("/json-generator/simple-array", test_simple_array); + g_test_add_func ("/json-generator/nested-array", test_nested_array); + g_test_add_func ("/json-generator/simple-object", test_simple_object); + + return g_test_run (); +} diff --git a/tests/test-parser.c b/tests/test-parser.c new file mode 100644 index 0000000..f503338 --- /dev/null +++ b/tests/test-parser.c @@ -0,0 +1,456 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdlib.h> +#include <stdio.h> + +#include <glib.h> + +#include <json-glib/json-glib.h> + +static const gchar *test_empty_string = ""; +static const gchar *test_empty_array_string = "[ ]"; +static const gchar *test_empty_object_string = "{ }"; + +static const struct { + const gchar *str; + gint len; + gint element; + JsonNodeType type; + GType gtype; +} test_simple_arrays[] = { + { "[ true ]", 1, 0, JSON_NODE_VALUE, G_TYPE_BOOLEAN }, + { "[ true, false, null ]", 3, 2, JSON_NODE_NULL, G_TYPE_INVALID }, + { "[ 1, 2, 3.14, \"test\" ]", 4, 3, JSON_NODE_VALUE, G_TYPE_STRING } +}; + +static const gchar *test_nested_arrays[] = { + "[ 42, [ ], null ]", + "[ [ ], [ true, [ true ] ] ]", + "[ [ false, true, 42 ], [ true, false, 3.14 ], \"test\" ]", + "[ true, { } ]", + "[ false, { \"test\" : 42 } ]", + "[ { \"channel\" : \"/meta/connect\" } ]" +}; + +static const struct { + const gchar *str; + gint size; + const gchar *member; + JsonNodeType type; + GType gtype; +} test_simple_objects[] = { + { "{ \"test\" : 42 }", 1, "test", JSON_NODE_VALUE, G_TYPE_INT }, + { "{ \"foo\" : \"bar\", \"baz\" : null }", 2, "baz", JSON_NODE_NULL, G_TYPE_INVALID }, + { "{ \"channel\" : \"/meta/connect\" }", 1, "channel", JSON_NODE_VALUE, G_TYPE_STRING } +}; + +static const gchar *test_nested_objects[] = { + "{ \"array\" : [ false, \"foo\" ], \"object\" : { \"foo\" : true } }" +}; + +static const gchar *test_assignments[] = { + "var test = [ false, false, true ]", + "var test = [ true, 42 ];", + "var test = { \"foo\" : false }" +}; + +static guint n_test_simple_arrays = G_N_ELEMENTS (test_simple_arrays); +static guint n_test_nested_arrays = G_N_ELEMENTS (test_nested_arrays); +static guint n_test_simple_objects = G_N_ELEMENTS (test_simple_objects); +static guint n_test_nested_objects = G_N_ELEMENTS (test_nested_objects); +static guint n_test_assignments = G_N_ELEMENTS (test_assignments); + +static void +test_empty (void) +{ + JsonParser *parser; + GError *error = NULL; + + parser = json_parser_new (); + g_assert (JSON_IS_PARSER (parser)); + + if (g_test_verbose ()) + g_print ("checking json_parser_load_from_data with empty string...\n"); + + if (!json_parser_load_from_data (parser, test_empty_string, -1, &error)) + { + if (g_test_verbose ()) + g_print ("Error: %s\n", error->message); + g_error_free (error); + g_object_unref (parser); + exit (1); + } + else + { + if (g_test_verbose ()) + g_print ("checking json_parser_get_root...\n"); + + g_assert (NULL == json_parser_get_root (parser)); + } + + g_object_unref (parser); +} + +static void +test_empty_array (void) +{ + JsonParser *parser; + GError *error = NULL; + + parser = json_parser_new (); + g_assert (JSON_IS_PARSER (parser)); + + if (g_test_verbose ()) + g_print ("checking json_parser_load_from_data with empty array...\n"); + + if (!json_parser_load_from_data (parser, test_empty_array_string, -1, &error)) + { + if (g_test_verbose ()) + g_print ("Error: %s\n", error->message); + g_error_free (error); + g_object_unref (parser); + exit (1); + } + else + { + JsonNode *root; + JsonArray *array; + + g_assert (NULL != json_parser_get_root (parser)); + + if (g_test_verbose ()) + g_print ("checking root node is an array...\n"); + root = json_parser_get_root (parser); + g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY); + + array = json_node_get_array (root); + g_assert (array != NULL); + + if (g_test_verbose ()) + g_print ("checking array is empty...\n"); + g_assert_cmpint (json_array_get_length (array), ==, 0); + } + + g_object_unref (parser); +} + +static void +test_simple_array (void) +{ + gint i; + JsonParser *parser; + + parser = json_parser_new (); + g_assert (JSON_IS_PARSER (parser)); + + if (g_test_verbose ()) + g_print ("checking json_parser_load_from_data with simple arrays...\n"); + + for (i = 0; i < n_test_simple_arrays; i++) + { + GError *error = NULL; + + if (!json_parser_load_from_data (parser, test_simple_arrays[i].str, -1, &error)) + { + if (g_test_verbose ()) + g_print ("Error: %s\n", error->message); + + g_error_free (error); + g_object_unref (parser); + exit (1); + } + else + { + JsonNode *root, *node; + JsonArray *array; + + g_assert (NULL != json_parser_get_root (parser)); + + if (g_test_verbose ()) + g_print ("checking root node is an array...\n"); + root = json_parser_get_root (parser); + g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY); + + array = json_node_get_array (root); + g_assert (array != NULL); + + if (g_test_verbose ()) + g_print ("checking array is of the desired length (%d)...\n", + test_simple_arrays[i].len); + g_assert_cmpint (json_array_get_length (array), ==, test_simple_arrays[i].len); + + if (g_test_verbose ()) + g_print ("checking element %d is of the desired type %s...\n", + test_simple_arrays[i].element, + g_type_name (test_simple_arrays[i].gtype)); + node = json_array_get_element (array, test_simple_arrays[i].element); + g_assert (node != NULL); + g_assert_cmpint (JSON_NODE_TYPE (node), ==, test_simple_arrays[i].type); + g_assert_cmpint (json_node_get_value_type (node), ==, test_simple_arrays[i].gtype); + } + } + + g_object_unref (parser); +} + +static void +test_nested_array (void) +{ + gint i; + JsonParser *parser; + + parser = json_parser_new (); + g_assert (JSON_IS_PARSER (parser)); + + if (g_test_verbose ()) + g_print ("checking json_parser_load_from_data with nested arrays...\n"); + + for (i = 0; i < n_test_nested_arrays; i++) + { + GError *error = NULL; + + if (!json_parser_load_from_data (parser, test_nested_arrays[i], -1, &error)) + { + if (g_test_verbose ()) + g_print ("Error: %s\n", error->message); + + g_error_free (error); + g_object_unref (parser); + exit (1); + } + else + { + JsonNode *root; + JsonArray *array; + + g_assert (NULL != json_parser_get_root (parser)); + + if (g_test_verbose ()) + g_print ("checking root node is an array...\n"); + root = json_parser_get_root (parser); + g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_ARRAY); + + array = json_node_get_array (root); + g_assert (array != NULL); + + if (g_test_verbose ()) + g_print ("checking array is not empty...\n"); + g_assert_cmpint (json_array_get_length (array), >, 0); + } + } + + g_object_unref (parser); +} + +static void +test_empty_object (void) +{ + JsonParser *parser; + GError *error = NULL; + + parser = json_parser_new (); + g_assert (JSON_IS_PARSER (parser)); + + if (g_test_verbose ()) + g_print ("checking json_parser_load_from_data with empty object...\n"); + + if (!json_parser_load_from_data (parser, test_empty_object_string, -1, &error)) + { + if (g_test_verbose ()) + g_print ("Error: %s\n", error->message); + g_error_free (error); + g_object_unref (parser); + exit (1); + } + else + { + JsonNode *root; + JsonObject *object; + + g_assert (NULL != json_parser_get_root (parser)); + + if (g_test_verbose ()) + g_print ("checking root node is an object...\n"); + root = json_parser_get_root (parser); + g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT); + + object = json_node_get_object (root); + g_assert (object != NULL); + + if (g_test_verbose ()) + g_print ("checking object is empty...\n"); + g_assert_cmpint (json_object_get_size (object), ==, 0); + } + + g_object_unref (parser); +} + +static void +test_simple_object (void) +{ + gint i; + JsonParser *parser; + + parser = json_parser_new (); + g_assert (JSON_IS_PARSER (parser)); + + if (g_test_verbose ()) + g_print ("checking json_parser_load_from_data with simple objects...\n"); + + for (i = 0; i < n_test_simple_objects; i++) + { + GError *error = NULL; + + if (!json_parser_load_from_data (parser, test_simple_objects[i].str, -1, &error)) + { + if (g_test_verbose ()) + g_print ("Error: %s\n", error->message); + + g_error_free (error); + g_object_unref (parser); + exit (1); + } + else + { + JsonNode *root, *node; + JsonObject *object; + + g_assert (NULL != json_parser_get_root (parser)); + + if (g_test_verbose ()) + g_print ("checking root node is an object...\n"); + root = json_parser_get_root (parser); + g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT); + + object = json_node_get_object (root); + g_assert (object != NULL); + + if (g_test_verbose ()) + g_print ("checking object is of the desired size (%d)...\n", + test_simple_objects[i].size); + g_assert_cmpint (json_object_get_size (object), ==, test_simple_objects[i].size); + + if (g_test_verbose ()) + g_print ("checking member '%s' is of the desired type %s...\n", + test_simple_objects[i].member, + g_type_name (test_simple_objects[i].gtype)); + node = json_object_get_member (object, test_simple_objects[i].member); + g_assert (node != NULL); + g_assert_cmpint (JSON_NODE_TYPE (node), ==, test_simple_objects[i].type); + g_assert_cmpint (json_node_get_value_type (node), ==, test_simple_objects[i].gtype); + } + } + + g_object_unref (parser); +} + +static void +test_nested_object (void) +{ + gint i; + JsonParser *parser; + + parser = json_parser_new (); + g_assert (JSON_IS_PARSER (parser)); + + if (g_test_verbose ()) + g_print ("checking json_parser_load_from_data with nested objects...\n"); + + for (i = 0; i < n_test_nested_objects; i++) + { + GError *error = NULL; + + if (!json_parser_load_from_data (parser, test_nested_objects[i], -1, &error)) + { + if (g_test_verbose ()) + g_print ("Error: %s\n", error->message); + + g_error_free (error); + g_object_unref (parser); + exit (1); + } + else + { + JsonNode *root; + JsonObject *object; + + g_assert (NULL != json_parser_get_root (parser)); + + if (g_test_verbose ()) + g_print ("checking root node is an object...\n"); + root = json_parser_get_root (parser); + g_assert_cmpint (JSON_NODE_TYPE (root), ==, JSON_NODE_OBJECT); + + object = json_node_get_object (root); + g_assert (object != NULL); + + if (g_test_verbose ()) + g_print ("checking object is not empty...\n"); + g_assert_cmpint (json_object_get_size (object), >, 0); + } + } + + g_object_unref (parser); +} + +static void +test_assignment (void) +{ + gint i; + JsonParser *parser; + + parser = json_parser_new (); + g_assert (JSON_IS_PARSER (parser)); + + if (g_test_verbose ()) + g_print ("checking json_parser_load_from_data with assignments...\n"); + + for (i = 0; i < n_test_assignments; i++) + { + GError *error = NULL; + + if (!json_parser_load_from_data (parser, test_assignments[i], -1, &error)) + { + if (g_test_verbose ()) + g_print ("Error: %s\n", error->message); + + g_error_free (error); + g_object_unref (parser); + exit (1); + } + else + { + gchar *var; + + if (g_test_verbose ()) + g_print ("checking assignment...\n"); + g_assert (json_parser_has_assignment (parser, &var) == TRUE); + g_assert (var != NULL); + + g_assert (NULL != json_parser_get_root (parser)); + } + } + + g_object_unref (parser); +} + +int +main (int argc, + char *argv[]) +{ + g_type_init (); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/json-parser/empty-string", test_empty); + g_test_add_func ("/json-parser/empty-array", test_empty_array); + g_test_add_func ("/json-parser/simple-array", test_simple_array); + g_test_add_func ("/json-parser/nested-array", test_nested_array); + g_test_add_func ("/json-parser/empty-object", test_empty_object); + g_test_add_func ("/json-parser/simple-object", test_simple_object); + g_test_add_func ("/json-parser/nested-object", test_nested_object); + g_test_add_func ("/json-parser/assignment", test_assignment); + + return g_test_run (); +} diff --git a/tests/test-07.c b/tests/test-serialize-complex.c index 81840b4..452cd24 100644 --- a/tests/test-07.c +++ b/tests/test-serialize-complex.c @@ -231,22 +231,31 @@ test_object_init (TestObject *object) object->blah.bar = object->bar; } -int -main (int argc, char *argvp[]) +static void +test_serialize (void) { - TestObject *object; + TestObject *obj = g_object_new (TEST_TYPE_OBJECT, NULL); gchar *data; gsize len; - g_type_init (); + data = json_serialize_gobject (G_OBJECT (obj), &len); - object = g_object_new (TEST_TYPE_OBJECT, NULL); - data = json_serialize_gobject (G_OBJECT (object), &len); + g_assert_cmpint (len, >, 0); + if (g_test_verbose ()) + g_print ("TestObject:\n%s\n", data); - g_print ("*** TestObject (len:%d) ***\n%s\n", len, data); - g_free (data); - g_object_unref (object); + g_object_unref (obj); +} + +int +main (int argc, + char *argv[]) +{ + g_type_init (); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/serialize/gobject-boxed", test_serialize); - return EXIT_SUCCESS; + return g_test_run (); } diff --git a/tests/test-08.c b/tests/test-serialize-full.c index 92acbb0..eea785f 100644 --- a/tests/test-08.c +++ b/tests/test-serialize-full.c @@ -300,38 +300,52 @@ test_object_init (TestObject *object) object->meh = TEST_ENUM_BAR; } -static const gchar var_test[] = -"{" -" \"foo\" : 42," -" \"bar\" : false," -" \"baz\" : \"Test\"," -" \"meh\" : \"baz\"" +static const gchar *var_test = +"{\n" +" \"foo\" : 42,\n" +" \"bar\" : false,\n" +" \"baz\" : \"hello\",\n" +" \"meh\" : \"baz\"\n" "}"; -int -main (int argc, char *argvp[]) +static void +test_deserialize (void) { GObject *object; GError *error; - g_type_init (); - error = NULL; object = json_construct_gobject (TEST_TYPE_OBJECT, var_test, -1, &error); if (error) g_error ("*** Unable to parse buffer: %s\n", error->message); - g_print ("*** TestObject ***\n" - " foo: %s\n" - " bar: %s\n" - " baz: %s\n" - " meh: %s\n", - TEST_OBJECT (object)->foo == 42 ? "<true>" : "<false>", - TEST_OBJECT (object)->bar == FALSE ? "<true>" : "<false>", - TEST_OBJECT (object)->baz != NULL ? "<true>" : "<false>", - TEST_OBJECT (object)->meh == TEST_ENUM_BAZ ? "<true>" : "<false>"); - + if (g_test_verbose ()) + g_print ("*** TestObject ***\n" + " foo: %s\n" + " bar: %s\n" + " baz: %s\n" + " meh: %s\n", + TEST_OBJECT (object)->foo == 42 ? "<true>" : "<false>", + TEST_OBJECT (object)->bar == FALSE ? "<true>" : "<false>", + TEST_OBJECT (object)->baz != NULL ? "<true>" : "<false>", + TEST_OBJECT (object)->meh == TEST_ENUM_BAZ ? "<true>" : "<false>"); + + g_assert_cmpint (TEST_OBJECT (object)->foo, ==, 42); + g_assert_cmpint (TEST_OBJECT (object)->bar, ==, FALSE); + g_assert_cmpstr (TEST_OBJECT (object)->baz, ==, "hello"); + g_assert_cmpint (TEST_OBJECT (object)->meh, ==, TEST_ENUM_BAZ); + g_object_unref (object); +} + +int +main (int argc, + char *argv[]) +{ + g_type_init (); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/deserialize/json-to-gobject", test_deserialize); - return EXIT_SUCCESS; + return g_test_run (); } diff --git a/tests/test-06.c b/tests/test-serialize-simple.c index e33f614..3be00b5 100644 --- a/tests/test-06.c +++ b/tests/test-serialize-simple.c @@ -133,22 +133,31 @@ test_object_init (TestObject *object) object->baz = g_strdup ("Test"); } -int -main (int argc, char *argvp[]) +static void +test_serialize (void) { - TestObject *object; + TestObject *obj = g_object_new (TEST_TYPE_OBJECT, NULL); gchar *data; gsize len; - g_type_init (); + data = json_serialize_gobject (G_OBJECT (obj), &len); - object = g_object_new (TEST_TYPE_OBJECT, NULL); - data = json_serialize_gobject (G_OBJECT (object), &len); + g_assert_cmpint (len, >, 0); + if (g_test_verbose ()) + g_print ("TestObject:\n%s\n", data); - g_print ("*** TestObject (len:%d) ***\n%s\n", len, data); - g_free (data); - g_object_unref (object); + g_object_unref (obj); +} + +int +main (int argc, + char *argv[]) +{ + g_type_init (); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/serialize/gobject", test_serialize); - return EXIT_SUCCESS; + return g_test_run (); } |