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 ();