annotate tests/test-rule.c @ 944:d63a360811dd

irccd: add rules
author David Demelier <markand@malikania.fr>
date Fri, 15 Jan 2021 10:38:45 +0100
parents
children 533639ec5e9c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * test-rule.c -- test rule.h functions
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2021 David Demelier <markand@malikania.fr>
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define GREATEST_USE_ABBREVS 0
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <greatest.h>
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <irccd/rule.h>
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <irccd/irccd.h>
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 static void
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 clean(void *udata)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 (void)udata;
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 memset(&irc, 0, sizeof (irc));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 basics_insert(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 struct irc_rule r1 = {0}, r2 = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 irc_rule_add(r1.servers, "s1");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 irc_rule_add(r2.servers, "s2");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
40
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 irc_bot_insert_rule(&r1, 0);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 irc_bot_insert_rule(&r2, 0);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 GREATEST_ASSERT_EQ(2U, irc.rulesz);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 GREATEST_ASSERT(memcmp(&irc.rules[0], &r2, sizeof (r2)) == 0);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 GREATEST_ASSERT(memcmp(&irc.rules[1], &r1, sizeof (r1)) == 0);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 basics_remove(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 struct irc_rule r1 = {0}, r2 = {0}, r3 = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 irc_rule_add(r1.servers, "s1");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 irc_rule_add(r2.servers, "s2");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 irc_rule_add(r3.servers, "s3");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 irc_bot_insert_rule(&r1, -1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 irc_bot_insert_rule(&r2, -1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 irc_bot_insert_rule(&r3, -1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 irc_bot_remove_rule(1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 GREATEST_ASSERT_EQ(2U, irc.rulesz);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 GREATEST_ASSERT(memcmp(&irc.rules[0], &r1, sizeof (r1)) == 0);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 GREATEST_ASSERT(memcmp(&irc.rules[1], &r3, sizeof (r3)) == 0);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 irc_bot_remove_rule(1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 GREATEST_ASSERT_EQ(1U, irc.rulesz);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 GREATEST_ASSERT(memcmp(&irc.rules[0], &r1, sizeof (r1)) == 0);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 irc_bot_remove_rule(0);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 GREATEST_ASSERT_EQ(0U, irc.rulesz);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 /*
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 * Simulate the following rules configuration:
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 *
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 * # On all servers, each channel #staff can't use the onCommand event,
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 * # everything else is allowed.
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 * [rule] #1
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 * servers = ""
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 * channels = "#staff"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 * events = "onCommand"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 * action = drop
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 *
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 * # However, the same onCommand on #staff is allowed on server "unsafe"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 * [rule] #2
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 * servers = "unsafe"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 * channels = "#staff"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 * events = "onCommand"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 * action = accept
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 *
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 * # Plugin game is only allowed on server "malikania" and "localhost",
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 * # channel "#games" and events "onMessage, onCommand".
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 * # The first rule #3-1 disable the plugin game for every server, it is
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 * # reenabled again with the #3-2.
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 * [rule] #3-1
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 * plugins = "game"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 * action = drop
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 *
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 * [rule] #3-2
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 * servers = "malikania localhost"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 * channels = "#games"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 * plugins = "game"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 * events = "onMessage onCommand"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 * action = accept
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 static void
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 set(void *udata)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 (void)udata;
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
123
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 struct irc_rule r1 = {0}, r2 = {0}, r31 = {0}, r32 = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
125
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 /* Deinit irccd first. */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 memset(&irc, 0, sizeof (irc));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
128
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 /* #1 */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 r1.action = IRC_RULE_DROP;
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 irc_rule_add(r1.channels, "#staff");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 irc_rule_add(r1.events, "onCommand");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 irc_bot_insert_rule(&r1, -1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
134
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 /* #2 */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 r2.action = IRC_RULE_ACCEPT;
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 irc_rule_add(r2.servers, "unsafe");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 irc_rule_add(r2.channels, "#staff");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 irc_rule_add(r2.events, "onCommand");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 irc_bot_insert_rule(&r2, -1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
141
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 /* #3-1 */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 r31.action = IRC_RULE_DROP;
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 irc_rule_add(r31.plugins, "game");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 irc_bot_insert_rule(&r31, -1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
146
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 /* #3-2 */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 r32.action = IRC_RULE_ACCEPT;
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 irc_rule_add(r32.servers, "malikania");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 irc_rule_add(r32.servers, "localhost");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 irc_rule_add(r32.channels, "#games");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 irc_rule_add(r32.plugins, "game");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 irc_rule_add(r32.events, "onCommand");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 irc_rule_add(r32.events, "onMessage");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 irc_bot_insert_rule(&r32, -1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 };
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
157
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 solve_match1(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
162
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 GREATEST_ASSERT(irc_rule_match(&m, "freenode", "#test", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 GREATEST_ASSERT(irc_rule_match(&m, "", "", "", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
167
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 solve_match2(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
172
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 irc_rule_add(m.servers, "freenode");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
174
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 GREATEST_ASSERT(irc_rule_match(&m, "FreeNode", "#test", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#test", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 GREATEST_ASSERT(irc_rule_match(&m, "freenode", "", "jean", "", "onMessage"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 solve_match3(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
185
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 irc_rule_add(m.servers, "freenode");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 irc_rule_add(m.channels, "#staff");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 GREATEST_ASSERT(irc_rule_match(&m, "freenode", "#staff", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 GREATEST_ASSERT(!irc_rule_match(&m, "freenode", "#test", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#staff", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
194
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 solve_match4(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
199
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 irc_rule_add(m.servers, "malikania");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 irc_rule_add(m.channels, "#staff");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 irc_rule_add(m.origins, "a");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
203
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 GREATEST_ASSERT(irc_rule_match(&m, "malikania", "#staff", "a", "",""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#staff", "b", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 GREATEST_ASSERT(!irc_rule_match(&m, "freenode", "#staff", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
209
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 solve_match5(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
214
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 irc_rule_add(m.servers, "malikania");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 irc_rule_add(m.servers, "freenode");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
217
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 GREATEST_ASSERT(irc_rule_match(&m, "malikania", "", "", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 GREATEST_ASSERT(irc_rule_match(&m, "freenode", "", "", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 GREATEST_ASSERT(!irc_rule_match(&m, "no", "", "", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
223
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 solve_match6(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
228
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 irc_rule_add(m.servers, "malikania");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 irc_rule_add(m.origins, "markand");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
231
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 GREATEST_ASSERT(irc_rule_match(&m, "malikania", "#staff", "markand", "system", "onCommand"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#staff", "", "system", "onNames"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#staff", "jean", "system", "onMessage"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
237
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 solve_match7(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 /* Allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, irc.rulesz, "malikania", "#staff", "", "a", "onMessage"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
243
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 /* Allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, irc.rulesz, "freenode", "#staff", "", "b", "onTopic"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
246
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 /* Not allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, irc.rulesz, "malikania", "#staff", "", "", "onCommand"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
249
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 /* Not allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, irc.rulesz, "freenode", "#staff", "", "c", "onCommand"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
252
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 /* Allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, irc.rulesz, "unsafe", "#staff", "", "c", "onCommand"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
255
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
258
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 solve_match8(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 /* Allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, irc.rulesz, "malikania", "#games", "", "game", "onMessage"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
264
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 /* Allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, irc.rulesz, "localhost", "#games", "", "game", "onMessage"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
267
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 /* Allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, irc.rulesz, "malikania", "#games", "", "game", "onCommand"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
270
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 /* Not allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, irc.rulesz, "malikania", "#games", "", "game", "onQuery"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
273
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 /* Not allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, irc.rulesz, "freenode", "#no", "", "game", "onMessage"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
276
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 /* Not allowed */
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, irc.rulesz, "malikania", "#test", "", "game", "onMessage"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
279 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
280 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
281
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
282 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 solve_match9(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, irc.rulesz, "MALIKANIA", "#STAFF", "", "SYSTEM", "onCommand"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
288
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 GREATEST_SUITE(suite_basics)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 GREATEST_SET_SETUP_CB(clean, NULL);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 GREATEST_RUN_TEST(basics_insert);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 GREATEST_RUN_TEST(basics_remove);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
295
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 GREATEST_SUITE(suite_solve)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 GREATEST_SET_SETUP_CB(set, NULL);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 GREATEST_RUN_TEST(solve_match1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
300 GREATEST_RUN_TEST(solve_match2);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 GREATEST_RUN_TEST(solve_match3);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 GREATEST_RUN_TEST(solve_match4);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 GREATEST_RUN_TEST(solve_match5);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
304 GREATEST_RUN_TEST(solve_match6);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 GREATEST_RUN_TEST(solve_match7);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 GREATEST_RUN_TEST(solve_match8);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
307 GREATEST_RUN_TEST(solve_match9);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
308 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
309
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 GREATEST_MAIN_DEFS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
311
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 int
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 main(int argc, char **argv)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 GREATEST_MAIN_BEGIN();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 GREATEST_RUN_SUITE(suite_basics);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 GREATEST_RUN_SUITE(suite_solve);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 GREATEST_MAIN_END();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
319
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 return 0;
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
321 }