mirror of
https://github.com/systemd/systemd.git
synced 2025-01-13 17:18:18 +03:00
basic/strv: add STRPTR_IN_SET
Also some trivial tests for STR_IN_SET and STRPTR_IN_SET.
This commit is contained in:
parent
72240b52f1
commit
c7bf9d5183
@ -141,6 +141,11 @@ void strv_print(char **l);
|
||||
})
|
||||
|
||||
#define STR_IN_SET(x, ...) strv_contains(STRV_MAKE(__VA_ARGS__), x)
|
||||
#define STRPTR_IN_SET(x, ...) \
|
||||
({ \
|
||||
const char* _x = (x); \
|
||||
_x && strv_contains(STRV_MAKE(__VA_ARGS__), _x); \
|
||||
})
|
||||
|
||||
#define FOREACH_STRING(x, ...) \
|
||||
for (char **_l = ({ \
|
||||
|
@ -54,6 +54,25 @@ static void test_specifier_printf(void) {
|
||||
puts(w);
|
||||
}
|
||||
|
||||
static void test_str_in_set(void) {
|
||||
assert_se(STR_IN_SET("x", "x", "y", "z"));
|
||||
assert_se(!STR_IN_SET("X", "x", "y", "z"));
|
||||
assert_se(!STR_IN_SET("", "x", "y", "z"));
|
||||
assert_se(STR_IN_SET("x", "w", "x"));
|
||||
}
|
||||
|
||||
static void test_strptr_in_set(void) {
|
||||
assert_se(STRPTR_IN_SET("x", "x", "y", "z"));
|
||||
assert_se(!STRPTR_IN_SET("X", "x", "y", "z"));
|
||||
assert_se(!STRPTR_IN_SET("", "x", "y", "z"));
|
||||
assert_se(STRPTR_IN_SET("x", "w", "x"));
|
||||
|
||||
assert_se(!STRPTR_IN_SET(NULL, "x", "y", "z"));
|
||||
assert_se(!STRPTR_IN_SET(NULL, ""));
|
||||
/* strv cannot contain a null, hence the result below */
|
||||
assert_se(!STRPTR_IN_SET(NULL, NULL));
|
||||
}
|
||||
|
||||
static const char* const input_table_multiple[] = {
|
||||
"one",
|
||||
"two",
|
||||
@ -703,6 +722,8 @@ static void test_strv_fnmatch(void) {
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
test_specifier_printf();
|
||||
test_str_in_set();
|
||||
test_strptr_in_set();
|
||||
test_strv_foreach();
|
||||
test_strv_foreach_backwards();
|
||||
test_strv_foreach_pair();
|
||||
|
Loading…
Reference in New Issue
Block a user