diff options
author | Emmanuele Bassi <ebassi@linux.intel.com> | 2009-05-16 20:09:07 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@linux.intel.com> | 2009-05-16 20:09:07 +0100 |
commit | 3057a1722e27a13b39ddec4754fb6abda1aea199 (patch) | |
tree | 8a5163c07abc96263e34f3026978d111943a1b3f /json-glib/tests/object-test.c | |
parent | 5778210462b8b7a1a5d98466508276f712ea8c47 (diff) | |
download | json-glib-3057a1722e27a13b39ddec4754fb6abda1aea199.tar.gz |
Add JsonObject iteration function
The json_object_foreach_member() function iterates over a JsonObject
data type.
Diffstat (limited to 'json-glib/tests/object-test.c')
-rw-r--r-- | json-glib/tests/object-test.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/json-glib/tests/object-test.c b/json-glib/tests/object-test.c index 4803e96..5528342 100644 --- a/json-glib/tests/object-test.c +++ b/json-glib/tests/object-test.c @@ -47,6 +47,62 @@ test_remove_member (void) json_object_unref (object); } +typedef struct _TestForeachFixture +{ + gint n_members; +} TestForeachFixture; + +static const struct { + const gchar *member_name; + JsonNodeType member_type; + GType member_gtype; +} type_verify[] = { + { "integer", JSON_NODE_VALUE, G_TYPE_INT }, + { "boolean", JSON_NODE_VALUE, G_TYPE_BOOLEAN }, + { "string", JSON_NODE_VALUE, G_TYPE_STRING }, + { "null", JSON_NODE_NULL, G_TYPE_INVALID } +}; + +static void +verify_foreach (JsonObject *object, + const gchar *member_name, + JsonNode *member_node, + gpointer user_data) +{ + TestForeachFixture *fixture = user_data; + gint i; + + for (i = 0; i < G_N_ELEMENTS (type_verify); i++) + { + if (strcmp (member_name, type_verify[i].member_name) == 0) + { + g_assert (json_node_get_node_type (member_node) == type_verify[i].member_type); + g_assert (json_node_get_value_type (member_node) == type_verify[i].member_gtype); + break; + } + } + + fixture->n_members += 1; +} + +static void +test_foreach_member (void) +{ + JsonObject *object = json_object_new (); + TestForeachFixture fixture = { 0, }; + + json_object_set_int_member (object, "integer", 42); + json_object_set_boolean_member (object, "boolean", TRUE); + json_object_set_string_member (object, "string", "hello"); + json_object_set_null_member (object, "null"); + + json_object_foreach_member (object, verify_foreach, &fixture); + + g_assert_cmpint (fixture.n_members, ==, json_object_get_size (object)); + + json_object_unref (object); +} + int main (int argc, char *argv[]) @@ -57,6 +113,7 @@ main (int argc, g_test_add_func ("/object/empty-object", test_empty_object); g_test_add_func ("/object/add-member", test_add_member); g_test_add_func ("/object/remove-member", test_remove_member); + g_test_add_func ("/object/foreach-member", test_foreach_member); return g_test_run (); } |