Mercurial > irccd
comparison tests/test-plugin-hangman.c @ 1011:a35537c50f09
irccd: hide conn implementation
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 17 Feb 2021 20:05:00 +0100 |
parents | 0d71bfa6c97a |
children | 8f8ce47aba8a |
comparison
equal
deleted
inserted
replaced
1010:d1ec9b99b580 | 1011:a35537c50f09 |
---|---|
20 | 20 |
21 #define GREATEST_USE_ABBREVS 0 | 21 #define GREATEST_USE_ABBREVS 0 |
22 #include <greatest.h> | 22 #include <greatest.h> |
23 | 23 |
24 #include <irccd/compat.h> | 24 #include <irccd/compat.h> |
25 #include <irccd/conn.h> | |
25 #include <irccd/js-plugin.h> | 26 #include <irccd/js-plugin.h> |
26 #include <irccd/log.h> | 27 #include <irccd/log.h> |
27 #include <irccd/plugin.h> | 28 #include <irccd/plugin.h> |
28 #include <irccd/server.h> | 29 #include <irccd/server.h> |
29 | 30 |
30 #define CALL(t, m) do { \ | 31 #define CALL(t, m) do { \ |
31 memset(server->conn.out, 0, sizeof (server->conn.out)); \ | 32 memset(server->conn->out, 0, sizeof (server->conn->out)); \ |
32 irc_plugin_handle(plugin, &(const struct irc_event) { \ | 33 irc_plugin_handle(plugin, &(const struct irc_event) { \ |
33 .type = t, \ | 34 .type = t, \ |
34 .server = server, \ | 35 .server = server, \ |
35 .message = { \ | 36 .message = { \ |
36 .origin = "jean!jean@localhost", \ | 37 .origin = "jean!jean@localhost", \ |
37 .channel = "#hangman", \ | 38 .channel = "#hangman", \ |
38 .message = m \ | 39 .message = m \ |
39 } \ | 40 } \ |
40 }); \ | 41 }); \ |
41 } while (0) | 42 } while (0) |
42 | 43 |
43 #define CALL_EX(t, o, c, m) do { \ | 44 #define CALL_EX(t, o, c, m) do { \ |
44 memset(server->conn.out, 0, sizeof (server->conn.out)); \ | 45 memset(server->conn->out, 0, sizeof (server->conn->out)); \ |
45 irc_plugin_handle(plugin, &(const struct irc_event) { \ | 46 irc_plugin_handle(plugin, &(const struct irc_event) { \ |
46 .type = t, \ | 47 .type = t, \ |
47 .server = server, \ | 48 .server = server, \ |
48 .message = { \ | 49 .message = { \ |
49 .origin = o, \ | 50 .origin = o, \ |
50 .channel = c, \ | 51 .channel = c, \ |
51 .message = m \ | 52 .message = m \ |
52 } \ | 53 } \ |
53 }); \ | 54 }); \ |
54 } while (0) | 55 } while (0) |
55 | 56 |
56 static struct irc_server *server; | 57 static struct irc_server *server; |
57 static struct irc_plugin *plugin; | 58 static struct irc_plugin *plugin; |
58 | 59 |
97 | 98 |
98 GREATEST_TEST | 99 GREATEST_TEST |
99 basics_asked(void) | 100 basics_asked(void) |
100 { | 101 { |
101 CALL(IRC_EVENT_COMMAND, ""); | 102 CALL(IRC_EVENT_COMMAND, ""); |
102 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _\r\n", server->conn.out); | 103 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _\r\n", server->conn->out); |
103 | 104 |
104 CALL(IRC_EVENT_MESSAGE, "s"); | 105 CALL(IRC_EVENT_MESSAGE, "s"); |
105 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _\r\n", server->conn.out); | 106 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _\r\n", server->conn->out); |
106 | 107 |
107 CALL(IRC_EVENT_MESSAGE, "s"); | 108 CALL(IRC_EVENT_MESSAGE, "s"); |
108 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :asked=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s\r\n", server->conn.out); | 109 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :asked=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s\r\n", server->conn->out); |
109 GREATEST_PASS(); | 110 GREATEST_PASS(); |
110 } | 111 } |
111 | 112 |
112 GREATEST_TEST | 113 GREATEST_TEST |
113 basics_dead(void) | 114 basics_dead(void) |
121 CALL(IRC_EVENT_MESSAGE, "f"); | 122 CALL(IRC_EVENT_MESSAGE, "f"); |
122 CALL(IRC_EVENT_MESSAGE, "g"); | 123 CALL(IRC_EVENT_MESSAGE, "g"); |
123 CALL(IRC_EVENT_MESSAGE, "h"); | 124 CALL(IRC_EVENT_MESSAGE, "h"); |
124 CALL(IRC_EVENT_MESSAGE, "i"); | 125 CALL(IRC_EVENT_MESSAGE, "i"); |
125 CALL(IRC_EVENT_MESSAGE, "j"); | 126 CALL(IRC_EVENT_MESSAGE, "j"); |
126 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :dead=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky\r\n", server->conn.out); | 127 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :dead=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky\r\n", server->conn->out); |
127 GREATEST_PASS(); | 128 GREATEST_PASS(); |
128 } | 129 } |
129 | 130 |
130 GREATEST_TEST | 131 GREATEST_TEST |
131 basics_found(void) | 132 basics_found(void) |
132 { | 133 { |
133 CALL(IRC_EVENT_COMMAND, ""); | 134 CALL(IRC_EVENT_COMMAND, ""); |
134 CALL(IRC_EVENT_MESSAGE, "s"); | 135 CALL(IRC_EVENT_MESSAGE, "s"); |
135 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _\r\n", server->conn.out); | 136 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _\r\n", server->conn->out); |
136 GREATEST_PASS(); | 137 GREATEST_PASS(); |
137 } | 138 } |
138 | 139 |
139 GREATEST_TEST | 140 GREATEST_TEST |
140 basics_start(void) | 141 basics_start(void) |
141 { | 142 { |
142 CALL(IRC_EVENT_COMMAND, ""); | 143 CALL(IRC_EVENT_COMMAND, ""); |
143 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _\r\n", server->conn.out); | 144 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _\r\n", server->conn->out); |
144 GREATEST_PASS(); | 145 GREATEST_PASS(); |
145 } | 146 } |
146 | 147 |
147 GREATEST_TEST | 148 GREATEST_TEST |
148 basics_win1(void) | 149 basics_win1(void) |
149 { | 150 { |
150 CALL(IRC_EVENT_COMMAND, ""); | 151 CALL(IRC_EVENT_COMMAND, ""); |
151 CALL(IRC_EVENT_MESSAGE, "s"); | 152 CALL(IRC_EVENT_MESSAGE, "s"); |
152 CALL(IRC_EVENT_MESSAGE, "k"); | 153 CALL(IRC_EVENT_MESSAGE, "k"); |
153 CALL(IRC_EVENT_MESSAGE, "y"); | 154 CALL(IRC_EVENT_MESSAGE, "y"); |
154 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky\r\n", server->conn.out); | 155 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky\r\n", server->conn->out); |
155 GREATEST_PASS(); | 156 GREATEST_PASS(); |
156 } | 157 } |
157 | 158 |
158 GREATEST_TEST | 159 GREATEST_TEST |
159 basics_win2(void) | 160 basics_win2(void) |
160 { | 161 { |
161 CALL(IRC_EVENT_COMMAND, ""); | 162 CALL(IRC_EVENT_COMMAND, ""); |
162 CALL(IRC_EVENT_COMMAND, "sky"); | 163 CALL(IRC_EVENT_COMMAND, "sky"); |
163 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky\r\n", server->conn.out); | 164 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky\r\n", server->conn->out); |
164 GREATEST_PASS(); | 165 GREATEST_PASS(); |
165 } | 166 } |
166 | 167 |
167 GREATEST_TEST | 168 GREATEST_TEST |
168 basics_wrong_letter(void) | 169 basics_wrong_letter(void) |
169 { | 170 { |
170 CALL(IRC_EVENT_COMMAND, ""); | 171 CALL(IRC_EVENT_COMMAND, ""); |
171 CALL(IRC_EVENT_MESSAGE, "x"); | 172 CALL(IRC_EVENT_MESSAGE, "x"); |
172 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :wrong-letter=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:x\r\n", server->conn.out); | 173 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :wrong-letter=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:x\r\n", server->conn->out); |
173 GREATEST_PASS(); | 174 GREATEST_PASS(); |
174 } | 175 } |
175 | 176 |
176 GREATEST_TEST | 177 GREATEST_TEST |
177 basics_wrong_word(void) | 178 basics_wrong_word(void) |
178 { | 179 { |
179 CALL(IRC_EVENT_COMMAND, ""); | 180 CALL(IRC_EVENT_COMMAND, ""); |
180 CALL(IRC_EVENT_COMMAND, "cheese"); | 181 CALL(IRC_EVENT_COMMAND, "cheese"); |
181 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :wrong-word=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:cheese\r\n", server->conn.out); | 182 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :wrong-word=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:cheese\r\n", server->conn->out); |
182 GREATEST_PASS(); | 183 GREATEST_PASS(); |
183 } | 184 } |
184 | 185 |
185 GREATEST_TEST | 186 GREATEST_TEST |
186 basics_collaborative_enabled(void) | 187 basics_collaborative_enabled(void) |
190 CALL(IRC_EVENT_COMMAND, ""); | 191 CALL(IRC_EVENT_COMMAND, ""); |
191 CALL(IRC_EVENT_MESSAGE, "s"); | 192 CALL(IRC_EVENT_MESSAGE, "s"); |
192 | 193 |
193 /* Forbidden to play twice. */ | 194 /* Forbidden to play twice. */ |
194 CALL(IRC_EVENT_MESSAGE, "k"); | 195 CALL(IRC_EVENT_MESSAGE, "k"); |
195 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k\r\n", server->conn.out); | 196 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k\r\n", server->conn->out); |
196 | 197 |
197 /* Use a different nickname now. */ | 198 /* Use a different nickname now. */ |
198 CALL_EX(IRC_EVENT_MESSAGE, "francis!francis@localhost", "#hangman", "k"); | 199 CALL_EX(IRC_EVENT_MESSAGE, "francis!francis@localhost", "#hangman", "k"); |
199 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _\r\n", server->conn.out); | 200 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _\r\n", server->conn->out); |
200 | 201 |
201 GREATEST_PASS(); | 202 GREATEST_PASS(); |
202 } | 203 } |
203 | 204 |
204 GREATEST_TEST | 205 GREATEST_TEST |
205 basics_case_insensitive(void) | 206 basics_case_insensitive(void) |
206 { | 207 { |
207 CALL_EX(IRC_EVENT_COMMAND, "jean!jean@localhost", "#hangman", ""); | 208 CALL_EX(IRC_EVENT_COMMAND, "jean!jean@localhost", "#hangman", ""); |
208 | 209 |
209 CALL_EX(IRC_EVENT_MESSAGE, "jean!jean@localhost", "#HANGMAN", "s"); | 210 CALL_EX(IRC_EVENT_MESSAGE, "jean!jean@localhost", "#HANGMAN", "s"); |
210 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _\r\n", server->conn.out); | 211 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _\r\n", server->conn->out); |
211 | 212 |
212 CALL_EX(IRC_EVENT_MESSAGE, "jean!jean@localhost", "#HaNGMaN", "k"); | 213 CALL_EX(IRC_EVENT_MESSAGE, "jean!jean@localhost", "#HaNGMaN", "k"); |
213 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s k _\r\n", server->conn.out); | 214 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s k _\r\n", server->conn->out); |
214 | 215 |
215 GREATEST_PASS(); | 216 GREATEST_PASS(); |
216 } | 217 } |
217 | 218 |
218 GREATEST_TEST | 219 GREATEST_TEST |
223 * only one player against the bot. | 224 * only one player against the bot. |
224 */ | 225 */ |
225 irc_plugin_set_option(plugin, "collaborative", "true"); | 226 irc_plugin_set_option(plugin, "collaborative", "true"); |
226 | 227 |
227 CALL_EX(IRC_EVENT_COMMAND, "jean!jean@localhost", "t", ""); | 228 CALL_EX(IRC_EVENT_COMMAND, "jean!jean@localhost", "t", ""); |
228 GREATEST_ASSERT_STR_EQ("PRIVMSG jean!jean@localhost :start=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:_ _ _\r\n", server->conn.out); | 229 GREATEST_ASSERT_STR_EQ("PRIVMSG jean!jean@localhost :start=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:_ _ _\r\n", server->conn->out); |
229 | 230 |
230 CALL_EX(IRC_EVENT_MESSAGE, "jean!jean@localhost", "t", "s"); | 231 CALL_EX(IRC_EVENT_MESSAGE, "jean!jean@localhost", "t", "s"); |
231 GREATEST_ASSERT_STR_EQ("PRIVMSG jean!jean@localhost :found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s _ _\r\n", server->conn.out); | 232 GREATEST_ASSERT_STR_EQ("PRIVMSG jean!jean@localhost :found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s _ _\r\n", server->conn->out); |
232 | 233 |
233 CALL_EX(IRC_EVENT_MESSAGE, "jean!jean@localhost", "t", "k"); | 234 CALL_EX(IRC_EVENT_MESSAGE, "jean!jean@localhost", "t", "k"); |
234 GREATEST_ASSERT_STR_EQ("PRIVMSG jean!jean@localhost :found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s k _\r\n", server->conn.out); | 235 GREATEST_ASSERT_STR_EQ("PRIVMSG jean!jean@localhost :found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s k _\r\n", server->conn->out); |
235 | 236 |
236 CALL_EX(IRC_EVENT_COMMAND, "jean!jean@localhost", "t", "sky"); | 237 CALL_EX(IRC_EVENT_COMMAND, "jean!jean@localhost", "t", "sky"); |
237 GREATEST_ASSERT_STR_EQ("PRIVMSG jean!jean@localhost :win=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:sky\r\n", server->conn.out); | 238 GREATEST_ASSERT_STR_EQ("PRIVMSG jean!jean@localhost :win=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:sky\r\n", server->conn->out); |
238 | 239 |
239 GREATEST_PASS(); | 240 GREATEST_PASS(); |
240 } | 241 } |
241 | 242 |
242 GREATEST_TEST | 243 GREATEST_TEST |
243 basics_running(void) | 244 basics_running(void) |
244 { | 245 { |
245 CALL(IRC_EVENT_COMMAND, ""); | 246 CALL(IRC_EVENT_COMMAND, ""); |
246 CALL(IRC_EVENT_MESSAGE, "y"); | 247 CALL(IRC_EVENT_MESSAGE, "y"); |
247 CALL(IRC_EVENT_COMMAND, ""); | 248 CALL(IRC_EVENT_COMMAND, ""); |
248 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :running=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ y\r\n", server->conn.out); | 249 GREATEST_ASSERT_STR_EQ("PRIVMSG #hangman :running=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ y\r\n", server->conn->out); |
249 GREATEST_PASS(); | 250 GREATEST_PASS(); |
250 } | 251 } |
251 | 252 |
252 GREATEST_SUITE(suite_basics) | 253 GREATEST_SUITE(suite_basics) |
253 { | 254 { |