annotate tests/test-rule.c @ 1143:c421701054d4 release-4.0 4.0.0

irccd: fix usage
author David Demelier <markand@malikania.fr>
date Thu, 03 Feb 2022 13:15:12 +0100
parents f06e9761cc90
children 1845a0509a93
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 *
1136
f06e9761cc90 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 1099
diff changeset
4 * Copyright (c) 2013-2022 David Demelier <markand@malikania.fr>
944
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
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
30 irc_bot_rule_clear();
944
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 {
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
36 struct irc_rule *r, *r1, *r2;
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
38 r1 = irc_rule_new(IRC_RULE_DROP);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
39 r2 = irc_rule_new(IRC_RULE_DROP);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
40
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
41 irc_rule_add(r1->servers, "s1");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
42 irc_rule_add(r2->servers, "s2");
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
44 irc_bot_rule_insert(r1, 0);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
45 irc_bot_rule_insert(r2, 0);
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
47 r = irc.rules;
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
48 GREATEST_ASSERT_EQ(r2, r);
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
49 r = r->next;
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
50 GREATEST_ASSERT_EQ(r1, r);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
51
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 }
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 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 basics_remove(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 {
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
58 struct irc_rule *r, *r1, *r2, *r3;
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
60 r1 = irc_rule_new(IRC_RULE_DROP);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
61 r2 = irc_rule_new(IRC_RULE_DROP);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
62 r3 = irc_rule_new(IRC_RULE_DROP);
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
64 irc_rule_add(r1->servers, "s1");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
65 irc_rule_add(r2->servers, "s2");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
66 irc_rule_add(r3->servers, "s3");
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
68 irc_bot_rule_insert(r1, -1);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
69 irc_bot_rule_insert(r2, -1);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
70 irc_bot_rule_insert(r3, -1);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
71 irc_bot_rule_remove(1);
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
73 r = irc.rules;
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
74 GREATEST_ASSERT_EQ(r1, r);
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
75 r = r->next;
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
76 GREATEST_ASSERT_EQ(r3, r);
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
78 irc_bot_rule_remove(1);
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
79 r = irc.rules;
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
80 GREATEST_ASSERT_EQ(r1, r);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
81
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
82 irc_bot_rule_remove(0);
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
83 r = irc.rules;
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
84 GREATEST_ASSERT(!r);
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
85
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 /*
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 * Simulate the following rules configuration:
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 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 * # On all servers, each channel #staff can't use the onCommand event,
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 * # everything else is allowed.
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 * [rule] #1
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 * servers = ""
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 * channels = "#staff"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 * events = "onCommand"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 * action = drop
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 *
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 * # However, the same onCommand on #staff is allowed on server "unsafe"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 * [rule] #2
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 * servers = "unsafe"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 * channels = "#staff"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 * events = "onCommand"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 * action = accept
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 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 * # Plugin game is only allowed on server "malikania" and "localhost",
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 * # channel "#games" and events "onMessage, onCommand".
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 * #
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 * # 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
116 * # reenabled again with the #3-2.
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 * [rule] #3-1
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 * plugins = "game"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 * action = drop
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 * [rule] #3-2
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 * servers = "malikania localhost"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 * channels = "#games"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 * plugins = "game"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 * events = "onMessage onCommand"
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 * action = accept
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
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 static void
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 set(void *udata)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 (void)udata;
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
134
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
135 struct irc_rule *r1, *r2, *r31, *r32;
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
137 irc_bot_rule_clear();
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
138
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 /* #1 */
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
140 r1 = irc_rule_new(IRC_RULE_DROP);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
141 irc_rule_add(r1->channels, "#staff");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
142 irc_rule_add(r1->events, "onCommand");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
143 irc_bot_rule_insert(r1, -1);
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 /* #2 */
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
146 r2 = irc_rule_new(IRC_RULE_ACCEPT);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
147 irc_rule_add(r2->servers, "unsafe");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
148 irc_rule_add(r2->channels, "#staff");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
149 irc_rule_add(r2->events, "onCommand");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
150 irc_bot_rule_insert(r2, -1);
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
151
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 /* #3-1 */
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
153 r31 = irc_rule_new(IRC_RULE_DROP);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
154 irc_rule_add(r31->plugins, "game");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
155 irc_bot_rule_insert(r31, -1);
944
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 /* #3-2 */
958
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
158 r32 = irc_rule_new(IRC_RULE_ACCEPT);
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
159 irc_rule_add(r32->servers, "malikania");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
160 irc_rule_add(r32->servers, "localhost");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
161 irc_rule_add(r32->channels, "#games");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
162 irc_rule_add(r32->plugins, "game");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
163 irc_rule_add(r32->events, "onCommand");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
164 irc_rule_add(r32->events, "onMessage");
533639ec5e9c misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents: 944
diff changeset
165 irc_bot_rule_insert(r32, -1);
1099
2c0eea3af7df misc: be more pedantic
David Demelier <markand@malikania.fr>
parents: 1071
diff changeset
166 }
944
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_match1(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 GREATEST_ASSERT(irc_rule_match(&m, "freenode", "#test", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 GREATEST_ASSERT(irc_rule_match(&m, "", "", "", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
177
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 solve_match2(void)
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 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
182
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 irc_rule_add(m.servers, "freenode");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
184
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 GREATEST_ASSERT(irc_rule_match(&m, "FreeNode", "#test", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#test", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 GREATEST_ASSERT(irc_rule_match(&m, "freenode", "", "jean", "", "onMessage"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
190
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 solve_match3(void)
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 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
195
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 irc_rule_add(m.servers, "freenode");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 irc_rule_add(m.channels, "#staff");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
198
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 GREATEST_ASSERT(irc_rule_match(&m, "freenode", "#staff", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 GREATEST_ASSERT(!irc_rule_match(&m, "freenode", "#test", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#staff", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 GREATEST_PASS();
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
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 solve_match4(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 struct irc_rule m = {0};
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 irc_rule_add(m.servers, "malikania");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 irc_rule_add(m.channels, "#staff");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 irc_rule_add(m.origins, "a");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
213
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 GREATEST_ASSERT(irc_rule_match(&m, "malikania", "#staff", "a", "",""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#staff", "b", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 GREATEST_ASSERT(!irc_rule_match(&m, "freenode", "#staff", "a", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
219
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 solve_match5(void)
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 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
224
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 irc_rule_add(m.servers, "malikania");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 irc_rule_add(m.servers, "freenode");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
227
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 GREATEST_ASSERT(irc_rule_match(&m, "malikania", "", "", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 GREATEST_ASSERT(irc_rule_match(&m, "freenode", "", "", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 GREATEST_ASSERT(!irc_rule_match(&m, "no", "", "", "", ""));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 GREATEST_PASS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
233
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 solve_match6(void)
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 struct irc_rule m = {0};
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
238
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 irc_rule_add(m.servers, "malikania");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 irc_rule_add(m.origins, "markand");
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
241
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 GREATEST_ASSERT(irc_rule_match(&m, "malikania", "#staff", "markand", "system", "onCommand"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#staff", "", "system", "onNames"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 GREATEST_ASSERT(!irc_rule_match(&m, "malikania", "#staff", "jean", "system", "onMessage"));
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 GREATEST_PASS();
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
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 solve_match7(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 /* Allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
252 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "malikania", "#staff", "", "a", "onMessage"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
253
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 /* Allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
255 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "freenode", "#staff", "", "b", "onTopic"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
256
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 /* Not allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
258 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "malikania", "#staff", "", "", "onCommand"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
259
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 /* Not allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
261 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "freenode", "#staff", "", "c", "onCommand"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
262
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 /* Allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
264 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "unsafe", "#staff", "", "c", "onCommand"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
265
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 GREATEST_PASS();
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
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 solve_match8(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 /* Allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
273 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "malikania", "#games", "", "game", "onMessage"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
274
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 /* Allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
276 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "localhost", "#games", "", "game", "onMessage"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
277
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 /* Allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
279 GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "malikania", "#games", "", "game", "onCommand"));
944
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 /* Not allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
282 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "malikania", "#games", "", "game", "onQuery"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
283
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 /* Not allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
285 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "freenode", "#no", "", "game", "onMessage"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
286
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 /* Not allowed */
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
288 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "malikania", "#test", "", "game", "onMessage"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 GREATEST_PASS();
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
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 GREATEST_TEST
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 solve_match9(void)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 {
1071
e9b35306f376 misc: remove usage of BSD sys/queue.h (rule)
David Demelier <markand@malikania.fr>
parents: 958
diff changeset
295 GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "MALIKANIA", "#STAFF", "", "SYSTEM", "onCommand"));
944
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 GREATEST_PASS();
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
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 GREATEST_SUITE(suite_basics)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
300 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 GREATEST_SET_SETUP_CB(clean, NULL);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 GREATEST_RUN_TEST(basics_insert);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 GREATEST_RUN_TEST(basics_remove);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
304 }
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
305
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 GREATEST_SUITE(suite_solve)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
307 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
308 GREATEST_SET_SETUP_CB(set, NULL);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
309 GREATEST_RUN_TEST(solve_match1);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 GREATEST_RUN_TEST(solve_match2);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
311 GREATEST_RUN_TEST(solve_match3);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 GREATEST_RUN_TEST(solve_match4);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 GREATEST_RUN_TEST(solve_match5);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 GREATEST_RUN_TEST(solve_match6);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 GREATEST_RUN_TEST(solve_match7);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 GREATEST_RUN_TEST(solve_match8);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 GREATEST_RUN_TEST(solve_match9);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 }
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 GREATEST_MAIN_DEFS();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
321
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
322 int
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 main(int argc, char **argv)
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
324 {
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 GREATEST_MAIN_BEGIN();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
326 GREATEST_RUN_SUITE(suite_basics);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
327 GREATEST_RUN_SUITE(suite_solve);
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
328 GREATEST_MAIN_END();
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
329
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
330 return 0;
d63a360811dd irccd: add rules
David Demelier <markand@malikania.fr>
parents:
diff changeset
331 }