]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-specifier.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 Copyright 2017 Lennart Poettering
6 #include "alloc-util.h"
9 #include "string-util.h"
12 static void test_specifier_escape_one(const char *a
, const char *b
) {
13 _cleanup_free_
char *x
= NULL
;
15 x
= specifier_escape(a
);
16 assert_se(streq_ptr(x
, b
));
19 static void test_specifier_escape(void) {
20 test_specifier_escape_one(NULL
, NULL
);
21 test_specifier_escape_one("", "");
22 test_specifier_escape_one("%", "%%");
23 test_specifier_escape_one("foo bar", "foo bar");
24 test_specifier_escape_one("foo%bar", "foo%%bar");
25 test_specifier_escape_one("%%%%%", "%%%%%%%%%%");
28 static void test_specifier_escape_strv_one(char **a
, char **b
) {
29 _cleanup_strv_free_
char **x
= NULL
;
31 assert_se(specifier_escape_strv(a
, &x
) >= 0);
32 assert_se(strv_equal(x
, b
));
35 static void test_specifier_escape_strv(void) {
36 test_specifier_escape_strv_one(NULL
, NULL
);
37 test_specifier_escape_strv_one(STRV_MAKE(NULL
), STRV_MAKE(NULL
));
38 test_specifier_escape_strv_one(STRV_MAKE(""), STRV_MAKE(""));
39 test_specifier_escape_strv_one(STRV_MAKE("foo"), STRV_MAKE("foo"));
40 test_specifier_escape_strv_one(STRV_MAKE("%"), STRV_MAKE("%%"));
41 test_specifier_escape_strv_one(STRV_MAKE("foo", "%", "foo%", "%foo", "foo%foo", "quux", "%%%"), STRV_MAKE("foo", "%%", "foo%%", "%%foo", "foo%%foo", "quux", "%%%%%%"));
44 int main(int argc
, char *argv
[]) {
45 log_set_max_level(LOG_DEBUG
);
47 test_specifier_escape();
48 test_specifier_escape_strv();