Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/tests/test-imap.c @ 7325:3bece69a5bfc HEAD
Added more tests to imap_match().
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 03 Mar 2008 06:25:11 +0200 |
parents | ff7b11c64321 |
children | 81c0fe5bd635 |
rev | line source |
---|---|
7313 | 1 /* Copyright (c) 2008 Dovecot authors, see the included COPYING file */ |
2 | |
3 #include "lib.h" | |
4 #include "imap-match.h" | |
5 #include "test-common.h" | |
6 | |
7 struct test_imap_match { | |
8 const char *pattern; | |
9 const char *input; | |
10 enum imap_match_result result; | |
11 }; | |
12 | |
13 static void test_imap_match(void) | |
14 { | |
15 struct test_imap_match test[] = { | |
16 { "", "", IMAP_MATCH_YES }, | |
17 { "a", "b", IMAP_MATCH_NO }, | |
18 { "foo", "foo", IMAP_MATCH_YES }, | |
19 { "foo", "foo/", IMAP_MATCH_PARENT }, | |
20 { "%", "", IMAP_MATCH_YES }, | |
21 { "%", "foo", IMAP_MATCH_YES }, | |
22 { "%", "foo/", IMAP_MATCH_PARENT }, | |
23 { "%/", "foo/", IMAP_MATCH_YES }, | |
24 { "%", "foo/bar", IMAP_MATCH_PARENT }, | |
25 { "%/%", "foo", IMAP_MATCH_CHILDREN }, | |
26 { "%/%", "foo/", IMAP_MATCH_YES }, | |
27 { "foo/bar/%", "foo", IMAP_MATCH_CHILDREN }, | |
28 { "foo/bar/%", "foo/", IMAP_MATCH_CHILDREN }, | |
29 { "foo*", "foo", IMAP_MATCH_YES }, | |
30 { "foo*", "foo/", IMAP_MATCH_YES }, | |
31 { "foo*", "fobo", IMAP_MATCH_NO }, | |
32 { "*foo*", "bar/foo/", IMAP_MATCH_YES }, | |
33 { "*foo*", "fobo", IMAP_MATCH_CHILDREN }, | |
34 { "foo*bar", "foobar/baz", IMAP_MATCH_CHILDREN | IMAP_MATCH_PARENT }, | |
35 { "*foo*", "fobo", IMAP_MATCH_CHILDREN }, | |
7325
3bece69a5bfc
Added more tests to imap_match().
Timo Sirainen <tss@iki.fi>
parents:
7313
diff
changeset
|
36 { "%/%/%", "foo/", IMAP_MATCH_CHILDREN }, |
3bece69a5bfc
Added more tests to imap_match().
Timo Sirainen <tss@iki.fi>
parents:
7313
diff
changeset
|
37 { "%/%o/%", "foo/", IMAP_MATCH_NO }, |
3bece69a5bfc
Added more tests to imap_match().
Timo Sirainen <tss@iki.fi>
parents:
7313
diff
changeset
|
38 { "%/%o/%", "foo", IMAP_MATCH_CHILDREN }, |
7313 | 39 { "inbox", "inbox", IMAP_MATCH_YES }, |
40 { "inbox", "INBOX", IMAP_MATCH_NO } | |
41 }; | |
42 struct test_imap_match inbox_test[] = { | |
43 { "inbox", "inbox", IMAP_MATCH_YES }, | |
44 { "inbox", "iNbOx", IMAP_MATCH_YES }, | |
45 { "i%X", "iNbOx", IMAP_MATCH_YES }, | |
46 { "%I%N%B%O%X%", "inbox", IMAP_MATCH_YES }, | |
47 { "i%X/foo", "iNbOx/foo", IMAP_MATCH_YES }, | |
48 { "%I%N%B%O%X%/foo", "inbox/foo", IMAP_MATCH_YES }, | |
49 { "i%X/foo", "inbx/foo", IMAP_MATCH_NO } | |
50 }; | |
51 struct imap_match_glob *glob; | |
52 unsigned int i; | |
53 enum imap_match_result result; | |
54 | |
55 /* first try tests without inboxcasing */ | |
56 for (i = 0; i < N_ELEMENTS(test); i++) { | |
57 glob = imap_match_init(default_pool, test[i].pattern, | |
58 FALSE, '/'); | |
59 result = imap_match(glob, test[i].input); | |
60 imap_match_deinit(&glob); | |
61 | |
62 test_out(t_strdup_printf("imap_match(%d)", i), | |
63 result == test[i].result); | |
64 } | |
65 | |
66 /* inboxcasing tests */ | |
67 for (i = 0; i < N_ELEMENTS(inbox_test); i++) { | |
68 glob = imap_match_init(default_pool, inbox_test[i].pattern, | |
69 TRUE, '/'); | |
70 result = imap_match(glob, inbox_test[i].input); | |
71 imap_match_deinit(&glob); | |
72 | |
73 test_out(t_strdup_printf("imap_match(inboxcase, %d)", i), | |
74 result == inbox_test[i].result); | |
75 } | |
76 } | |
77 | |
78 int main(void) | |
79 { | |
80 test_init(); | |
81 | |
82 test_imap_match(); | |
83 return test_deinit(); | |
84 } |