6 #include <json-glib/json-glib.h>
8 static const gchar *test_base_array_data =
9 "[ 0, true, null, \"foo\", 3.14, [ false ], { \"bar\" : 42 } ]";
11 static const gchar *test_base_object_data =
12 "{ \"text\" : \"hello, world!\", \"foo\" : null, \"blah\" : 47, \"double\" : 42.47 }";
14 static const gchar *expected_member_name[] = {
22 test_base_object (void)
24 JsonParser *parser = json_parser_new ();
25 JsonReader *reader = json_reader_new (NULL);
30 json_parser_load_from_data (parser, test_base_object_data, -1, &error);
31 g_assert (error == NULL);
33 json_reader_set_root (reader, json_parser_get_root (parser));
35 g_assert (json_reader_is_object (reader));
36 g_assert_cmpint (json_reader_count_members (reader), ==, 4);
38 members = json_reader_list_members (reader);
39 g_assert (members != NULL);
41 n_members = g_strv_length (members);
42 g_assert_cmpint (n_members, ==, json_reader_count_members (reader));
44 for (i = 0; i < n_members; i++)
45 g_assert_cmpstr (members[i], ==, expected_member_name[i]);
49 g_assert (json_reader_read_member (reader, "text"));
50 g_assert (json_reader_is_value (reader));
51 g_assert_cmpstr (json_reader_get_string_value (reader), ==, "hello, world!");
52 json_reader_end_member (reader);
54 g_assert (json_reader_read_member (reader, "foo"));
55 g_assert (json_reader_get_null_value (reader));
56 json_reader_end_member (reader);
58 g_assert (!json_reader_read_member (reader, "bar"));
59 g_assert (json_reader_get_error (reader) != NULL);
60 g_assert_error ((GError *) json_reader_get_error (reader),
62 JSON_READER_ERROR_INVALID_MEMBER);
63 json_reader_end_member (reader);
64 g_assert (json_reader_get_error (reader) == NULL);
66 g_assert (json_reader_read_element (reader, 2));
67 g_assert_cmpstr (json_reader_get_member_name (reader), ==, "blah");
68 g_assert (json_reader_is_value (reader));
69 g_assert_cmpint (json_reader_get_int_value (reader), ==, 47);
70 json_reader_end_element (reader);
71 g_assert (json_reader_get_error (reader) == NULL);
73 json_reader_read_member (reader, "double");
74 g_assert_cmpfloat (json_reader_get_double_value (reader), ==, 42.47);
75 json_reader_end_element (reader);
77 g_object_unref (reader);
78 g_object_unref (parser);
82 test_base_array (void)
84 JsonParser *parser = json_parser_new ();
85 JsonReader *reader = json_reader_new (NULL);
88 json_parser_load_from_data (parser, test_base_array_data, -1, &error);
89 g_assert (error == NULL);
91 json_reader_set_root (reader, json_parser_get_root (parser));
93 g_assert (json_reader_is_array (reader));
94 g_assert_cmpint (json_reader_count_elements (reader), ==, 7);
96 json_reader_read_element (reader, 0);
97 g_assert (json_reader_is_value (reader));
98 g_assert_cmpint (json_reader_get_int_value (reader), ==, 0);
99 json_reader_end_element (reader);
101 json_reader_read_element (reader, 1);
102 g_assert (json_reader_is_value (reader));
103 g_assert (json_reader_get_boolean_value (reader));
104 json_reader_end_element (reader);
106 json_reader_read_element (reader, 3);
107 g_assert (json_reader_is_value (reader));
108 g_assert_cmpstr (json_reader_get_string_value (reader), ==, "foo");
109 json_reader_end_element (reader);
111 json_reader_read_element (reader, 5);
112 g_assert (!json_reader_is_value (reader));
113 g_assert (json_reader_is_array (reader));
114 json_reader_end_element (reader);
116 json_reader_read_element (reader, 6);
117 g_assert (json_reader_is_object (reader));
119 json_reader_read_member (reader, "bar");
120 g_assert (json_reader_is_value (reader));
121 g_assert_cmpint (json_reader_get_int_value (reader), ==, 42);
122 json_reader_end_member (reader);
124 json_reader_end_element (reader);
126 g_assert (!json_reader_read_element (reader, 7));
127 g_assert_error ((GError *) json_reader_get_error (reader),
129 JSON_READER_ERROR_INVALID_INDEX);
130 json_reader_end_element (reader);
131 g_assert (json_reader_get_error (reader) == NULL);
133 g_object_unref (reader);
140 #if !GLIB_CHECK_VERSION (2, 35, 1)
143 g_test_init (&argc, &argv, NULL);
144 g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=");
146 g_test_add_func ("/reader/base-array", test_base_array);
147 g_test_add_func ("/reader/base-object", test_base_object);
149 return g_test_run ();