[json-glib] Exercise the stream API in JsonParser



commit e6ea3a6bae044ec7874dfde3b50bb337f00bb3be
Author: Emmanuele Bassi <ebassi linux intel com>
Date:   Mon Aug 2 16:41:18 2010 +0100

    Exercise the stream API in JsonParser

 json-glib/tests/Makefile.am      |    2 +
 json-glib/tests/parser-test.c    |   78 ++++++++++++++++++++++++++++++++++++++
 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" } ]



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