basic/strv: add STRPTR_IN_SET

Also some trivial tests for STR_IN_SET and STRPTR_IN_SET.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2016-09-24 20:13:28 -04:00
parent 72240b52f1
commit c7bf9d5183
2 changed files with 26 additions and 0 deletions

View file

@ -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 = ({ \

View file

@ -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();