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