chiark / gitweb /
bus: unify code to find parents of an object path with
[elogind.git] / src / libsystemd-bus / test-bus-signature.c
index c4304697f036864f716df1249188028b597d3738..3fc565c6208a6ca17364787f07f72f006ffdb504 100644 (file)
@@ -27,6 +27,8 @@
 #include "bus-internal.h"
 
 int main(int argc, char *argv[]) {
+        char prefix[256];
+        int r;
 
         assert_se(signature_is_single("y", false));
         assert_se(signature_is_single("u", false));
@@ -133,5 +135,29 @@ int main(int argc, char *argv[]) {
         assert_se(!object_path_is_valid("/foo//bar"));
         assert_se(!object_path_is_valid("/foo/aaaäöä"));
 
+        OBJECT_PATH_FOREACH_PREFIX(prefix, "/") {
+                log_info("<%s>", prefix);
+                assert_not_reached("???");
+        }
+
+        r = 0;
+        OBJECT_PATH_FOREACH_PREFIX(prefix, "/xxx") {
+                log_info("<%s>", prefix);
+                assert_se(streq(prefix, "/"));
+                assert_se(r == 0);
+                r++;
+        }
+        assert_se(r == 1);
+
+        r = 0;
+        OBJECT_PATH_FOREACH_PREFIX(prefix, "/xxx/yyy/zzz") {
+                log_info("<%s>", prefix);
+                assert_se(r != 0 || streq(prefix, "/xxx/yyy"));
+                assert_se(r != 1 || streq(prefix, "/xxx"));
+                assert_se(r != 2 || streq(prefix, "/"));
+                r++;
+        }
+        assert_se(r == 3);
+
         return 0;
 }