mirror of
https://github.com/qemu/qemu.git
synced 2025-08-09 10:25:06 +00:00
tests: Add test for qdict_flatten()
Add a test case for qdict_flatten() in tests/check-qdict.c. This test case covers the flattening of subordinate QLists as well. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
be331341a1
commit
3fb11779ca
@ -227,6 +227,81 @@ static void qdict_iterapi_test(void)
|
|||||||
QDECREF(tests_dict);
|
QDECREF(tests_dict);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void qdict_flatten_test(void)
|
||||||
|
{
|
||||||
|
QList *list1 = qlist_new();
|
||||||
|
QList *list2 = qlist_new();
|
||||||
|
QDict *dict1 = qdict_new();
|
||||||
|
QDict *dict2 = qdict_new();
|
||||||
|
QDict *dict3 = qdict_new();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Test the flattening of
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* "e": [
|
||||||
|
* 42,
|
||||||
|
* [
|
||||||
|
* 23,
|
||||||
|
* 66,
|
||||||
|
* {
|
||||||
|
* "a": 0,
|
||||||
|
* "b": 1
|
||||||
|
* }
|
||||||
|
* ]
|
||||||
|
* ],
|
||||||
|
* "f": {
|
||||||
|
* "c": 2,
|
||||||
|
* "d": 3,
|
||||||
|
* },
|
||||||
|
* "g": 4
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* to
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* "e.0": 42,
|
||||||
|
* "e.1.0": 23,
|
||||||
|
* "e.1.1": 66,
|
||||||
|
* "e.1.2.a": 0,
|
||||||
|
* "e.1.2.b": 1,
|
||||||
|
* "f.c": 2,
|
||||||
|
* "f.d": 3,
|
||||||
|
* "g": 4
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
|
qdict_put(dict1, "a", qint_from_int(0));
|
||||||
|
qdict_put(dict1, "b", qint_from_int(1));
|
||||||
|
|
||||||
|
qlist_append_obj(list1, QOBJECT(qint_from_int(23)));
|
||||||
|
qlist_append_obj(list1, QOBJECT(qint_from_int(66)));
|
||||||
|
qlist_append_obj(list1, QOBJECT(dict1));
|
||||||
|
qlist_append_obj(list2, QOBJECT(qint_from_int(42)));
|
||||||
|
qlist_append_obj(list2, QOBJECT(list1));
|
||||||
|
|
||||||
|
qdict_put(dict2, "c", qint_from_int(2));
|
||||||
|
qdict_put(dict2, "d", qint_from_int(3));
|
||||||
|
qdict_put_obj(dict3, "e", QOBJECT(list2));
|
||||||
|
qdict_put_obj(dict3, "f", QOBJECT(dict2));
|
||||||
|
qdict_put(dict3, "g", qint_from_int(4));
|
||||||
|
|
||||||
|
qdict_flatten(dict3);
|
||||||
|
|
||||||
|
g_assert(qdict_get_int(dict3, "e.0") == 42);
|
||||||
|
g_assert(qdict_get_int(dict3, "e.1.0") == 23);
|
||||||
|
g_assert(qdict_get_int(dict3, "e.1.1") == 66);
|
||||||
|
g_assert(qdict_get_int(dict3, "e.1.2.a") == 0);
|
||||||
|
g_assert(qdict_get_int(dict3, "e.1.2.b") == 1);
|
||||||
|
g_assert(qdict_get_int(dict3, "f.c") == 2);
|
||||||
|
g_assert(qdict_get_int(dict3, "f.d") == 3);
|
||||||
|
g_assert(qdict_get_int(dict3, "g") == 4);
|
||||||
|
|
||||||
|
g_assert(qdict_size(dict3) == 8);
|
||||||
|
|
||||||
|
QDECREF(dict3);
|
||||||
|
}
|
||||||
|
|
||||||
static void qdict_array_split_test(void)
|
static void qdict_array_split_test(void)
|
||||||
{
|
{
|
||||||
QDict *test_dict = qdict_new();
|
QDict *test_dict = qdict_new();
|
||||||
@ -444,6 +519,7 @@ int main(int argc, char **argv)
|
|||||||
g_test_add_func("/public/del", qdict_del_test);
|
g_test_add_func("/public/del", qdict_del_test);
|
||||||
g_test_add_func("/public/to_qdict", qobject_to_qdict_test);
|
g_test_add_func("/public/to_qdict", qobject_to_qdict_test);
|
||||||
g_test_add_func("/public/iterapi", qdict_iterapi_test);
|
g_test_add_func("/public/iterapi", qdict_iterapi_test);
|
||||||
|
g_test_add_func("/public/flatten", qdict_flatten_test);
|
||||||
g_test_add_func("/public/array_split", qdict_array_split_test);
|
g_test_add_func("/public/array_split", qdict_array_split_test);
|
||||||
|
|
||||||
g_test_add_func("/errors/put_exists", qdict_put_exists_test);
|
g_test_add_func("/errors/put_exists", qdict_put_exists_test);
|
||||||
|
Loading…
Reference in New Issue
Block a user