5 #include <glib-object.h>
7 #include <json-glib/json-glib.h>
9 static const gchar *complex_object = "{\"depth1\":[1,{\"depth2\":[3,[null],\"after array\"],\"value2\":true}],\"object1\":{}}";
11 static const gchar *empty_object = "{\"a\":{}}";
13 static const gchar *reset_object = "{\"test\":\"reset\"}";
14 static const gchar *reset_array = "[\"reset\"]";
17 test_builder_complex (void)
19 JsonBuilder *builder = json_builder_new ();
21 JsonGenerator *generator;
25 json_builder_begin_object (builder);
27 json_builder_set_member_name (builder, "depth1");
28 json_builder_begin_array (builder);
29 json_builder_add_int_value (builder, 1);
31 json_builder_begin_object (builder);
33 json_builder_set_member_name (builder, "depth2");
34 json_builder_begin_array (builder);
35 json_builder_add_int_value (builder, 3);
37 json_builder_begin_array (builder);
38 json_builder_add_null_value (builder);
39 json_builder_end_array (builder);
41 json_builder_add_string_value (builder, "after array");
42 json_builder_end_array (builder); /* depth2 */
44 json_builder_set_member_name (builder, "value2");
45 json_builder_add_boolean_value (builder, TRUE);
46 json_builder_end_object (builder);
48 json_builder_end_array (builder); /* depth1 */
50 json_builder_set_member_name (builder, "object1");
51 json_builder_begin_object (builder);
52 json_builder_end_object (builder);
54 json_builder_end_object (builder);
56 node = json_builder_get_root (builder);
57 g_object_unref (builder);
59 generator = json_generator_new ();
60 json_generator_set_root (generator, node);
61 data = json_generator_to_data (generator, &length);
63 if (g_test_verbose ())
64 g_print ("Builder complex: '%*s'\n", (int)length, data);
66 g_assert_cmpint (length, ==, strlen (complex_object));
67 g_assert_cmpstr (data, ==, complex_object);
70 json_node_free (node);
71 g_object_unref (generator);
75 test_builder_empty (void)
77 JsonBuilder *builder = json_builder_new ();
79 JsonGenerator *generator;
83 json_builder_begin_object (builder);
85 json_builder_set_member_name (builder, "a");
87 json_builder_begin_object (builder);
88 json_builder_end_object (builder);
90 json_builder_end_object (builder);
92 node = json_builder_get_root (builder);
93 g_object_unref (builder);
95 generator = json_generator_new ();
96 json_generator_set_root (generator, node);
97 data = json_generator_to_data (generator, &length);
99 if (g_test_verbose ())
100 g_print ("Builder empty: '%*s'\n", (int)length, data);
102 g_assert_cmpint (length, ==, strlen (empty_object));
103 g_assert_cmpstr (data, ==, empty_object);
106 json_node_free (node);
107 g_object_unref (generator);
111 test_builder_reset (void)
113 JsonBuilder *builder = json_builder_new ();
114 JsonGenerator *generator = json_generator_new ();
119 json_builder_begin_object (builder);
120 json_builder_set_member_name (builder, "test");
121 json_builder_add_string_value (builder, "reset");
122 json_builder_end_object (builder);
124 node = json_builder_get_root (builder);
125 json_generator_set_root (generator, node);
126 data = json_generator_to_data (generator, &length);
127 g_assert (strncmp (data, reset_object, length) == 0);
130 json_node_free (node);
132 json_builder_reset (builder);
134 json_builder_begin_array (builder);
135 json_builder_add_string_value (builder, "reset");
136 json_builder_end_array (builder);
138 node = json_builder_get_root (builder);
139 json_generator_set_root (generator, node);
140 data = json_generator_to_data (generator, &length);
141 g_assert (strncmp (data, reset_array, length) == 0);
144 json_node_free (node);
145 g_object_unref (builder);
146 g_object_unref (generator);
154 g_test_init (&argc, &argv, NULL);
156 g_test_add_func ("/builder/complex", test_builder_complex);
157 g_test_add_func ("/builder/complex", test_builder_empty);
158 g_test_add_func ("/builder/reset", test_builder_reset);
160 return g_test_run ();