diff options
author | Emmanuele Bassi <ebassi@linux.intel.com> | 2010-08-02 16:41:18 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@linux.intel.com> | 2010-08-02 16:43:47 +0100 |
commit | e6ea3a6bae044ec7874dfde3b50bb337f00bb3be (patch) | |
tree | 6db97d33960e9b3b9a095582e3c849d50b0392be /json-glib/tests | |
parent | 8cac7f2b6987803e36ff6abe012cd3e017b5b960 (diff) | |
download | json-glib-e6ea3a6bae044ec7874dfde3b50bb337f00bb3be.tar.gz |
Exercise the stream API in JsonParser
Diffstat (limited to 'json-glib/tests')
-rw-r--r-- | json-glib/tests/Makefile.am | 2 | ||||
-rw-r--r-- | json-glib/tests/parser-test.c | 78 | ||||
-rw-r--r-- | json-glib/tests/stream-load.json | 1 |
3 files changed, 81 insertions, 0 deletions
diff --git a/json-glib/tests/Makefile.am b/json-glib/tests/Makefile.am index a027a70..ca3223e 100644 --- a/json-glib/tests/Makefile.am +++ b/json-glib/tests/Makefile.am @@ -11,6 +11,8 @@ INCLUDES = \ AM_CPPFLAGS = $(JSON_DEBUG_CFLAGS) AM_CFLAGS = -g $(JSON_CFLAGS) $(MAINTAINER_CFLAGS) +EXTRA_DIST += stream-load.json + noinst_PROGRAMS = $(TEST_PROGS) progs_ldadd = $(top_builddir)/json-glib/libjson-glib-1.0.la diff --git a/json-glib/tests/parser-test.c b/json-glib/tests/parser-test.c index 5e5fa48..5baba0d 100644 --- a/json-glib/tests/parser-test.c +++ b/json-glib/tests/parser-test.c @@ -684,6 +684,82 @@ test_invalid_json (void) g_object_unref (parser); } +static void +test_stream_sync (void) +{ + JsonParser *parser; + GFile *file; + GFileInputStream *stream; + GError *error = NULL; + JsonNode *root; + + parser = json_parser_new (); + + file = g_file_new_for_path ("stream-load.json"); + stream = g_file_read (file, NULL, &error); + g_assert (error == NULL); + g_assert (stream != NULL); + + json_parser_load_from_stream (parser, G_INPUT_STREAM (stream), NULL, &error); + g_assert (error == NULL); + + root = json_parser_get_root (parser); + g_assert (root != NULL); + g_assert (JSON_NODE_HOLDS_ARRAY (root)); + + g_object_unref (stream); + g_object_unref (file); + g_object_unref (parser); +} + +static void +on_load_complete (GObject *gobject, + GAsyncResult *result, + gpointer user_data) +{ + JsonParser *parser = JSON_PARSER (gobject); + GMainLoop *main_loop = user_data; + GError *error = NULL; + JsonNode *root; + gboolean res; + + res = json_parser_load_from_stream_finish (parser, result, &error); + g_assert (res); + g_assert (error == NULL); + + root = json_parser_get_root (parser); + g_assert (root != NULL); + g_assert (JSON_NODE_HOLDS_ARRAY (root)); + + g_main_loop_quit (main_loop); +} + +static void +test_stream_async (void) +{ + GMainLoop *main_loop; + GError *error = NULL; + JsonParser *parser = json_parser_new (); + GFile *file = g_file_new_for_path ("stream-load.json"); + GFileInputStream *stream = g_file_read (file, NULL, &error); + + g_assert (error == NULL); + g_assert (stream != NULL); + + main_loop = g_main_loop_new (NULL, FALSE); + + json_parser_load_from_stream_async (parser, G_INPUT_STREAM (stream), NULL, + on_load_complete, + main_loop); + + g_main_loop_run (main_loop); + + g_main_loop_unref (main_loop); + g_object_unref (stream); + g_object_unref (file); + g_object_unref (parser); +} + int main (int argc, char *argv[]) @@ -702,6 +778,8 @@ main (int argc, g_test_add_func ("/parser/assignment", test_assignment); g_test_add_func ("/parser/unicode-escape", test_unicode_escape); g_test_add_func ("/parser/invalid-json", test_invalid_json); + g_test_add_func ("/parser/stream-sync", test_stream_sync); + g_test_add_func ("/parser/stream-async", test_stream_async); return g_test_run (); } diff --git a/json-glib/tests/stream-load.json b/json-glib/tests/stream-load.json new file mode 100644 index 0000000..203f03f --- /dev/null +++ b/json-glib/tests/stream-load.json @@ -0,0 +1 @@ +[ { "hello" : "world!\n" } ] |