]>
Commit | Line | Data |
---|---|---|
e82f30d1 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
e82f30d1 LP |
2 | |
3 | #include "alloc-util.h" | |
4 | #include "log.h" | |
5 | #include "specifier.h" | |
6 | #include "string-util.h" | |
7 | #include "strv.h" | |
6d7c4033 | 8 | #include "tests.h" |
e82f30d1 LP |
9 | |
10 | static void test_specifier_escape_one(const char *a, const char *b) { | |
11 | _cleanup_free_ char *x = NULL; | |
12 | ||
13 | x = specifier_escape(a); | |
14 | assert_se(streq_ptr(x, b)); | |
15 | } | |
16 | ||
17 | static void test_specifier_escape(void) { | |
18 | test_specifier_escape_one(NULL, NULL); | |
19 | test_specifier_escape_one("", ""); | |
20 | test_specifier_escape_one("%", "%%"); | |
21 | test_specifier_escape_one("foo bar", "foo bar"); | |
22 | test_specifier_escape_one("foo%bar", "foo%%bar"); | |
23 | test_specifier_escape_one("%%%%%", "%%%%%%%%%%"); | |
24 | } | |
25 | ||
26 | static void test_specifier_escape_strv_one(char **a, char **b) { | |
27 | _cleanup_strv_free_ char **x = NULL; | |
28 | ||
29 | assert_se(specifier_escape_strv(a, &x) >= 0); | |
30 | assert_se(strv_equal(x, b)); | |
31 | } | |
32 | ||
33 | static void test_specifier_escape_strv(void) { | |
34 | test_specifier_escape_strv_one(NULL, NULL); | |
35 | test_specifier_escape_strv_one(STRV_MAKE(NULL), STRV_MAKE(NULL)); | |
36 | test_specifier_escape_strv_one(STRV_MAKE(""), STRV_MAKE("")); | |
37 | test_specifier_escape_strv_one(STRV_MAKE("foo"), STRV_MAKE("foo")); | |
38 | test_specifier_escape_strv_one(STRV_MAKE("%"), STRV_MAKE("%%")); | |
39 | test_specifier_escape_strv_one(STRV_MAKE("foo", "%", "foo%", "%foo", "foo%foo", "quux", "%%%"), STRV_MAKE("foo", "%%", "foo%%", "%%foo", "foo%%foo", "quux", "%%%%%%")); | |
40 | } | |
41 | ||
42 | int main(int argc, char *argv[]) { | |
6d7c4033 | 43 | test_setup_logging(LOG_DEBUG); |
e82f30d1 LP |
44 | |
45 | test_specifier_escape(); | |
46 | test_specifier_escape_strv(); | |
47 | ||
48 | return 0; | |
49 | } |