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