6 #include <json-glib/json-glib.h>
9 test_empty_array (void)
11 JsonArray *array = json_array_new ();
13 g_assert_cmpint (json_array_get_length (array), ==, 0);
14 g_assert (json_array_get_elements (array) == NULL);
16 json_array_unref (array);
20 test_add_element (void)
22 JsonArray *array = json_array_new ();
23 JsonNode *node = json_node_new (JSON_NODE_NULL);
25 g_assert_cmpint (json_array_get_length (array), ==, 0);
27 json_array_add_element (array, node);
28 g_assert_cmpint (json_array_get_length (array), ==, 1);
30 node = json_array_get_element (array, 0);
31 g_assert_cmpint (JSON_NODE_TYPE (node), ==, JSON_NODE_NULL);
33 json_array_unref (array);
37 test_remove_element (void)
39 JsonArray *array = json_array_new ();
40 JsonNode *node = json_node_new (JSON_NODE_NULL);
42 json_array_add_element (array, node);
44 json_array_remove_element (array, 0);
45 g_assert_cmpint (json_array_get_length (array), ==, 0);
47 json_array_unref (array);
50 typedef struct _TestForeachFixture
58 JsonNodeType element_type;
61 { JSON_NODE_VALUE, G_TYPE_INT64 },
62 { JSON_NODE_VALUE, G_TYPE_BOOLEAN },
63 { JSON_NODE_VALUE, G_TYPE_STRING },
64 { JSON_NODE_NULL, G_TYPE_INVALID }
68 verify_foreach (JsonArray *array,
70 JsonNode *element_node,
73 TestForeachFixture *fixture = user_data;
75 g_assert (g_list_find (fixture->elements, element_node));
76 g_assert (json_node_get_node_type (element_node) == type_verify[index_].element_type);
77 g_assert (json_node_get_value_type (element_node) == type_verify[index_].element_gtype);
79 fixture->iterations += 1;
83 test_foreach_element (void)
85 JsonArray *array = json_array_new ();
86 TestForeachFixture fixture = { 0, };
88 json_array_add_int_element (array, 42);
89 json_array_add_boolean_element (array, TRUE);
90 json_array_add_string_element (array, "hello");
91 json_array_add_null_element (array);
93 fixture.elements = json_array_get_elements (array);
94 g_assert (fixture.elements != NULL);
96 fixture.n_elements = json_array_get_length (array);
97 g_assert_cmpint (fixture.n_elements, ==, g_list_length (fixture.elements));
99 fixture.iterations = 0;
101 json_array_foreach_element (array, verify_foreach, &fixture);
103 g_assert_cmpint (fixture.iterations, ==, fixture.n_elements);
105 g_list_free (fixture.elements);
106 json_array_unref (array);
114 g_test_init (&argc, &argv, NULL);
116 g_test_add_func ("/array/empty-array", test_empty_array);
117 g_test_add_func ("/array/add-element", test_add_element);
118 g_test_add_func ("/array/remove-element", test_remove_element);
119 g_test_add_func ("/array/foreach-element", test_foreach_element);
121 return g_test_run ();