X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Ftest-bus-signature.c;h=3fc565c6208a6ca17364787f07f72f006ffdb504;hb=77b421d0503f6654fec9760ca159d8815b457f9b;hp=cab0daa77e1a4d3fcb1568afb1ad8b400cfa243c;hpb=392d5b378ceae5e1fd7c91ca545fcf4cd105744a;p=elogind.git diff --git a/src/libsystemd-bus/test-bus-signature.c b/src/libsystemd-bus/test-bus-signature.c index cab0daa77..3fc565c62 100644 --- a/src/libsystemd-bus/test-bus-signature.c +++ b/src/libsystemd-bus/test-bus-signature.c @@ -27,30 +27,33 @@ #include "bus-internal.h" int main(int argc, char *argv[]) { - - assert_se(signature_is_single("y")); - assert_se(signature_is_single("u")); - assert_se(signature_is_single("v")); - assert_se(signature_is_single("as")); - assert_se(signature_is_single("(ss)")); - assert_se(signature_is_single("()")); - assert_se(signature_is_single("(()()()()())")); - assert_se(signature_is_single("(((())))")); - assert_se(signature_is_single("((((s))))")); - assert_se(signature_is_single("{ss}")); - assert_se(signature_is_single("a{ss}")); - assert_se(!signature_is_single("uu")); - assert_se(!signature_is_single("")); - assert_se(!signature_is_single("(")); - assert_se(!signature_is_single(")")); - assert_se(!signature_is_single("())")); - assert_se(!signature_is_single("((())")); - assert_se(!signature_is_single("{)")); - assert_se(!signature_is_single("{}")); - assert_se(!signature_is_single("{sss}")); - assert_se(!signature_is_single("{s}")); - assert_se(!signature_is_single("{ass}")); - assert_se(!signature_is_single("a}")); + char prefix[256]; + int r; + + assert_se(signature_is_single("y", false)); + assert_se(signature_is_single("u", false)); + assert_se(signature_is_single("v", false)); + assert_se(signature_is_single("as", false)); + assert_se(signature_is_single("(ss)", false)); + assert_se(signature_is_single("()", false)); + assert_se(signature_is_single("(()()()()())", false)); + assert_se(signature_is_single("(((())))", false)); + assert_se(signature_is_single("((((s))))", false)); + assert_se(signature_is_single("{ss}", true)); + assert_se(signature_is_single("a{ss}", false)); + assert_se(!signature_is_single("uu", false)); + assert_se(!signature_is_single("", false)); + assert_se(!signature_is_single("(", false)); + assert_se(!signature_is_single(")", false)); + assert_se(!signature_is_single("())", false)); + assert_se(!signature_is_single("((())", false)); + assert_se(!signature_is_single("{)", false)); + assert_se(!signature_is_single("{}", true)); + assert_se(!signature_is_single("{sss}", true)); + assert_se(!signature_is_single("{s}", true)); + assert_se(!signature_is_single("{ss}", false)); + assert_se(!signature_is_single("{ass}", true)); + assert_se(!signature_is_single("a}", true)); assert_se(signature_is_pair("yy")); assert_se(signature_is_pair("ss")); @@ -112,5 +115,49 @@ int main(int argc, char *argv[]) { assert_se(!namespace_simple_pattern("", "foo")); assert_se(!namespace_simple_pattern("foo", "")); + assert_se(streq(object_path_startswith("/foo/bar", "/foo"), "bar")); + assert_se(streq(object_path_startswith("/foo", "/foo"), "")); + assert_se(streq(object_path_startswith("/foo", "/"), "foo")); + assert_se(streq(object_path_startswith("/", "/"), "")); + assert_se(!object_path_startswith("/foo", "/bar")); + assert_se(!object_path_startswith("/", "/bar")); + assert_se(!object_path_startswith("/foo", "")); + + assert_se(object_path_is_valid("/foo/bar")); + assert_se(object_path_is_valid("/foo")); + assert_se(object_path_is_valid("/")); + assert_se(object_path_is_valid("/foo5")); + assert_se(object_path_is_valid("/foo_5")); + assert_se(!object_path_is_valid("")); + assert_se(!object_path_is_valid("/foo/")); + assert_se(!object_path_is_valid("//")); + assert_se(!object_path_is_valid("//foo")); + 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; }