diff options
author | Olivier Andrieu <oliv__a@users.sourceforge.net> | 2004-05-21 09:05:20 +0000 |
---|---|---|
committer | Olivier Andrieu <oliv__a@users.sourceforge.net> | 2004-05-21 09:05:20 +0000 |
commit | e431887e8476b1897f3eef4a90bfb928abb2f07b (patch) | |
tree | d5ee0bbe8c6a1d957534338fcabb3f29e95c098e /dbus/dbus-object-tree.c | |
parent | df23f08f9b4607660aeee2c3640b80e1b6aad256 (diff) |
2004-05-21 Olivier Andrieu <oliv__a@users.sourceforge.net>
* dbus/dbus-object-tree.c
(_dbus_object_tree_list_registered_unlock, lookup_subtree): return
children even if the requested path isn't registered.
(object_tree_test_iteration): test object_tree_list_registered.
* configure.in: undefine HAVE_ABSTRACT_SOCKETS instead of defining
it to 0.
Diffstat (limited to 'dbus/dbus-object-tree.c')
-rw-r--r-- | dbus/dbus-object-tree.c | 63 |
1 files changed, 60 insertions, 3 deletions
diff --git a/dbus/dbus-object-tree.c b/dbus/dbus-object-tree.c index 6856033a..adac34ed 100644 --- a/dbus/dbus-object-tree.c +++ b/dbus/dbus-object-tree.c @@ -344,6 +344,16 @@ find_subtree (DBusObjectTree *tree, } static DBusObjectSubtree* +lookup_subtree (DBusObjectTree *tree, + const char **path) +{ +#if VERBOSE_FIND + _dbus_verbose ("Looking for subtree\n"); +#endif + return find_subtree_recurse (tree->root, path, FALSE, FALSE, NULL); +} + +static DBusObjectSubtree* find_handler (DBusObjectTree *tree, const char **path) { @@ -553,12 +563,10 @@ _dbus_object_tree_list_registered_unlocked (DBusObjectTree *tree, *child_entries = NULL; - subtree = find_subtree (tree, parent_path, NULL); + subtree = lookup_subtree (tree, parent_path); if (subtree == NULL) { retval = dbus_new0 (char *, 1); - if (retval == NULL) - goto out; } else { @@ -1143,6 +1151,15 @@ do_test_dispatch (DBusObjectTree *tree, return FALSE; } +static size_t +string_array_length (char **array) +{ + size_t i; + for (i = 0; array[i]; i++) ; + return i; +} + + static dbus_bool_t object_tree_test_iteration (void *data) { @@ -1287,6 +1304,46 @@ object_tree_test_iteration (void *data) _dbus_assert (find_handler (tree, path7) != tree->root); _dbus_assert (find_handler (tree, path8) != tree->root); + /* test the list_registered function */ + + { + const char *root[] = { NULL }; + char **child_entries; + int nb; + + _dbus_object_tree_list_registered_unlocked (tree, path1, &child_entries); + if (child_entries != NULL) + { + nb = string_array_length (child_entries); + _dbus_assert (nb == 1); + dbus_free_string_array (child_entries); + } + + _dbus_object_tree_list_registered_unlocked (tree, path2, &child_entries); + if (child_entries != NULL) + { + nb = string_array_length (child_entries); + _dbus_assert (nb == 2); + dbus_free_string_array (child_entries); + } + + _dbus_object_tree_list_registered_unlocked (tree, path8, &child_entries); + if (child_entries != NULL) + { + nb = string_array_length (child_entries); + _dbus_assert (nb == 0); + dbus_free_string_array (child_entries); + } + + _dbus_object_tree_list_registered_unlocked (tree, root, &child_entries); + if (child_entries != NULL) + { + nb = string_array_length (child_entries); + _dbus_assert (nb == 3); + dbus_free_string_array (child_entries); + } + } + /* Check that destroying tree calls unregister funcs */ _dbus_object_tree_unref (tree); |