1 /* Copyright (c) 2014-2018 Dovecot authors, see the included COPYING file */
2
3 #include "test-lib.h"
4 #include "wildcard-match.h"
5
6 static const struct {
7 const char *data;
8 const char *mask;
9 bool result;
10 } tests[] = {
11 { "foo", "*", TRUE },
12 { "foo", "*foo*", TRUE },
13 { "foo", "foo", TRUE },
14 { "foo", "f*o*o", TRUE },
15 { "foo", "f??", TRUE },
16 { "foo", "f?o", TRUE },
17 { "foo", "*??", TRUE },
18 { "foo", "???", TRUE },
19 { "foo", "f??*", TRUE },
20 { "foo", "???*", TRUE },
21
22 { "foo", "", FALSE },
23 { "foo", "f", FALSE },
24 { "foo", "fo", FALSE },
25 { "foo", "fooo", FALSE },
26 { "foo", "????", FALSE },
27 { "foo", "f*o*o*o", FALSE },
28 { "foo", "f???*", FALSE },
29
30 { "*foo", "foo", FALSE },
31 { "foo*", "foo", FALSE },
32 { "*foo*", "foo", FALSE },
33
34 { "", "*", TRUE },
35 { "", "", TRUE },
36 { "", "?", FALSE }
37 };
38
test_wildcard_match(void)39 void test_wildcard_match(void)
40 {
41 unsigned int i;
42
43 test_begin("wildcard_match()");
44 for (i = 0; i < N_ELEMENTS(tests); i++) {
45 test_assert_idx(wildcard_match(tests[i].data, tests[i].mask) == tests[i].result, i);
46 }
47 test_end();
48 }
49