]> jfr.im git - solanum.git/blob - tests/send1.c
tests: send1: add missing CAP_SERVER_TIME test to sendto_channel_flags from remote...
[solanum.git] / tests / send1.c
1 /*
2 * send1.c: Test sendto_* under various conditions
3 * Copyright 2017 Simon Arlott
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
18 * USA
19 */
20 #include <stdio.h>
21 #include <string.h>
22 #include <stdlib.h>
23 #include <unistd.h>
24 #include "tap/basic.h"
25
26 #include "ircd_util.h"
27 #include "client_util.h"
28
29 #include "send.h"
30 #include "s_serv.h"
31 #include "monitor.h"
32 #include "s_conf.h"
33
34 #define MSG "%s:%d (%s)", __FILE__, __LINE__, __FUNCTION__
35
36 // What time is it?
37 #define ADVENTURE_TIME "2017-07-14T02:40:00.000Z"
38
39 int rb_gettimeofday(struct timeval *tv, void *tz)
40 {
41 if (tv == NULL) {
42 errno = EFAULT;
43 return -1;
44 }
45 tv->tv_sec = 1500000000;
46 tv->tv_usec = 0;
47 return 0;
48 }
49
50 unsigned int CAP_ACCOUNT_TAG;
51 unsigned int CAP_SERVER_TIME;
52 unsigned int CAP_INVITE_NOTIFY;
53
54 static struct Client *user;
55 static struct Client *server;
56 static struct Client *remote;
57 static struct Client *server2;
58 static struct Client *remote2;
59 static struct Client *server3;
60 static struct Client *remote3;
61 static struct Channel *channel;
62 static struct Channel *lchannel;
63
64 static struct Client *local_chan_o;
65 static struct Client *local_chan_ov;
66 static struct Client *local_chan_v;
67 static struct Client *local_chan_p;
68 static struct Client *local_chan_d;
69 static struct Client *local_no_chan;
70
71 static struct Client *remote_chan_o;
72 static struct Client *remote_chan_ov;
73 static struct Client *remote_chan_v;
74 static struct Client *remote_chan_p;
75 static struct Client *remote_chan_d;
76
77 static struct Client *remote2_chan_p;
78 static struct Client *remote2_chan_d;
79
80 static void standard_init(void)
81 {
82 user = make_local_person();
83 server = make_remote_server(&me);
84 remote = make_remote_person(server);
85 server2 = make_remote_server_name(&me, TEST_SERVER2_NAME);
86 remote2 = make_remote_person_nick(server2, TEST_REMOTE2_NICK);
87 server3 = make_remote_server_name(&me, TEST_SERVER3_NAME);
88 remote3 = make_remote_person_nick(server3, TEST_REMOTE3_NICK);
89
90 // Expose potential bugs in overlapping capabilities
91 server->localClient->caps |= CAP_ACCOUNT_TAG;
92 server->localClient->caps |= CAP_SERVER_TIME;
93 server2->localClient->caps |= CAP_ACCOUNT_TAG;
94 server2->localClient->caps |= CAP_SERVER_TIME;
95 server3->localClient->caps |= CAP_ACCOUNT_TAG;
96 server3->localClient->caps |= CAP_SERVER_TIME;
97
98 local_chan_o = make_local_person_nick("LChanOp");
99 local_chan_ov = make_local_person_nick("LChanOpVoice");
100 local_chan_v = make_local_person_nick("LChanVoice");
101 local_chan_p = make_local_person_nick("LChanPeon");
102 local_chan_d = make_local_person_nick("LChanDeaf");
103 local_chan_d->umodes |= UMODE_DEAF;
104 local_no_chan = make_local_person_nick("LNoChan");
105
106 remote_chan_o = make_remote_person_nick(server, "RChanOp");
107 remote_chan_ov = make_remote_person_nick(server, "RChanOpVoice");
108 remote_chan_v = make_remote_person_nick(server, "RChanVoice");
109 remote_chan_p = make_remote_person_nick(server, "RChanPeon");
110 remote_chan_d = make_remote_person_nick(server, "RChanDeaf");
111 remote_chan_d->umodes |= UMODE_DEAF;
112
113 remote2_chan_p = make_remote_person_nick(server2, "R2ChanPeon");
114 remote2_chan_d = make_remote_person_nick(server2, "R2ChanDeaf");
115 remote2_chan_d->umodes |= UMODE_DEAF;
116
117 channel = make_channel();
118
119 add_user_to_channel(channel, local_chan_o, CHFL_CHANOP);
120 add_user_to_channel(channel, local_chan_ov, CHFL_CHANOP | CHFL_VOICE);
121 add_user_to_channel(channel, local_chan_v, CHFL_VOICE);
122 add_user_to_channel(channel, local_chan_p, CHFL_PEON);
123 add_user_to_channel(channel, local_chan_d, CHFL_CHANOP | CHFL_VOICE);
124
125 add_user_to_channel(channel, remote_chan_o, CHFL_CHANOP);
126 add_user_to_channel(channel, remote_chan_ov, CHFL_CHANOP | CHFL_VOICE);
127 add_user_to_channel(channel, remote_chan_v, CHFL_VOICE);
128 add_user_to_channel(channel, remote_chan_p, CHFL_PEON);
129 add_user_to_channel(channel, remote_chan_d, CHFL_CHANOP | CHFL_VOICE);
130
131 add_user_to_channel(channel, remote2_chan_p, CHFL_PEON);
132 add_user_to_channel(channel, remote2_chan_d, CHFL_CHANOP | CHFL_VOICE);
133
134 lchannel = allocate_channel("&test");
135
136 add_user_to_channel(lchannel, user, CHFL_PEON);
137 add_user_to_channel(lchannel, remote, CHFL_PEON);
138 add_user_to_channel(lchannel, remote2, CHFL_PEON);
139 add_user_to_channel(lchannel, remote3, CHFL_PEON);
140 }
141
142 static void standard_ids(void)
143 {
144 strcpy(user->id, TEST_ID);
145 strcpy(server->id, TEST_SERVER_ID);
146 strcpy(remote->id, TEST_REMOTE_ID);
147 strcpy(server2->id, TEST_SERVER2_ID);
148 strcpy(remote2->id, TEST_REMOTE2_ID);
149 strcpy(server3->id, TEST_SERVER3_ID);
150 strcpy(remote3->id, TEST_REMOTE3_ID);
151
152 strcpy(local_chan_o->id, TEST_ME_ID "90001");
153 strcpy(local_chan_ov->id, TEST_ME_ID "90002");
154 strcpy(local_chan_v->id, TEST_ME_ID "90003");
155 strcpy(local_chan_p->id, TEST_ME_ID "90004");
156 strcpy(local_chan_d->id, TEST_ME_ID "90005");
157
158 strcpy(remote_chan_o->id, TEST_SERVER_ID "90101");
159 strcpy(remote_chan_ov->id, TEST_SERVER_ID "90102");
160 strcpy(remote_chan_v->id, TEST_SERVER_ID "90103");
161 strcpy(remote_chan_p->id, TEST_SERVER_ID "90104");
162 strcpy(remote_chan_d->id, TEST_SERVER_ID "90105");
163
164 strcpy(remote2_chan_p->id, TEST_SERVER2_ID "90204");
165 strcpy(remote2_chan_d->id, TEST_SERVER2_ID "90205");
166 }
167
168 static void standard_server_caps(unsigned int add, unsigned int remove)
169 {
170 server->localClient->caps |= add;
171 server2->localClient->caps |= add;
172 server3->localClient->caps |= add;
173
174 server->localClient->caps &= ~remove;
175 server2->localClient->caps &= ~remove;
176 server3->localClient->caps &= ~remove;
177 }
178
179 static void standard_free(void)
180 {
181 remove_remote_person(remote2_chan_p);
182 remove_remote_person(remote2_chan_d);
183
184 remove_remote_person(remote_chan_o);
185 remove_remote_person(remote_chan_ov);
186 remove_remote_person(remote_chan_v);
187 remove_remote_person(remote_chan_p);
188 remove_remote_person(remote_chan_d);
189
190 remove_local_person(local_chan_o);
191 remove_local_person(local_chan_ov);
192 remove_local_person(local_chan_v);
193 remove_local_person(local_chan_p);
194 remove_local_person(local_chan_d);
195 remove_local_person(local_no_chan);
196
197 remove_remote_person(remote3);
198 remove_remote_server(server3);
199 remove_remote_person(remote2);
200 remove_remote_server(server2);
201 remove_remote_person(remote);
202 remove_remote_server(server);
203 remove_local_person(user);
204 }
205
206 static void sendto_one1(void)
207 {
208 standard_init();
209
210 sendto_one(user, "Hello %s!", "World");
211 is_client_sendq("Hello World!" CRLF, user, MSG);
212
213 sendto_one(server, "Hello %s!", "World");
214 is_client_sendq("Hello World!" CRLF, server, MSG);
215
216 sendto_one(remote, "Hello %s!", "World");
217 is_client_sendq("Hello World!" CRLF, server, MSG);
218
219 standard_free();
220 }
221
222 static void sendto_one_prefix1(void)
223 {
224 standard_init();
225
226 // Local
227 sendto_one_prefix(user, &me, "TEST", ":Hello %s!", "World");
228 is_client_sendq(":" TEST_ME_NAME " TEST " TEST_NICK " :Hello World!" CRLF, user, MSG);
229
230 sendto_one_prefix(user, user, "TEST", ":Hello %s!", "World");
231 is_client_sendq(":" TEST_NICK " TEST " TEST_NICK " :Hello World!" CRLF, user, MSG);
232
233 sendto_one_prefix(user, remote, "TEST", ":Hello %s!", "World");
234 is_client_sendq(":" TEST_REMOTE_NICK " TEST " TEST_NICK " :Hello World!" CRLF, user, MSG);
235
236 sendto_one_prefix(user, server, "TEST", ":Hello %s!", "World");
237 is_client_sendq(":" TEST_SERVER_NAME " TEST " TEST_NICK " :Hello World!" CRLF, user, MSG);
238
239 // Remote (without ID)
240 sendto_one_prefix(remote, &me, "TEST", ":Hello %s!", "World");
241 is_client_sendq(":" TEST_ME_NAME " TEST " TEST_REMOTE_NICK " :Hello World!" CRLF, server, MSG);
242
243 sendto_one_prefix(remote, user, "TEST", ":Hello %s!", "World");
244 is_client_sendq(":" TEST_NICK " TEST " TEST_REMOTE_NICK " :Hello World!" CRLF, server, MSG);
245
246 sendto_one_prefix(remote, remote, "TEST", ":Hello %s!", "World");
247 is_client_sendq(":" TEST_REMOTE_NICK " TEST " TEST_REMOTE_NICK " :Hello World!" CRLF, server, MSG);
248
249 sendto_one_prefix(remote, server, "TEST", ":Hello %s!", "World");
250 is_client_sendq(":" TEST_SERVER_NAME " TEST " TEST_REMOTE_NICK " :Hello World!" CRLF, server, MSG);
251
252 standard_ids();
253
254 // Remote (with ID)
255 sendto_one_prefix(remote, &me, "TEST", ":Hello %s!", "World");
256 is_client_sendq(":" TEST_ME_ID " TEST " TEST_REMOTE_ID " :Hello World!" CRLF, server, MSG);
257
258 sendto_one_prefix(remote, user, "TEST", ":Hello %s!", "World");
259 is_client_sendq(":" TEST_ID " TEST " TEST_REMOTE_ID " :Hello World!" CRLF, server, MSG);
260
261 sendto_one_prefix(remote, remote, "TEST", ":Hello %s!", "World");
262 is_client_sendq(":" TEST_REMOTE_ID " TEST " TEST_REMOTE_ID " :Hello World!" CRLF, server, MSG);
263
264 sendto_one_prefix(remote, server, "TEST", ":Hello %s!", "World");
265 is_client_sendq(":" TEST_SERVER_ID " TEST " TEST_REMOTE_ID " :Hello World!" CRLF, server, MSG);
266
267 standard_free();
268 }
269
270 static void sendto_one_notice1(void)
271 {
272 standard_init();
273
274 // Local
275 sendto_one_notice(user, ":Hello %s!", "World");
276 is_client_sendq(":" TEST_ME_NAME " NOTICE " TEST_NICK " :Hello World!" CRLF, user, MSG);
277
278 // Remote (without ID)
279 sendto_one_notice(remote, ":Hello %s!", "World");
280 is_client_sendq(":" TEST_ME_NAME " NOTICE " TEST_REMOTE_NICK " :Hello World!" CRLF, server, MSG);
281
282 standard_ids();
283
284 // Remote (with ID)
285 sendto_one_notice(remote, ":Hello %s!", "World");
286 is_client_sendq(":" TEST_ME_ID " NOTICE " TEST_REMOTE_ID " :Hello World!" CRLF, server, MSG);
287
288 // Local (unregistered)
289 user->name[0] = '\0';
290 sendto_one_notice(user, ":Hello %s!", "World");
291 is_client_sendq(":" TEST_ME_NAME " NOTICE * :Hello World!" CRLF, user, MSG);
292
293 standard_free();
294 }
295
296 static void sendto_one_numeric1(void)
297 {
298 standard_init();
299
300 // Local
301 sendto_one_numeric(user, 1, "Hello %s!", "World");
302 is_client_sendq(":" TEST_ME_NAME " 001 " TEST_NICK " Hello World!" CRLF, user, MSG);
303
304 // Remote (without ID)
305 sendto_one_numeric(server, 1, "Hello %s!", "World");
306 is_client_sendq(":" TEST_ME_NAME " 001 " TEST_SERVER_NAME " Hello World!" CRLF, server, MSG);
307
308 sendto_one_numeric(remote, 1, "Hello %s!", "World");
309 is_client_sendq(":" TEST_ME_NAME " 001 " TEST_REMOTE_NICK " Hello World!" CRLF, server, MSG);
310
311 standard_ids();
312
313 // Remote (with ID)
314 sendto_one_numeric(server, 1, "Hello %s!", "World");
315 is_client_sendq(":" TEST_ME_ID " 001 " TEST_SERVER_ID " Hello World!" CRLF, server, MSG);
316
317 sendto_one_numeric(remote, 1, "Hello %s!", "World");
318 is_client_sendq(":" TEST_ME_ID " 001 " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
319
320 // Local (unregistered)
321 user->name[0] = '\0';
322 sendto_one_numeric(user, 1, "Hello %s!", "World");
323 is_client_sendq(":" TEST_ME_NAME " 001 * Hello World!" CRLF, user, MSG);
324
325 standard_free();
326 }
327
328 static void sendto_server1(void)
329 {
330 standard_init();
331
332 // TODO test capabilities
333
334 // Local
335 sendto_server(NULL, channel, 0, 0, "Hello %s!", "World");
336 is_client_sendq("Hello World!" CRLF, server, MSG);
337 is_client_sendq("Hello World!" CRLF, server2, MSG);
338 is_client_sendq("Hello World!" CRLF, server3, MSG);
339
340 sendto_server(NULL, lchannel, 0, 0, "Hello %s!", "World");
341 is_client_sendq_empty(server, MSG);
342 is_client_sendq_empty(server2, MSG);
343 is_client_sendq_empty(server3, MSG);
344
345 sendto_server(NULL, NULL, 0, 0, "Hello %s!", "World");
346 is_client_sendq("Hello World!" CRLF, server, MSG);
347 is_client_sendq("Hello World!" CRLF, server2, MSG);
348 is_client_sendq("Hello World!" CRLF, server3, MSG);
349
350 sendto_server(user, channel, 0, 0, "Hello %s!", "World");
351 is_client_sendq("Hello World!" CRLF, server, MSG);
352 is_client_sendq("Hello World!" CRLF, server2, MSG);
353 is_client_sendq("Hello World!" CRLF, server3, MSG);
354
355 sendto_server(user, lchannel, 0, 0, "Hello %s!", "World");
356 is_client_sendq_empty(server, MSG);
357 is_client_sendq_empty(server2, MSG);
358 is_client_sendq_empty(server3, MSG);
359
360 sendto_server(user, NULL, 0, 0, "Hello %s!", "World");
361 is_client_sendq("Hello World!" CRLF, server, MSG);
362 is_client_sendq("Hello World!" CRLF, server2, MSG);
363 is_client_sendq("Hello World!" CRLF, server3, MSG);
364
365 // Remote
366 sendto_server(remote, channel, 0, 0, "Hello %s!", "World");
367 is_client_sendq_empty(server, MSG);
368 is_client_sendq("Hello World!" CRLF, server2, MSG);
369 is_client_sendq("Hello World!" CRLF, server3, MSG);
370
371 sendto_server(remote, lchannel, 0, 0, "Hello %s!", "World");
372 is_client_sendq_empty(server, MSG);
373 is_client_sendq_empty(server2, MSG);
374 is_client_sendq_empty(server3, MSG);
375
376 sendto_server(remote, NULL, 0, 0, "Hello %s!", "World");
377 is_client_sendq_empty(server, MSG);
378 is_client_sendq("Hello World!" CRLF, server2, MSG);
379 is_client_sendq("Hello World!" CRLF, server3, MSG);
380
381 sendto_server(remote2, channel, 0, 0, "Hello %s!", "World");
382 is_client_sendq("Hello World!" CRLF, server, MSG);
383 is_client_sendq_empty(server2, MSG);
384 is_client_sendq("Hello World!" CRLF, server3, MSG);
385
386 sendto_server(remote2, lchannel, 0, 0, "Hello %s!", "World");
387 is_client_sendq_empty(server, MSG);
388 is_client_sendq_empty(server2, MSG);
389 is_client_sendq_empty(server3, MSG);
390
391 sendto_server(remote2, NULL, 0, 0, "Hello %s!", "World");
392 is_client_sendq("Hello World!" CRLF, server, MSG);
393 is_client_sendq_empty(server2, MSG);
394 is_client_sendq("Hello World!" CRLF, server3, MSG);
395
396 sendto_server(remote3, channel, 0, 0, "Hello %s!", "World");
397 is_client_sendq("Hello World!" CRLF, server, MSG);
398 is_client_sendq("Hello World!" CRLF, server2, MSG);
399 is_client_sendq_empty(server3, MSG);
400
401 sendto_server(remote3, lchannel, 0, 0, "Hello %s!", "World");
402 is_client_sendq_empty(server, MSG);
403 is_client_sendq_empty(server2, MSG);
404 is_client_sendq_empty(server3, MSG);
405
406 sendto_server(remote3, NULL, 0, 0, "Hello %s!", "World");
407 is_client_sendq("Hello World!" CRLF, server, MSG);
408 is_client_sendq("Hello World!" CRLF, server2, MSG);
409 is_client_sendq_empty(server3, MSG);
410
411 standard_free();
412 }
413
414 static void sendto_channel_flags__local__all_members(void)
415 {
416 standard_init();
417
418 sendto_channel_flags(local_chan_p, ALL_MEMBERS, local_chan_p, channel, "TEST #placeholder :Hello %s!", "World");
419 is_client_sendq_empty(user, "Not on channel; " MSG);
420 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
421 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
422 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
423 is_client_sendq_empty(local_chan_p, "Message source; " MSG);
424 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
425 is_client_sendq(":LChanPeon TEST #placeholder :Hello World!" CRLF, server, MSG);
426 is_client_sendq(":LChanPeon TEST #placeholder :Hello World!" CRLF, server2, MSG);
427
428 standard_ids();
429
430 sendto_channel_flags(local_chan_p, ALL_MEMBERS, local_chan_p, channel, "TEST #placeholder :Hello %s!", "World");
431 is_client_sendq_empty(user, "Not on channel; " MSG);
432 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
433 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
434 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
435 is_client_sendq_empty(local_chan_p, "Message source; " MSG);
436 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
437 is_client_sendq(":" TEST_ME_ID "90004 TEST #placeholder :Hello World!" CRLF, server, MSG);
438 is_client_sendq(":" TEST_ME_ID "90004 TEST #placeholder :Hello World!" CRLF, server2, MSG);
439
440 standard_free();
441 }
442
443 static void sendto_channel_flags__remote__all_members(void)
444 {
445 standard_init();
446
447 sendto_channel_flags(server, ALL_MEMBERS, remote_chan_p, channel, "TEST #placeholder :Hello %s!", "World");
448 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
449 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
450 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
451 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_p, "On channel; " MSG);
452 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
453 is_client_sendq_empty(server, "Message source; " MSG);
454 is_client_sendq(":RChanPeon TEST #placeholder :Hello World!" CRLF, server2, MSG);
455
456 standard_ids();
457
458 sendto_channel_flags(server, ALL_MEMBERS, remote_chan_p, channel, "TEST #placeholder :Hello %s!", "World");
459 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
460 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
461 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
462 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_p, "On channel; " MSG);
463 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
464 is_client_sendq_empty(server, "Message source; " MSG);
465 is_client_sendq(":" TEST_SERVER_ID "90104 TEST #placeholder :Hello World!" CRLF, server2, MSG);
466
467 standard_free();
468 }
469
470 static void sendto_channel_flags__local__all_members__tags(void)
471 {
472 standard_init();
473
474 strcpy(local_chan_p->user->suser, "test");
475 local_chan_o->localClient->caps |= CAP_ACCOUNT_TAG;
476 local_chan_o->localClient->caps |= CAP_SERVER_TIME;
477 local_chan_ov->localClient->caps |= CAP_SERVER_TIME;
478 local_chan_v->localClient->caps |= CAP_ACCOUNT_TAG;
479
480 sendto_channel_flags(local_chan_p, ALL_MEMBERS, local_chan_p, channel, "TEST #placeholder :Hello %s!", "World");
481 is_client_sendq_empty(user, "Not on channel; " MSG);
482 is_client_sendq("@time=" ADVENTURE_TIME ";account=test :LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
483 is_client_sendq("@time=" ADVENTURE_TIME " :LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
484 is_client_sendq("@account=test :LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
485 is_client_sendq_empty(local_chan_p, "Message source; " MSG);
486 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
487 is_client_sendq(":LChanPeon TEST #placeholder :Hello World!" CRLF, server, MSG);
488 is_client_sendq(":LChanPeon TEST #placeholder :Hello World!" CRLF, server2, MSG);
489
490 standard_ids();
491
492 sendto_channel_flags(local_chan_p, ALL_MEMBERS, local_chan_p, channel, "TEST #placeholder :Hello %s!", "World");
493 is_client_sendq_empty(user, "Not on channel; " MSG);
494 is_client_sendq("@time=" ADVENTURE_TIME ";account=test :LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
495 is_client_sendq("@time=" ADVENTURE_TIME " :LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
496 is_client_sendq("@account=test :LChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
497 is_client_sendq_empty(local_chan_p, "Message source; " MSG);
498 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
499 is_client_sendq(":" TEST_ME_ID "90004 TEST #placeholder :Hello World!" CRLF, server, MSG);
500 is_client_sendq(":" TEST_ME_ID "90004 TEST #placeholder :Hello World!" CRLF, server2, MSG);
501
502 standard_free();
503 }
504
505 static void sendto_channel_flags__remote__all_members__tags(void)
506 {
507 standard_init();
508
509 strcpy(remote_chan_p->user->suser, "test");
510 local_chan_o->localClient->caps |= CAP_ACCOUNT_TAG;
511 local_chan_o->localClient->caps |= CAP_SERVER_TIME;
512 local_chan_ov->localClient->caps |= CAP_SERVER_TIME;
513 local_chan_v->localClient->caps |= CAP_ACCOUNT_TAG;
514
515 sendto_channel_flags(server, ALL_MEMBERS, remote_chan_p, channel, "TEST #placeholder :Hello %s!", "World");
516 is_client_sendq("@time=" ADVENTURE_TIME ";account=test :RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
517 is_client_sendq("@time=" ADVENTURE_TIME " :RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
518 is_client_sendq("@account=test :RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
519 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_p, "On channel; " MSG);
520 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
521 is_client_sendq_empty(server, "Message source; " MSG);
522 is_client_sendq(":RChanPeon TEST #placeholder :Hello World!" CRLF, server2, MSG);
523
524 standard_ids();
525
526 sendto_channel_flags(server, ALL_MEMBERS, remote_chan_p, channel, "TEST #placeholder :Hello %s!", "World");
527 is_client_sendq("@time=" ADVENTURE_TIME ";account=test :RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
528 is_client_sendq("@time=" ADVENTURE_TIME " :RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
529 is_client_sendq("@account=test :RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
530 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_p, "On channel; " MSG);
531 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
532 is_client_sendq_empty(server, "Message source; " MSG);
533 is_client_sendq(":" TEST_SERVER_ID "90104 TEST #placeholder :Hello World!" CRLF, server2, MSG);
534
535 standard_free();
536 }
537
538 static void sendto_channel_flags__local__voice(void)
539 {
540 standard_init();
541
542 // Without CAP_CHW
543 standard_server_caps(0, CAP_CHW);
544
545 sendto_channel_flags(user, CHFL_VOICE, user, channel, "TEST #placeholder :Hello %s!", "World");
546 is_client_sendq_empty(user, "Not on channel; " MSG);
547 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
548 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
549 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
550 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
551 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
552 is_client_sendq_empty(server, "No users to receive message; " MSG);
553 is_client_sendq_empty(server2, "No users to receive message; " MSG);
554
555 // With CAP_CHW
556 standard_server_caps(CAP_CHW, 0);
557
558 sendto_channel_flags(user, CHFL_VOICE, user, channel, "TEST #placeholder :Hello %s!", "World");
559 is_client_sendq_empty(user, "Not on channel; " MSG);
560 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
561 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
562 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
563 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
564 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
565 is_client_sendq(":" TEST_NICK " TEST #placeholder :Hello World!" CRLF, server, MSG);
566 is_client_sendq_empty(server2, "No users to receive message; " MSG);
567
568 standard_ids();
569
570 // Without CAP_CHW
571 standard_server_caps(0, CAP_CHW);
572
573 sendto_channel_flags(user, CHFL_VOICE, user, channel, "TEST #placeholder :Hello %s!", "World");
574 is_client_sendq_empty(user, "Not on channel; " MSG);
575 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
576 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
577 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
578 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
579 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
580 is_client_sendq_empty(server, "No users to receive message; " MSG);
581 is_client_sendq_empty(server2, "No users to receive message; " MSG);
582
583 // With CAP_CHW
584 standard_server_caps(CAP_CHW, 0);
585
586 sendto_channel_flags(user, CHFL_VOICE, user, channel, "TEST #placeholder :Hello %s!", "World");
587 is_client_sendq_empty(user, "Not on channel; " MSG);
588 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
589 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
590 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
591 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
592 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
593 is_client_sendq(":" TEST_ID " TEST #placeholder :Hello World!" CRLF, server, MSG);
594 is_client_sendq_empty(server2, "No users to receive message; " MSG);
595
596 standard_free();
597 }
598
599 static void sendto_channel_flags__remote__voice(void)
600 {
601 standard_init();
602
603 // Without CAP_CHW
604 standard_server_caps(0, CAP_CHW);
605
606 sendto_channel_flags(server3, CHFL_VOICE, remote3, channel, "TEST #placeholder :Hello %s!", "World");
607 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
608 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
609 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
610 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
611 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
612 is_client_sendq_empty(server, "No users to receive message; " MSG);
613 is_client_sendq_empty(server2, "No users to receive message; " MSG);
614
615 // With CAP_CHW
616 standard_server_caps(CAP_CHW, 0);
617
618 sendto_channel_flags(server3, CHFL_VOICE, remote3, channel, "TEST #placeholder :Hello %s!", "World");
619 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
620 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
621 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
622 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
623 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
624 is_client_sendq(":" TEST_REMOTE3_NICK " TEST #placeholder :Hello World!" CRLF, server, "On channel; " MSG);
625 is_client_sendq_empty(server2, "No users to receive message; " MSG);
626
627 standard_ids();
628
629 // Without CAP_CHW
630 standard_server_caps(0, CAP_CHW);
631
632 sendto_channel_flags(server3, CHFL_VOICE, remote3, channel, "TEST #placeholder :Hello %s!", "World");
633 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
634 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
635 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
636 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
637 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
638 is_client_sendq_empty(server, "No users to receive message; " MSG);
639 is_client_sendq_empty(server2, "No users to receive message; " MSG);
640
641 // With CAP_CHW
642 standard_server_caps(CAP_CHW, 0);
643
644 sendto_channel_flags(server3, CHFL_VOICE, remote3, channel, "TEST #placeholder :Hello %s!", "World");
645 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
646 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
647 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
648 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
649 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
650 is_client_sendq(":" TEST_REMOTE3_ID " TEST #placeholder :Hello World!" CRLF, server, "On channel; " MSG);
651 is_client_sendq_empty(server2, "No users to receive message; " MSG);
652
653 standard_free();
654 }
655
656 static void sendto_channel_flags__local__chanop(void)
657 {
658 standard_init();
659
660 // Without CAP_CHW
661 standard_server_caps(0, CAP_CHW);
662
663 sendto_channel_flags(user, CHFL_CHANOP, user, channel, "TEST #placeholder :Hello %s!", "World");
664 is_client_sendq_empty(user, "Not on channel; " MSG);
665 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
666 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
667 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
668 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
669 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
670 is_client_sendq_empty(server, "No users to receive message; " MSG);
671 is_client_sendq_empty(server2, "No users to receive message; " MSG);
672
673 // With CAP_CHW
674 standard_server_caps(CAP_CHW, 0);
675
676 sendto_channel_flags(user, CHFL_CHANOP, user, channel, "TEST #placeholder :Hello %s!", "World");
677 is_client_sendq_empty(user, "Not on channel; " MSG);
678 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
679 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
680 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
681 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
682 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
683 is_client_sendq(":" TEST_NICK " TEST #placeholder :Hello World!" CRLF, server, MSG);
684 is_client_sendq_empty(server2, "No users to receive message; " MSG);
685
686 standard_ids();
687
688 // Without CAP_CHW
689 standard_server_caps(0, CAP_CHW);
690
691 sendto_channel_flags(user, CHFL_CHANOP, user, channel, "TEST #placeholder :Hello %s!", "World");
692 is_client_sendq_empty(user, "Not on channel; " MSG);
693 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
694 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
695 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
696 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
697 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
698 is_client_sendq_empty(server, "No users to receive message; " MSG);
699 is_client_sendq_empty(server2, "No users to receive message; " MSG);
700
701 // With CAP_CHW
702 standard_server_caps(CAP_CHW, 0);
703
704 sendto_channel_flags(user, CHFL_CHANOP, user, channel, "TEST #placeholder :Hello %s!", "World");
705 is_client_sendq_empty(user, "Not on channel; " MSG);
706 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
707 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
708 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
709 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
710 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
711 is_client_sendq(":" TEST_ID " TEST #placeholder :Hello World!" CRLF, server, MSG);
712 is_client_sendq_empty(server2, "No users to receive message; " MSG);
713
714 standard_free();
715 }
716
717 static void sendto_channel_flags__remote__chanop(void)
718 {
719 standard_init();
720
721 // Without CAP_CHW
722 standard_server_caps(0, CAP_CHW);
723
724 sendto_channel_flags(server3, CHFL_CHANOP, remote3, channel, "TEST #placeholder :Hello %s!", "World");
725 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
726 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
727 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
728 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
729 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
730 is_client_sendq_empty(server, "No users to receive message; " MSG);
731 is_client_sendq_empty(server2, "No users to receive message; " MSG);
732
733 // With CAP_CHW
734 standard_server_caps(CAP_CHW, 0);
735
736 sendto_channel_flags(server3, CHFL_CHANOP, remote3, channel, "TEST #placeholder :Hello %s!", "World");
737 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
738 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
739 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
740 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
741 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
742 is_client_sendq(":" TEST_REMOTE3_NICK " TEST #placeholder :Hello World!" CRLF, server, "On channel; " MSG);
743 is_client_sendq_empty(server2, "No users to receive message; " MSG);
744
745 standard_ids();
746
747 // Without CAP_CHW
748 standard_server_caps(0, CAP_CHW);
749
750 sendto_channel_flags(server3, CHFL_CHANOP, remote3, channel, "TEST #placeholder :Hello %s!", "World");
751 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
752 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
753 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
754 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
755 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
756 is_client_sendq_empty(server, "No users to receive message; " MSG);
757 is_client_sendq_empty(server2, "No users to receive message; " MSG);
758
759 // With CAP_CHW
760 standard_server_caps(CAP_CHW, 0);
761
762 sendto_channel_flags(server3, CHFL_CHANOP, remote3, channel, "TEST #placeholder :Hello %s!", "World");
763 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
764 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
765 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
766 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
767 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
768 is_client_sendq(":" TEST_REMOTE3_ID " TEST #placeholder :Hello World!" CRLF, server, "On channel; " MSG);
769 is_client_sendq_empty(server2, "No users to receive message; " MSG);
770
771 standard_free();
772 }
773
774 static void sendto_channel_flags__local__chanop_voice(void)
775 {
776 standard_init();
777
778 // Without CAP_CHW
779 standard_server_caps(0, CAP_CHW);
780
781 sendto_channel_flags(user, CHFL_CHANOP | CHFL_VOICE, user, channel, "TEST #placeholder :Hello %s!", "World");
782 is_client_sendq_empty(user, "Not on channel; " MSG);
783 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
784 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
785 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
786 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
787 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
788 is_client_sendq_empty(server, "No users to receive message; " MSG);
789 is_client_sendq_empty(server2, "No users to receive message; " MSG);
790
791 // With CAP_CHW
792 standard_server_caps(CAP_CHW, 0);
793
794 sendto_channel_flags(user, CHFL_CHANOP | CHFL_VOICE, user, channel, "TEST #placeholder :Hello %s!", "World");
795 is_client_sendq_empty(user, "Not on channel; " MSG);
796 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
797 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
798 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
799 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
800 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
801 is_client_sendq(":" TEST_NICK " TEST #placeholder :Hello World!" CRLF, server, MSG);
802 is_client_sendq_empty(server2, "No users to receive message; " MSG);
803
804 standard_ids();
805
806 // Without CAP_CHW
807 standard_server_caps(0, CAP_CHW);
808
809 sendto_channel_flags(user, CHFL_CHANOP | CHFL_VOICE, user, channel, "TEST #placeholder :Hello %s!", "World");
810 is_client_sendq_empty(user, "Not on channel; " MSG);
811 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
812 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
813 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
814 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
815 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
816 is_client_sendq_empty(server, "No users to receive message; " MSG);
817 is_client_sendq_empty(server2, "No users to receive message; " MSG);
818
819 // With CAP_CHW
820 standard_server_caps(CAP_CHW, 0);
821
822 sendto_channel_flags(user, CHFL_CHANOP | CHFL_VOICE, user, channel, "TEST #placeholder :Hello %s!", "World");
823 is_client_sendq_empty(user, "Not on channel; " MSG);
824 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
825 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
826 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
827 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
828 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
829 is_client_sendq(":" TEST_ID " TEST #placeholder :Hello World!" CRLF, server, MSG);
830 is_client_sendq_empty(server2, "No users to receive message; " MSG);
831
832 standard_free();
833 }
834
835 static void sendto_channel_flags__remote__chanop_voice(void)
836 {
837 standard_init();
838
839 // Without CAP_CHW
840 standard_server_caps(0, CAP_CHW);
841
842 sendto_channel_flags(server3, CHFL_CHANOP | CHFL_VOICE, remote3, channel, "TEST #placeholder :Hello %s!", "World");
843 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
844 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
845 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
846 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
847 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
848 is_client_sendq_empty(server, "No users to receive message; " MSG);
849 is_client_sendq_empty(server2, "No users to receive message; " MSG);
850
851 // With CAP_CHW
852 standard_server_caps(CAP_CHW, 0);
853
854 sendto_channel_flags(server3, CHFL_CHANOP | CHFL_VOICE, remote3, channel, "TEST #placeholder :Hello %s!", "World");
855 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
856 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
857 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
858 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
859 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
860 is_client_sendq(":" TEST_REMOTE3_NICK " TEST #placeholder :Hello World!" CRLF, server, "On channel; " MSG);
861 is_client_sendq_empty(server2, "No users to receive message; " MSG);
862
863 standard_ids();
864
865 // Without CAP_CHW
866 standard_server_caps(0, CAP_CHW);
867
868 sendto_channel_flags(server3, CHFL_CHANOP | CHFL_VOICE, remote3, channel, "TEST #placeholder :Hello %s!", "World");
869 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
870 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
871 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
872 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
873 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
874 is_client_sendq_empty(server, "No users to receive message; " MSG);
875 is_client_sendq_empty(server2, "No users to receive message; " MSG);
876
877 // With CAP_CHW
878 standard_server_caps(CAP_CHW, 0);
879
880 sendto_channel_flags(server3, CHFL_CHANOP | CHFL_VOICE, remote3, channel, "TEST #placeholder :Hello %s!", "World");
881 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
882 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
883 is_client_sendq(":" TEST_REMOTE3_NICK TEST_ID_SUFFIX " TEST #placeholder :Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
884 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
885 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
886 is_client_sendq(":" TEST_REMOTE3_ID " TEST #placeholder :Hello World!" CRLF, server, "On channel; " MSG);
887 is_client_sendq_empty(server2, "No users to receive message; " MSG);
888
889 standard_free();
890 }
891
892 static void sendto_channel_opmod__local(void)
893 {
894 standard_init();
895
896 // This function does not support TS5...
897 standard_ids();
898
899 // Without CAP_CHW | CAP_EOPMOD
900 standard_server_caps(0, CAP_CHW | CAP_EOPMOD);
901
902 sendto_channel_opmod(local_chan_p, local_chan_p, channel, "TEST", "Hello World!");
903 is_client_sendq_empty(user, "Not on channel; " MSG);
904 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
905 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
906 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
907 is_client_sendq_empty(local_chan_p, "Message source; " MSG);
908 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
909 is_client_sendq_empty(server, "No users to receive message; " MSG);
910 is_client_sendq_empty(server2, "No users to receive message; " MSG);
911
912 // With CAP_CHW, without CAP_EOPMOD
913 standard_server_caps(CAP_CHW, CAP_EOPMOD);
914
915 sendto_channel_opmod(local_chan_p, local_chan_p, channel, "TEST", "Hello World!");
916 is_client_sendq_empty(user, "Not on channel; " MSG);
917 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
918 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
919 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
920 is_client_sendq_empty(local_chan_p, "Message source; " MSG);
921 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
922 is_client_sendq(":" TEST_ME_ID " NOTICE @" TEST_CHANNEL " :<LChanPeon:#test> Hello World!" CRLF, server, MSG);
923 is_client_sendq_empty(server2, "No users to receive message; " MSG);
924
925 // Moderated channel
926 channel->mode.mode |= MODE_MODERATED;
927
928 sendto_channel_opmod(local_chan_p, local_chan_p, channel, "TEST", "Hello World!");
929 is_client_sendq_empty(user, "Not on channel; " MSG);
930 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
931 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
932 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
933 is_client_sendq_empty(local_chan_p, "Message source; " MSG);
934 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
935 is_client_sendq(":" TEST_ME_ID "90004 TEST " TEST_CHANNEL " :Hello World!" CRLF, server, MSG);
936 is_client_sendq_empty(server2, "No users to receive message; " MSG);
937
938 // With CAP_CHW | CAP_EOPMOD
939 channel->mode.mode &= ~MODE_MODERATED;
940 standard_server_caps(CAP_CHW | CAP_EOPMOD, 0);
941
942 sendto_channel_opmod(local_chan_p, local_chan_p, channel, "TEST", "Hello World!");
943 is_client_sendq_empty(user, "Not on channel; " MSG);
944 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
945 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
946 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
947 is_client_sendq_empty(local_chan_p, "Message source; " MSG);
948 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
949 is_client_sendq(":" TEST_ME_ID "90004 TEST =" TEST_CHANNEL " :Hello World!" CRLF, server, MSG);
950 is_client_sendq_empty(server2, "No users to receive message; " MSG);
951 }
952
953 static void sendto_channel_opmod__remote(void)
954 {
955 standard_init();
956
957 sendto_channel_flags(server, ALL_MEMBERS, remote_chan_p, channel, "TEST " TEST_CHANNEL " :Hello %s!", "World");
958 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
959 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
960 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
961 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
962 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
963 is_client_sendq_empty(server, "Message source; " MSG);
964 is_client_sendq(":RChanPeon TEST " TEST_CHANNEL " :Hello World!" CRLF, server2, MSG);
965
966 standard_ids();
967
968 sendto_channel_flags(server, ALL_MEMBERS, remote_chan_p, channel, "TEST " TEST_CHANNEL " :Hello %s!", "World");
969 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_o, "On channel; " MSG);
970 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
971 is_client_sendq(":RChanPeon" TEST_ID_SUFFIX " TEST " TEST_CHANNEL " :Hello World!" CRLF, local_chan_v, "On channel; " MSG);
972 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
973 is_client_sendq_empty(local_chan_d, "Deaf; " MSG);
974 is_client_sendq_empty(server, "Message source; " MSG);
975 is_client_sendq(":" TEST_SERVER_ID "90104 TEST " TEST_CHANNEL " :Hello World!" CRLF, server2, MSG);
976
977 standard_free();
978 }
979
980 static void sendto_channel_local1(void)
981 {
982 standard_init();
983
984 sendto_channel_local(ALL_MEMBERS, channel, "Hello %s!", "World");
985 is_client_sendq_empty(user, "Not on channel; " MSG);
986 is_client_sendq("Hello World!" CRLF, local_chan_o, "On channel; " MSG);
987 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
988 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
989 is_client_sendq("Hello World!" CRLF, local_chan_p, "On channel; " MSG);
990 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
991 is_client_sendq_empty(server, MSG);
992 is_client_sendq_empty(server2, MSG);
993
994 sendto_channel_local(CHFL_VOICE, channel, "Hello %s!", "World");
995 is_client_sendq_empty(user, "Not on channel; " MSG);
996 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
997 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
998 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
999 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
1000 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +v; " MSG);
1001 is_client_sendq_empty(server, MSG);
1002 is_client_sendq_empty(server2, MSG);
1003
1004 sendto_channel_local(CHFL_CHANOP, channel, "Hello %s!", "World");
1005 is_client_sendq_empty(user, "Not on channel; " MSG);
1006 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
1007 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
1008 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
1009 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
1010 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o; " MSG);
1011 is_client_sendq_empty(server, MSG);
1012 is_client_sendq_empty(server2, MSG);
1013
1014 sendto_channel_local(CHFL_CHANOP | CHFL_VOICE, channel, "Hello %s!", "World");
1015 is_client_sendq_empty(user, "Not on channel; " MSG);
1016 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
1017 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
1018 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
1019 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
1020 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o/+v; " MSG);
1021 is_client_sendq_empty(server, MSG);
1022 is_client_sendq_empty(server2, MSG);
1023
1024 sendto_channel_local(ONLY_OPERS, channel, "Hello %s!", "World");
1025 is_client_sendq_empty(user, "Not an oper; " MSG);
1026 is_client_sendq_empty(local_chan_o, "Not an oper; " MSG);
1027 is_client_sendq_empty(local_chan_ov, "Not an oper; " MSG);
1028 is_client_sendq_empty(local_chan_v, "Not an oper; " MSG);
1029 is_client_sendq_empty(local_chan_p, "Not an oper; " MSG);
1030 is_client_sendq_empty(local_chan_d, "Not an oper; " MSG);
1031 is_client_sendq_empty(server, MSG);
1032 is_client_sendq_empty(server2, MSG);
1033
1034 struct Client *oper1 = make_local_person_nick("oper1");
1035 struct Client *oper2 = make_local_person_nick("oper2");
1036
1037 make_local_person_oper(oper1);
1038 make_local_person_oper(oper2);
1039
1040 oper2->umodes |= UMODE_ADMIN;
1041
1042 add_user_to_channel(lchannel, oper1, CHFL_PEON);
1043 add_user_to_channel(lchannel, oper2, CHFL_PEON);
1044
1045 sendto_channel_local(ALL_MEMBERS, lchannel, "Hello %s!", "World");
1046 is_client_sendq("Hello World!" CRLF, user, "On channel; " MSG);
1047 is_client_sendq("Hello World!" CRLF, oper1, "On channel; " MSG);
1048 is_client_sendq("Hello World!" CRLF, oper2, "On channel; " MSG);
1049 is_client_sendq_empty(server, MSG);
1050 is_client_sendq_empty(server2, MSG);
1051 is_client_sendq_empty(server3, MSG);
1052
1053 sendto_channel_local(ONLY_OPERS, lchannel, "Hello %s!", "World");
1054 is_client_sendq_empty(user, "Not an oper; " MSG);
1055 is_client_sendq("Hello World!" CRLF, oper1, "Is an oper; " MSG);
1056 is_client_sendq("Hello World!" CRLF, oper2, "Is an oper; " MSG);
1057 is_client_sendq_empty(server, MSG);
1058 is_client_sendq_empty(server2, MSG);
1059 is_client_sendq_empty(server3, MSG);
1060
1061 standard_free();
1062 }
1063
1064 static void sendto_channel_local_with_capability1(void)
1065 {
1066 standard_init();
1067
1068 local_chan_o->localClient->caps |= CAP_INVITE_NOTIFY;
1069 local_chan_v->localClient->caps |= CAP_INVITE_NOTIFY;
1070
1071 sendto_channel_local_with_capability(ALL_MEMBERS, CAP_INVITE_NOTIFY, 0, channel, "Hello %s!", "World");
1072 is_client_sendq_empty(user, "Not on channel; " MSG);
1073 is_client_sendq("Hello World!" CRLF, local_chan_o, "On channel; " MSG);
1074 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1075 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1076 is_client_sendq_empty(local_chan_p, "Doesn't have cap; " MSG);
1077 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1078 is_client_sendq_empty(server, MSG);
1079 is_client_sendq_empty(server2, MSG);
1080
1081 sendto_channel_local_with_capability(ALL_MEMBERS, 0, CAP_INVITE_NOTIFY, channel, "Hello %s!", "World");
1082 is_client_sendq_empty(user, "Not on channel; " MSG);
1083 is_client_sendq_empty(local_chan_o, "Has cap; " MSG);
1084 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1085 is_client_sendq_empty(local_chan_v, "Has cap; " MSG);
1086 is_client_sendq("Hello World!" CRLF, local_chan_p, "On channel; " MSG);
1087 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1088 is_client_sendq_empty(server, MSG);
1089 is_client_sendq_empty(server2, MSG);
1090
1091 sendto_channel_local_with_capability(ALL_MEMBERS, 0, 0, channel, "Hello %s!", "World");
1092 is_client_sendq_empty(user, "Not on channel; " MSG);
1093 is_client_sendq("Hello World!" CRLF, local_chan_o, "On channel; " MSG);
1094 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1095 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1096 is_client_sendq("Hello World!" CRLF, local_chan_p, "On channel; " MSG);
1097 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1098 is_client_sendq_empty(server, MSG);
1099 is_client_sendq_empty(server2, MSG);
1100
1101 sendto_channel_local_with_capability(CHFL_VOICE, CAP_INVITE_NOTIFY, 0, channel, "Hello %s!", "World");
1102 is_client_sendq_empty(user, "Not on channel; " MSG);
1103 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
1104 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1105 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
1106 is_client_sendq_empty(local_chan_p, "Doesn't have cap; " MSG);
1107 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1108 is_client_sendq_empty(server, MSG);
1109 is_client_sendq_empty(server2, MSG);
1110
1111 sendto_channel_local_with_capability(CHFL_VOICE, 0, CAP_INVITE_NOTIFY, channel, "Hello %s!", "World");
1112 is_client_sendq_empty(user, "Not on channel; " MSG);
1113 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
1114 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
1115 is_client_sendq_empty(local_chan_v, "Has cap; " MSG);
1116 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
1117 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +v; " MSG);
1118 is_client_sendq_empty(server, MSG);
1119 is_client_sendq_empty(server2, MSG);
1120
1121 sendto_channel_local_with_capability(CHFL_VOICE, 0, 0, channel, "Hello %s!", "World");
1122 is_client_sendq_empty(user, "Not on channel; " MSG);
1123 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
1124 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
1125 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
1126 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
1127 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +v; " MSG);
1128 is_client_sendq_empty(server, MSG);
1129 is_client_sendq_empty(server2, MSG);
1130
1131 sendto_channel_local_with_capability(CHFL_CHANOP, CAP_INVITE_NOTIFY, 0, channel, "Hello %s!", "World");
1132 is_client_sendq_empty(user, "Not on channel; " MSG);
1133 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
1134 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1135 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
1136 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
1137 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1138 is_client_sendq_empty(server, MSG);
1139 is_client_sendq_empty(server2, MSG);
1140
1141 sendto_channel_local_with_capability(CHFL_CHANOP, 0, CAP_INVITE_NOTIFY, channel, "Hello %s!", "World");
1142 is_client_sendq_empty(user, "Not on channel; " MSG);
1143 is_client_sendq_empty(local_chan_o, "Has cap; " MSG);
1144 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
1145 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
1146 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
1147 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o; " MSG);
1148 is_client_sendq_empty(server, MSG);
1149 is_client_sendq_empty(server2, MSG);
1150
1151 sendto_channel_local_with_capability(CHFL_CHANOP, 0, 0, channel, "Hello %s!", "World");
1152 is_client_sendq_empty(user, "Not on channel; " MSG);
1153 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
1154 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
1155 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
1156 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
1157 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o; " MSG);
1158 is_client_sendq_empty(server, MSG);
1159 is_client_sendq_empty(server2, MSG);
1160
1161 sendto_channel_local_with_capability(CHFL_CHANOP | CHFL_VOICE, CAP_INVITE_NOTIFY, 0, channel, "Hello %s!", "World");
1162 is_client_sendq_empty(user, "Not on channel; " MSG);
1163 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
1164 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1165 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
1166 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
1167 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1168 is_client_sendq_empty(server, MSG);
1169 is_client_sendq_empty(server2, MSG);
1170
1171 sendto_channel_local_with_capability(CHFL_CHANOP | CHFL_VOICE, 0, CAP_INVITE_NOTIFY, channel, "Hello %s!", "World");
1172 is_client_sendq_empty(user, "Not on channel; " MSG);
1173 is_client_sendq_empty(local_chan_o, "Has cap; " MSG);
1174 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
1175 is_client_sendq_empty(local_chan_v, "Has cap; " MSG);
1176 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
1177 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o/+v; " MSG);
1178 is_client_sendq_empty(server, MSG);
1179 is_client_sendq_empty(server2, MSG);
1180
1181 sendto_channel_local_with_capability(CHFL_CHANOP | CHFL_VOICE, 0, 0, channel, "Hello %s!", "World");
1182 is_client_sendq_empty(user, "Not on channel; " MSG);
1183 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
1184 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
1185 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
1186 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
1187 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o/+v; " MSG);
1188 is_client_sendq_empty(server, MSG);
1189 is_client_sendq_empty(server2, MSG);
1190
1191 standard_free();
1192 }
1193
1194 static void sendto_channel_local_with_capability_butone1(void)
1195 {
1196 standard_init();
1197
1198 local_chan_o->localClient->caps |= CAP_INVITE_NOTIFY;
1199 local_chan_v->localClient->caps |= CAP_INVITE_NOTIFY;
1200
1201 sendto_channel_local_with_capability_butone(NULL, ALL_MEMBERS, CAP_INVITE_NOTIFY, 0, channel, "Hello %s!", "World");
1202 is_client_sendq_empty(user, "Not on channel; " MSG);
1203 is_client_sendq("Hello World!" CRLF, local_chan_o, "On channel; " MSG);
1204 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1205 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1206 is_client_sendq_empty(local_chan_p, "Doesn't have cap; " MSG);
1207 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1208 is_client_sendq_empty(server, MSG);
1209 is_client_sendq_empty(server2, MSG);
1210
1211 sendto_channel_local_with_capability_butone(NULL, ALL_MEMBERS, 0, CAP_INVITE_NOTIFY, channel, "Hello %s!", "World");
1212 is_client_sendq_empty(user, "Not on channel; " MSG);
1213 is_client_sendq_empty(local_chan_o, "Has cap; " MSG);
1214 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1215 is_client_sendq_empty(local_chan_v, "Has cap; " MSG);
1216 is_client_sendq("Hello World!" CRLF, local_chan_p, "On channel; " MSG);
1217 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1218 is_client_sendq_empty(server, MSG);
1219 is_client_sendq_empty(server2, MSG);
1220
1221 sendto_channel_local_with_capability_butone(NULL, ALL_MEMBERS, 0, 0, channel, "Hello %s!", "World");
1222 is_client_sendq_empty(user, "Not on channel; " MSG);
1223 is_client_sendq("Hello World!" CRLF, local_chan_o, "On channel; " MSG);
1224 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1225 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1226 is_client_sendq("Hello World!" CRLF, local_chan_p, "On channel; " MSG);
1227 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1228 is_client_sendq_empty(server, MSG);
1229 is_client_sendq_empty(server2, MSG);
1230
1231 sendto_channel_local_with_capability_butone(local_chan_o, ALL_MEMBERS, CAP_INVITE_NOTIFY, 0, channel, "Hello %s!", "World");
1232 is_client_sendq_empty(user, "Not on channel; " MSG);
1233 is_client_sendq_empty(local_chan_o, "Is the one (neo); " MSG);
1234 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1235 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1236 is_client_sendq_empty(local_chan_p, "Doesn't have cap; " MSG);
1237 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1238 is_client_sendq_empty(server, MSG);
1239 is_client_sendq_empty(server2, MSG);
1240
1241 sendto_channel_local_with_capability_butone(local_chan_o, ALL_MEMBERS, 0, CAP_INVITE_NOTIFY, channel, "Hello %s!", "World");
1242 is_client_sendq_empty(user, "Not on channel; " MSG);
1243 is_client_sendq_empty(local_chan_o, "Is the one (neo); " MSG);
1244 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1245 is_client_sendq_empty(local_chan_v, "Has cap; " MSG);
1246 is_client_sendq("Hello World!" CRLF, local_chan_p, "On channel; " MSG);
1247 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1248 is_client_sendq_empty(server, MSG);
1249 is_client_sendq_empty(server2, MSG);
1250
1251 sendto_channel_local_with_capability_butone(local_chan_o, ALL_MEMBERS, 0, 0, channel, "Hello %s!", "World");
1252 is_client_sendq_empty(user, "Not on channel; " MSG);
1253 is_client_sendq_empty(local_chan_o, "Is the one (neo); " MSG);
1254 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1255 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1256 is_client_sendq("Hello World!" CRLF, local_chan_p, "On channel; " MSG);
1257 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1258 is_client_sendq_empty(server, MSG);
1259 is_client_sendq_empty(server2, MSG);
1260
1261 sendto_channel_local_with_capability_butone(local_chan_p, ALL_MEMBERS, CAP_INVITE_NOTIFY, 0, channel, "Hello %s!", "World");
1262 is_client_sendq_empty(user, "Not on channel; " MSG);
1263 is_client_sendq("Hello World!" CRLF, local_chan_o, "On channel; " MSG);
1264 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1265 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1266 is_client_sendq_empty(local_chan_p, "Is the one (neo); " MSG);
1267 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1268 is_client_sendq_empty(server, MSG);
1269 is_client_sendq_empty(server2, MSG);
1270
1271 sendto_channel_local_with_capability_butone(local_chan_p, ALL_MEMBERS, 0, CAP_INVITE_NOTIFY, channel, "Hello %s!", "World");
1272 is_client_sendq_empty(user, "Not on channel; " MSG);
1273 is_client_sendq_empty(local_chan_o, "Has cap; " MSG);
1274 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1275 is_client_sendq_empty(local_chan_v, "Has cap; " MSG);
1276 is_client_sendq_empty(local_chan_p, "Is the one (neo); " MSG);
1277 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1278 is_client_sendq_empty(server, MSG);
1279 is_client_sendq_empty(server2, MSG);
1280
1281 sendto_channel_local_with_capability_butone(local_chan_p, ALL_MEMBERS, 0, 0, channel, "Hello %s!", "World");
1282 is_client_sendq_empty(user, "Not on channel; " MSG);
1283 is_client_sendq("Hello World!" CRLF, local_chan_o, "On channel; " MSG);
1284 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1285 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1286 is_client_sendq_empty(local_chan_p, "Is the one (neo); " MSG);
1287 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1288 is_client_sendq_empty(server, MSG);
1289 is_client_sendq_empty(server2, MSG);
1290
1291 standard_free();
1292 }
1293
1294 static void sendto_channel_local_butone1(void)
1295 {
1296 standard_init();
1297
1298 sendto_channel_local_butone(NULL, ALL_MEMBERS, channel, "Hello %s!", "World");
1299 is_client_sendq_empty(user, "Not on channel; " MSG);
1300 is_client_sendq("Hello World!" CRLF, local_chan_o, "On channel; " MSG);
1301 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1302 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1303 is_client_sendq("Hello World!" CRLF, local_chan_p, "On channel; " MSG);
1304 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1305 is_client_sendq_empty(server, MSG);
1306 is_client_sendq_empty(server2, MSG);
1307
1308 sendto_channel_local_butone(local_chan_o, ALL_MEMBERS, channel, "Hello %s!", "World");
1309 is_client_sendq_empty(user, "Not on channel; " MSG);
1310 is_client_sendq_empty(local_chan_o, "Is the one (neo); " MSG);
1311 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1312 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1313 is_client_sendq("Hello World!" CRLF, local_chan_p, "On channel; " MSG);
1314 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1315 is_client_sendq_empty(server, MSG);
1316 is_client_sendq_empty(server2, MSG);
1317
1318 sendto_channel_local_butone(local_chan_p, ALL_MEMBERS, channel, "Hello %s!", "World");
1319 is_client_sendq_empty(user, "Not on channel; " MSG);
1320 is_client_sendq("Hello World!" CRLF, local_chan_o, "On channel; " MSG);
1321 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On channel; " MSG);
1322 is_client_sendq("Hello World!" CRLF, local_chan_v, "On channel; " MSG);
1323 is_client_sendq_empty(local_chan_p, "Is the one (neo); " MSG);
1324 is_client_sendq("Hello World!" CRLF, local_chan_d, "On channel; " MSG);
1325 is_client_sendq_empty(server, MSG);
1326 is_client_sendq_empty(server2, MSG);
1327
1328 sendto_channel_local_butone(local_chan_ov, CHFL_VOICE, channel, "Hello %s!", "World");
1329 is_client_sendq_empty(user, "Not on channel; " MSG);
1330 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
1331 is_client_sendq_empty(local_chan_ov, "Is the one (neo); " MSG);
1332 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
1333 is_client_sendq_empty(local_chan_p, "Not +v; " MSG);
1334 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +v; " MSG);
1335 is_client_sendq_empty(server, MSG);
1336 is_client_sendq_empty(server2, MSG);
1337
1338 sendto_channel_local_butone(local_chan_p, CHFL_VOICE, channel, "Hello %s!", "World");
1339 is_client_sendq_empty(user, "Not on channel; " MSG);
1340 is_client_sendq_empty(local_chan_o, "Not +v; " MSG);
1341 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +v; " MSG);
1342 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has +v; " MSG);
1343 is_client_sendq_empty(local_chan_p, "Is the one (neo); " MSG);
1344 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +v; " MSG);
1345 is_client_sendq_empty(server, MSG);
1346 is_client_sendq_empty(server2, MSG);
1347
1348 sendto_channel_local_butone(local_chan_o, CHFL_CHANOP, channel, "Hello %s!", "World");
1349 is_client_sendq_empty(user, "Not on channel; " MSG);
1350 is_client_sendq_empty(local_chan_o, "Is the one (neo); " MSG);
1351 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
1352 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
1353 is_client_sendq_empty(local_chan_p, "Not +o; " MSG);
1354 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o; " MSG);
1355 is_client_sendq_empty(server, MSG);
1356 is_client_sendq_empty(server2, MSG);
1357
1358 sendto_channel_local_butone(local_chan_p, CHFL_CHANOP, channel, "Hello %s!", "World");
1359 is_client_sendq_empty(user, "Not on channel; " MSG);
1360 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has +o; " MSG);
1361 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o; " MSG);
1362 is_client_sendq_empty(local_chan_v, "Not +o; " MSG);
1363 is_client_sendq_empty(local_chan_p, "Is the one (neo); " MSG);
1364 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o; " MSG);
1365 is_client_sendq_empty(server, MSG);
1366 is_client_sendq_empty(server2, MSG);
1367
1368 sendto_channel_local_butone(local_chan_v, CHFL_CHANOP | CHFL_VOICE, channel, "Hello %s!", "World");
1369 is_client_sendq_empty(user, "Not on channel; " MSG);
1370 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
1371 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
1372 is_client_sendq_empty(local_chan_v, "Is the one (neo); " MSG);
1373 is_client_sendq_empty(local_chan_p, "Not +o/+v; " MSG);
1374 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o/+v; " MSG);
1375 is_client_sendq_empty(server, MSG);
1376 is_client_sendq_empty(server2, MSG);
1377
1378 sendto_channel_local_butone(local_chan_p, CHFL_CHANOP | CHFL_VOICE, channel, "Hello %s!", "World");
1379 is_client_sendq_empty(user, "Not on channel; " MSG);
1380 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has +o/+v; " MSG);
1381 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Has +o/+v; " MSG);
1382 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has +o/+v; " MSG);
1383 is_client_sendq_empty(local_chan_p, "Is the one (neo); " MSG);
1384 is_client_sendq("Hello World!" CRLF, local_chan_d, "Has +o/+v; " MSG);
1385 is_client_sendq_empty(server, MSG);
1386 is_client_sendq_empty(server2, MSG);
1387
1388 standard_free();
1389 }
1390
1391 static void sendto_common_channels_local1(void)
1392 {
1393 standard_init();
1394
1395 local_chan_o->localClient->caps |= CAP_INVITE_NOTIFY;
1396 local_chan_v->localClient->caps |= CAP_INVITE_NOTIFY;
1397
1398 sendto_common_channels_local(local_chan_o, CAP_INVITE_NOTIFY, 0, "Hello %s!", "World");
1399 is_client_sendq_empty(user, "Not on common channel; " MSG);
1400 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has cap; " MSG);
1401 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1402 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has cap; " MSG);
1403 is_client_sendq_empty(local_chan_p, "Doesn't have cap; " MSG);
1404 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1405 is_client_sendq_empty(local_no_chan, "Not on common channel; " MSG);
1406 is_client_sendq_empty(server, MSG);
1407 is_client_sendq_empty(server2, MSG);
1408
1409 sendto_common_channels_local(local_chan_o, 0, CAP_INVITE_NOTIFY, "Hello %s!", "World");
1410 is_client_sendq_empty(user, "Not on common channel; " MSG);
1411 is_client_sendq_empty(local_chan_o, "Has cap; " MSG);
1412 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Doesn't have cap; " MSG);
1413 is_client_sendq_empty(local_chan_v, "Has cap; " MSG);
1414 is_client_sendq("Hello World!" CRLF, local_chan_p, "Doesn't have cap; " MSG);
1415 is_client_sendq("Hello World!" CRLF, local_chan_d, "Doesn't have cap; " MSG);
1416 is_client_sendq_empty(local_no_chan, "Not on common channel; " MSG);
1417 is_client_sendq_empty(server, MSG);
1418 is_client_sendq_empty(server2, MSG);
1419
1420 sendto_common_channels_local(local_chan_o, 0, 0, "Hello %s!", "World");
1421 is_client_sendq_empty(user, "Not on common channel; " MSG);
1422 is_client_sendq("Hello World!" CRLF, local_chan_o, "No cap checking; " MSG);
1423 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On common channel; " MSG);
1424 is_client_sendq("Hello World!" CRLF, local_chan_v, "On common channel; " MSG);
1425 is_client_sendq("Hello World!" CRLF, local_chan_p, "On common channel; " MSG);
1426 is_client_sendq("Hello World!" CRLF, local_chan_d, "On common channel; " MSG);
1427 is_client_sendq_empty(local_no_chan, "Not on common channel; " MSG);
1428 is_client_sendq_empty(server, MSG);
1429 is_client_sendq_empty(server2, MSG);
1430
1431 sendto_common_channels_local(local_no_chan, CAP_INVITE_NOTIFY, 0, "Hello %s!", "World");
1432 is_client_sendq_empty(user, "Not on common channel; " MSG);
1433 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1434 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1435 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1436 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1437 is_client_sendq_empty(local_no_chan, "Doesn't have cap; " MSG);
1438 is_client_sendq_empty(server, MSG);
1439 is_client_sendq_empty(server2, MSG);
1440
1441 sendto_common_channels_local(local_no_chan, 0, CAP_INVITE_NOTIFY, "Hello %s!", "World");
1442 is_client_sendq_empty(user, "Not on common channel; " MSG);
1443 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1444 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1445 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1446 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1447 is_client_sendq("Hello World!" CRLF, local_no_chan, "Doesn't have cap; " MSG);
1448 is_client_sendq_empty(server, MSG);
1449 is_client_sendq_empty(server2, MSG);
1450
1451 sendto_common_channels_local(local_no_chan, 0, 0, "Hello %s!", "World");
1452 is_client_sendq_empty(user, "Not on common channel; " MSG);
1453 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1454 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1455 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1456 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1457 is_client_sendq("Hello World!" CRLF, local_no_chan, "No cap checking; " MSG);
1458 is_client_sendq_empty(server, MSG);
1459 is_client_sendq_empty(server2, MSG);
1460
1461 local_no_chan->localClient->caps |= CAP_INVITE_NOTIFY;
1462
1463 sendto_common_channels_local(local_no_chan, CAP_INVITE_NOTIFY, 0, "Hello %s!", "World");
1464 is_client_sendq_empty(user, "Not on common channel; " MSG);
1465 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1466 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1467 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1468 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1469 is_client_sendq("Hello World!" CRLF, local_no_chan, "Has cap; " MSG);
1470 is_client_sendq_empty(server, MSG);
1471 is_client_sendq_empty(server2, MSG);
1472
1473 sendto_common_channels_local(local_no_chan, 0, CAP_INVITE_NOTIFY, "Hello %s!", "World");
1474 is_client_sendq_empty(user, "Not on common channel; " MSG);
1475 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1476 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1477 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1478 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1479 is_client_sendq_empty(local_no_chan, "Has cap; " MSG);
1480 is_client_sendq_empty(server, MSG);
1481 is_client_sendq_empty(server2, MSG);
1482
1483 sendto_common_channels_local(local_no_chan, 0, 0, "Hello %s!", "World");
1484 is_client_sendq_empty(user, "Not on common channel; " MSG);
1485 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1486 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1487 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1488 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1489 is_client_sendq("Hello World!" CRLF, local_no_chan, "No cap checking; " MSG);
1490 is_client_sendq_empty(server, MSG);
1491 is_client_sendq_empty(server2, MSG);
1492
1493 standard_free();
1494 }
1495
1496 static void sendto_common_channels_local_butone1(void)
1497 {
1498 standard_init();
1499
1500 local_chan_o->localClient->caps |= CAP_INVITE_NOTIFY;
1501 local_chan_v->localClient->caps |= CAP_INVITE_NOTIFY;
1502
1503 sendto_common_channels_local_butone(local_chan_o, CAP_INVITE_NOTIFY, 0, "Hello %s!", "World");
1504 is_client_sendq_empty(user, "Not on common channel; " MSG);
1505 is_client_sendq_empty(local_chan_o, "Is the one (neo); " MSG);
1506 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1507 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has cap; " MSG);
1508 is_client_sendq_empty(local_chan_p, "Doesn't have cap; " MSG);
1509 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1510 is_client_sendq_empty(local_no_chan, "Not on common channel; " MSG);
1511 is_client_sendq_empty(server, MSG);
1512 is_client_sendq_empty(server2, MSG);
1513
1514 sendto_common_channels_local_butone(local_chan_o, 0, CAP_INVITE_NOTIFY, "Hello %s!", "World");
1515 is_client_sendq_empty(user, "Not on common channel; " MSG);
1516 is_client_sendq_empty(local_chan_o, "Is the one (neo); " MSG);
1517 is_client_sendq("Hello World!" CRLF, local_chan_ov, "Doesn't have cap; " MSG);
1518 is_client_sendq_empty(local_chan_v, "Has cap; " MSG);
1519 is_client_sendq("Hello World!" CRLF, local_chan_p, "Doesn't have cap; " MSG);
1520 is_client_sendq("Hello World!" CRLF, local_chan_d, "Doesn't have cap; " MSG);
1521 is_client_sendq_empty(local_no_chan, "Not on common channel; " MSG);
1522 is_client_sendq_empty(server, MSG);
1523 is_client_sendq_empty(server2, MSG);
1524
1525 sendto_common_channels_local_butone(local_chan_o, 0, 0, "Hello %s!", "World");
1526 is_client_sendq_empty(user, "Not on common channel; " MSG);
1527 is_client_sendq_empty(local_chan_o, "Is the one (neo); " MSG);
1528 is_client_sendq("Hello World!" CRLF, local_chan_ov, "On common channel; " MSG);
1529 is_client_sendq("Hello World!" CRLF, local_chan_v, "On common channel; " MSG);
1530 is_client_sendq("Hello World!" CRLF, local_chan_p, "On common channel; " MSG);
1531 is_client_sendq("Hello World!" CRLF, local_chan_d, "On common channel; " MSG);
1532 is_client_sendq_empty(local_no_chan, "Not on common channel; " MSG);
1533 is_client_sendq_empty(server, MSG);
1534 is_client_sendq_empty(server2, MSG);
1535
1536 sendto_common_channels_local_butone(local_no_chan, CAP_INVITE_NOTIFY, 0, "Hello %s!", "World");
1537 is_client_sendq_empty(user, "Not on common channel; " MSG);
1538 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1539 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1540 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1541 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1542 is_client_sendq_empty(local_no_chan, "Is the one (neo); " MSG);
1543 is_client_sendq_empty(server, MSG);
1544 is_client_sendq_empty(server2, MSG);
1545
1546 sendto_common_channels_local_butone(local_no_chan, 0, CAP_INVITE_NOTIFY, "Hello %s!", "World");
1547 is_client_sendq_empty(user, "Not on common channel; " MSG);
1548 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1549 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1550 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1551 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1552 is_client_sendq_empty(local_no_chan, "Is the one (neo); " MSG);
1553 is_client_sendq_empty(server, MSG);
1554 is_client_sendq_empty(server2, MSG);
1555
1556 sendto_common_channels_local_butone(local_no_chan, 0, 0, "Hello %s!", "World");
1557 is_client_sendq_empty(user, "Not on common channel; " MSG);
1558 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1559 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1560 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1561 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1562 is_client_sendq_empty(local_no_chan, "Is the one (neo); " MSG);
1563 is_client_sendq_empty(server, MSG);
1564 is_client_sendq_empty(server2, MSG);
1565
1566 local_no_chan->localClient->caps |= CAP_INVITE_NOTIFY;
1567
1568 sendto_common_channels_local_butone(local_no_chan, CAP_INVITE_NOTIFY, 0, "Hello %s!", "World");
1569 is_client_sendq_empty(user, "Not on common channel; " MSG);
1570 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1571 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1572 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1573 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1574 is_client_sendq_empty(local_no_chan, "Is the one (neo); " MSG);
1575 is_client_sendq_empty(server, MSG);
1576 is_client_sendq_empty(server2, MSG);
1577
1578 sendto_common_channels_local_butone(local_no_chan, 0, CAP_INVITE_NOTIFY, "Hello %s!", "World");
1579 is_client_sendq_empty(user, "Not on common channel; " MSG);
1580 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1581 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1582 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1583 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1584 is_client_sendq_empty(local_no_chan, "Is the one (neo); " MSG);
1585 is_client_sendq_empty(server, MSG);
1586 is_client_sendq_empty(server2, MSG);
1587
1588 sendto_common_channels_local_butone(local_no_chan, 0, 0, "Hello %s!", "World");
1589 is_client_sendq_empty(user, "Not on common channel; " MSG);
1590 is_client_sendq_empty(local_chan_o, "Not on common channel; " MSG);
1591 is_client_sendq_empty(local_chan_ov, "Not on common channel; " MSG);
1592 is_client_sendq_empty(local_chan_p, "Not on common channel; " MSG);
1593 is_client_sendq_empty(local_chan_d, "Not on common channel; " MSG);
1594 is_client_sendq_empty(local_no_chan, "Is the one (neo); " MSG);
1595 is_client_sendq_empty(server, MSG);
1596 is_client_sendq_empty(server2, MSG);
1597
1598 standard_free();
1599 }
1600
1601 static void sendto_match_butone__host(void)
1602 {
1603 standard_init();
1604
1605 // This function does not support TS5...
1606 standard_ids();
1607
1608 // Local
1609 sendto_match_butone(NULL, user, "*.test", MATCH_HOST, "TEST Hello %s!", "World");
1610 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, user, "Host matches; " MSG);
1611 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_o, "Host matches; " MSG);
1612 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_ov, "Host matches; " MSG);
1613 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_v, "Host matches; " MSG);
1614 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_p, "Host matches; " MSG);
1615 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_d, "Host matches; " MSG);
1616 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server, "Is a server; " MSG);
1617 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1618 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1619
1620 sendto_match_butone(NULL, user, "*.invalid", MATCH_HOST, "TEST Hello %s!", "World");
1621 is_client_sendq_empty(user, "Host doesn't match; " MSG);
1622 is_client_sendq_empty(local_chan_o, "Host doesn't match; " MSG);
1623 is_client_sendq_empty(local_chan_ov, "Host doesn't match; " MSG);
1624 is_client_sendq_empty(local_chan_v, "Host doesn't match; " MSG);
1625 is_client_sendq_empty(local_chan_p, "Host doesn't match; " MSG);
1626 is_client_sendq_empty(local_chan_d, "Host doesn't match; " MSG);
1627 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server, "Is a server; " MSG);
1628 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1629 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1630
1631 sendto_match_butone(server, user, "*.test", MATCH_HOST, "TEST Hello %s!", "World");
1632 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, user, "Host matches; " MSG);
1633 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_o, "Host matches; " MSG);
1634 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_ov, "Host matches; " MSG);
1635 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_v, "Host matches; " MSG);
1636 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_p, "Host matches; " MSG);
1637 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_d, "Host matches; " MSG);
1638 is_client_sendq_empty(server, "Is the one (neo); " MSG);
1639 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1640 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1641
1642 sendto_match_butone(server, user, "*.invalid", MATCH_HOST, "TEST Hello %s!", "World");
1643 is_client_sendq_empty(user, "Host doesn't match; " MSG);
1644 is_client_sendq_empty(local_chan_o, "Host doesn't match; " MSG);
1645 is_client_sendq_empty(local_chan_ov, "Host doesn't match; " MSG);
1646 is_client_sendq_empty(local_chan_v, "Host doesn't match; " MSG);
1647 is_client_sendq_empty(local_chan_p, "Host doesn't match; " MSG);
1648 is_client_sendq_empty(local_chan_d, "Host doesn't match; " MSG);
1649 is_client_sendq_empty(server, "Is the one (neo); " MSG);
1650 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1651 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1652
1653 // Remote
1654 sendto_match_butone(NULL, remote, "*.test", MATCH_HOST, "TEST Hello %s!", "World");
1655 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, user, "Host matches; " MSG);
1656 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_o, "Host matches; " MSG);
1657 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_ov, "Host matches; " MSG);
1658 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_v, "Host matches; " MSG);
1659 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_p, "Host matches; " MSG);
1660 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_d, "Host matches; " MSG);
1661 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server, "Is a server; " MSG);
1662 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1663 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1664
1665 sendto_match_butone(NULL, remote, "*.invalid", MATCH_HOST, "TEST Hello %s!", "World");
1666 is_client_sendq_empty(user, "Host doesn't match; " MSG);
1667 is_client_sendq_empty(local_chan_o, "Host doesn't match; " MSG);
1668 is_client_sendq_empty(local_chan_ov, "Host doesn't match; " MSG);
1669 is_client_sendq_empty(local_chan_v, "Host doesn't match; " MSG);
1670 is_client_sendq_empty(local_chan_p, "Host doesn't match; " MSG);
1671 is_client_sendq_empty(local_chan_d, "Host doesn't match; " MSG);
1672 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server, "Is a server; " MSG);
1673 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1674 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1675
1676 sendto_match_butone(server, remote, "*.test", MATCH_HOST, "TEST Hello %s!", "World");
1677 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, user, "Host matches; " MSG);
1678 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_o, "Host matches; " MSG);
1679 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_ov, "Host matches; " MSG);
1680 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_v, "Host matches; " MSG);
1681 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_p, "Host matches; " MSG);
1682 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_d, "Host matches; " MSG);
1683 is_client_sendq_empty(server, "Is the one (neo); " MSG);
1684 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1685 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1686
1687 sendto_match_butone(server, remote, "*.invalid", MATCH_HOST, "TEST Hello %s!", "World");
1688 is_client_sendq_empty(user, "Host doesn't match; " MSG);
1689 is_client_sendq_empty(local_chan_o, "Host doesn't match; " MSG);
1690 is_client_sendq_empty(local_chan_ov, "Host doesn't match; " MSG);
1691 is_client_sendq_empty(local_chan_v, "Host doesn't match; " MSG);
1692 is_client_sendq_empty(local_chan_p, "Host doesn't match; " MSG);
1693 is_client_sendq_empty(local_chan_d, "Host doesn't match; " MSG);
1694 is_client_sendq_empty(server, "Is the one (neo); " MSG);
1695 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1696 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1697
1698 standard_free();
1699 }
1700
1701 static void sendto_match_butone__server(void)
1702 {
1703 standard_init();
1704
1705 // This function does not support TS5...
1706 standard_ids();
1707
1708 // Local
1709 sendto_match_butone(NULL, user, "me.*", MATCH_SERVER, "TEST Hello %s!", "World");
1710 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, user, "Server matches; " MSG);
1711 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_o, "Server matches; " MSG);
1712 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_ov, "Server matches; " MSG);
1713 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_v, "Server matches; " MSG);
1714 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_p, "Server matches; " MSG);
1715 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_d, "Server matches; " MSG);
1716 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server, "Is a server; " MSG);
1717 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1718 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1719
1720 sendto_match_butone(NULL, user, "example.*", MATCH_SERVER, "TEST Hello %s!", "World");
1721 is_client_sendq_empty(user, "Host doesn't match; " MSG);
1722 is_client_sendq_empty(local_chan_o, "Host doesn't match; " MSG);
1723 is_client_sendq_empty(local_chan_ov, "Host doesn't match; " MSG);
1724 is_client_sendq_empty(local_chan_v, "Host doesn't match; " MSG);
1725 is_client_sendq_empty(local_chan_p, "Host doesn't match; " MSG);
1726 is_client_sendq_empty(local_chan_d, "Host doesn't match; " MSG);
1727 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server, "Is a server; " MSG);
1728 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1729 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1730
1731 sendto_match_butone(server, user, "me.*", MATCH_SERVER, "TEST Hello %s!", "World");
1732 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, user, "Server matches; " MSG);
1733 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_o, "Server matches; " MSG);
1734 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_ov, "Server matches; " MSG);
1735 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_v, "Server matches; " MSG);
1736 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_p, "Server matches; " MSG);
1737 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_d, "Server matches; " MSG);
1738 is_client_sendq_empty(server, "Is the one (neo); " MSG);
1739 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1740 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1741
1742 sendto_match_butone(server, user, "example.*", MATCH_SERVER, "TEST Hello %s!", "World");
1743 is_client_sendq_empty(user, "Host doesn't match; " MSG);
1744 is_client_sendq_empty(local_chan_o, "Host doesn't match; " MSG);
1745 is_client_sendq_empty(local_chan_ov, "Host doesn't match; " MSG);
1746 is_client_sendq_empty(local_chan_v, "Host doesn't match; " MSG);
1747 is_client_sendq_empty(local_chan_p, "Host doesn't match; " MSG);
1748 is_client_sendq_empty(local_chan_d, "Host doesn't match; " MSG);
1749 is_client_sendq_empty(server, "Is the one (neo); " MSG);
1750 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1751 is_client_sendq(":" TEST_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1752
1753 // Remote
1754 sendto_match_butone(NULL, remote, "me.*", MATCH_SERVER, "TEST Hello %s!", "World");
1755 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, user, "Server matches; " MSG);
1756 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_o, "Server matches; " MSG);
1757 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_ov, "Server matches; " MSG);
1758 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_v, "Server matches; " MSG);
1759 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_p, "Server matches; " MSG);
1760 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_d, "Server matches; " MSG);
1761 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server, "Is a server; " MSG);
1762 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1763 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1764
1765 sendto_match_butone(NULL, remote, "example.*", MATCH_SERVER, "TEST Hello %s!", "World");
1766 is_client_sendq_empty(user, "Host doesn't match; " MSG);
1767 is_client_sendq_empty(local_chan_o, "Host doesn't match; " MSG);
1768 is_client_sendq_empty(local_chan_ov, "Host doesn't match; " MSG);
1769 is_client_sendq_empty(local_chan_v, "Host doesn't match; " MSG);
1770 is_client_sendq_empty(local_chan_p, "Host doesn't match; " MSG);
1771 is_client_sendq_empty(local_chan_d, "Host doesn't match; " MSG);
1772 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server, "Is a server; " MSG);
1773 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1774 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1775
1776 sendto_match_butone(server, remote, "me.*", MATCH_SERVER, "TEST Hello %s!", "World");
1777 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, user, "Server matches; " MSG);
1778 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_o, "Server matches; " MSG);
1779 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_ov, "Server matches; " MSG);
1780 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_v, "Server matches; " MSG);
1781 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_p, "Server matches; " MSG);
1782 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST Hello World!" CRLF, local_chan_d, "Server matches; " MSG);
1783 is_client_sendq_empty(server, "Is the one (neo); " MSG);
1784 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1785 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1786
1787 sendto_match_butone(server, remote, "example.*", MATCH_SERVER, "TEST Hello %s!", "World");
1788 is_client_sendq_empty(user, "Host doesn't match; " MSG);
1789 is_client_sendq_empty(local_chan_o, "Host doesn't match; " MSG);
1790 is_client_sendq_empty(local_chan_ov, "Host doesn't match; " MSG);
1791 is_client_sendq_empty(local_chan_v, "Host doesn't match; " MSG);
1792 is_client_sendq_empty(local_chan_p, "Host doesn't match; " MSG);
1793 is_client_sendq_empty(local_chan_d, "Host doesn't match; " MSG);
1794 is_client_sendq_empty(server, "Is the one (neo); " MSG);
1795 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server2, "Is a server; " MSG);
1796 is_client_sendq(":" TEST_REMOTE_ID " TEST Hello World!" CRLF, server3, "Is a server; " MSG);
1797
1798 standard_free();
1799 }
1800
1801 static void sendto_local_clients_with_capability1(void)
1802 {
1803 standard_init();
1804
1805 local_chan_o->localClient->caps |= CAP_INVITE_NOTIFY;
1806 local_chan_v->localClient->caps |= CAP_INVITE_NOTIFY;
1807
1808 sendto_local_clients_with_capability(CAP_INVITE_NOTIFY, "Hello %s!", "World");
1809 is_client_sendq_empty(user, "Doesn't have cap; " MSG);
1810 is_client_sendq("Hello World!" CRLF, local_chan_o, "Has cap; " MSG);
1811 is_client_sendq_empty(local_chan_ov, "Doesn't have cap; " MSG);
1812 is_client_sendq("Hello World!" CRLF, local_chan_v, "Has cap; " MSG);
1813 is_client_sendq_empty(local_chan_p, "Doesn't have cap; " MSG);
1814 is_client_sendq_empty(local_chan_d, "Doesn't have cap; " MSG);
1815 is_client_sendq_empty(server, MSG);
1816 is_client_sendq_empty(server2, MSG);
1817
1818 standard_free();
1819 }
1820
1821 static void sendto_monitor1(void)
1822 {
1823 struct monitor *monptr;
1824
1825 standard_init();
1826
1827 monptr = find_monitor(TEST_NICK, 1);
1828 rb_dlinkAddAlloc(local_chan_o, &monptr->users);
1829 rb_dlinkAddAlloc(monptr, &local_chan_o->localClient->monitor_list);
1830 rb_dlinkAddAlloc(local_chan_v, &monptr->users);
1831 rb_dlinkAddAlloc(monptr, &local_chan_v->localClient->monitor_list);
1832
1833 sendto_monitor(monptr, "Hello %s!", "World");
1834 is_client_sendq_empty(user, "Not monitoring; " MSG);
1835 is_client_sendq("Hello World!" CRLF, local_chan_o, "Monitoring; " MSG);
1836 is_client_sendq_empty(local_chan_ov, "Not monitoring; " MSG);
1837 is_client_sendq("Hello World!" CRLF, local_chan_v, "Monitoring; " MSG);
1838 is_client_sendq_empty(local_chan_p, "Not monitoring; " MSG);
1839 is_client_sendq_empty(local_chan_d, "Not monitoring; " MSG);
1840 is_client_sendq_empty(server, MSG);
1841 is_client_sendq_empty(server2, MSG);
1842
1843 standard_free();
1844 }
1845
1846 static void sendto_anywhere1(void)
1847 {
1848 standard_init();
1849
1850 // This function does not support TS5...
1851 standard_ids();
1852
1853 // Local
1854 sendto_anywhere(user, remote, "TEST", "Hello %s!", "World");
1855 is_client_sendq(":" TEST_REMOTE_NICK TEST_ID_SUFFIX " TEST " TEST_NICK " Hello World!" CRLF, user, MSG);
1856 is_client_sendq_empty(server, MSG);
1857
1858 sendto_anywhere(user, local_chan_o, "TEST", "Hello %s!", "World");
1859 is_client_sendq(":LChanOp" TEST_ID_SUFFIX " TEST " TEST_NICK " Hello World!" CRLF, user, MSG);
1860 is_client_sendq_empty(local_chan_o, MSG);
1861 is_client_sendq_empty(server, MSG);
1862
1863 sendto_anywhere(user, server, "TEST", "Hello %s!", "World");
1864 is_client_sendq(":" TEST_SERVER_NAME " TEST " TEST_NICK " Hello World!" CRLF, user, MSG);
1865 is_client_sendq_empty(server, MSG);
1866
1867 sendto_anywhere(user, &me, "TEST", "Hello %s!", "World");
1868 is_client_sendq(":" TEST_ME_NAME " TEST " TEST_NICK " Hello World!" CRLF, user, MSG);
1869 is_client_sendq_empty(server, MSG);
1870
1871 // Remote
1872 sendto_anywhere(remote, user, "TEST", "Hello %s!", "World");
1873 is_client_sendq_empty(user, MSG);
1874 is_client_sendq(":" TEST_ID " TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1875
1876 sendto_anywhere(remote, local_chan_o, "TEST", "Hello %s!", "World");
1877 is_client_sendq_empty(local_chan_o, MSG);
1878 is_client_sendq(":" TEST_ME_ID "90001 TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1879
1880 sendto_anywhere(remote, server2, "TEST", "Hello %s!", "World");
1881 is_client_sendq(":" TEST_SERVER2_ID " TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1882 is_client_sendq_empty(server2, MSG);
1883
1884 sendto_anywhere(remote, &me, "TEST", "Hello %s!", "World");
1885 is_client_sendq(":" TEST_ME_ID " TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1886 is_client_sendq_empty(server2, MSG);
1887
1888 standard_free();
1889 }
1890
1891 static void sendto_anywhere1__tags(void)
1892 {
1893 standard_init();
1894
1895 strcpy(user->user->suser, "test");
1896 strcpy(local_chan_o->user->suser, "test_o");
1897 strcpy(local_chan_ov->user->suser, "test_ov");
1898 strcpy(local_chan_v->user->suser, "test_v");
1899 strcpy(local_chan_p->user->suser, "test_p");
1900 local_chan_o->localClient->caps |= CAP_ACCOUNT_TAG;
1901 local_chan_o->localClient->caps |= CAP_SERVER_TIME;
1902 local_chan_ov->localClient->caps |= CAP_SERVER_TIME;
1903 local_chan_v->localClient->caps |= CAP_ACCOUNT_TAG;
1904
1905 // This function does not support TS5...
1906 standard_ids();
1907
1908 // Local
1909 sendto_anywhere(user, local_chan_p, "TEST", "Hello %s!", "World");
1910 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_NICK " Hello World!" CRLF, user, MSG);
1911 is_client_sendq_empty(local_chan_p, MSG);
1912 is_client_sendq_empty(server, MSG);
1913
1914 sendto_anywhere(local_chan_o, local_chan_p, "TEST", "Hello %s!", "World");
1915 is_client_sendq("@time=" ADVENTURE_TIME ";account=test_p :LChanPeon" TEST_ID_SUFFIX " TEST LChanOp Hello World!" CRLF, local_chan_o, MSG);
1916 is_client_sendq_empty(local_chan_p, MSG);
1917 is_client_sendq_empty(server, MSG);
1918
1919 sendto_anywhere(local_chan_ov, local_chan_p, "TEST", "Hello %s!", "World");
1920 is_client_sendq("@time=" ADVENTURE_TIME " :LChanPeon" TEST_ID_SUFFIX " TEST LChanOpVoice Hello World!" CRLF, local_chan_ov, MSG);
1921 is_client_sendq_empty(local_chan_p, MSG);
1922 is_client_sendq_empty(server, MSG);
1923
1924 sendto_anywhere(local_chan_v, local_chan_p, "TEST", "Hello %s!", "World");
1925 is_client_sendq("@account=test_p :LChanPeon" TEST_ID_SUFFIX " TEST LChanVoice Hello World!" CRLF, local_chan_v, MSG);
1926 is_client_sendq_empty(local_chan_p, MSG);
1927 is_client_sendq_empty(server, MSG);
1928
1929 sendto_anywhere(user, server, "TEST", "Hello %s!", "World");
1930 is_client_sendq(":" TEST_SERVER_NAME " TEST " TEST_NICK " Hello World!" CRLF, user, MSG);
1931 is_client_sendq_empty(server, MSG);
1932
1933 sendto_anywhere(user, &me, "TEST", "Hello %s!", "World");
1934 is_client_sendq(":" TEST_ME_NAME " TEST " TEST_NICK " Hello World!" CRLF, user, MSG);
1935 is_client_sendq_empty(server, MSG);
1936
1937 sendto_anywhere(local_chan_o, server, "TEST", "Hello %s!", "World");
1938 is_client_sendq(":" TEST_SERVER_NAME " TEST LChanOp Hello World!" CRLF, local_chan_o, MSG);
1939 is_client_sendq_empty(server, MSG);
1940
1941 sendto_anywhere(local_chan_v, &me, "TEST", "Hello %s!", "World");
1942 is_client_sendq(":" TEST_ME_NAME " TEST LChanVoice Hello World!" CRLF, local_chan_v, MSG);
1943 is_client_sendq_empty(server, MSG);
1944
1945 // Remote
1946 sendto_anywhere(remote, user, "TEST", "Hello %s!", "World");
1947 is_client_sendq_empty(user, MSG);
1948 is_client_sendq(":" TEST_ID " TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1949
1950 sendto_anywhere(remote, local_chan_o, "TEST", "Hello %s!", "World");
1951 is_client_sendq_empty(local_chan_o, MSG);
1952 is_client_sendq(":" TEST_ME_ID "90001 TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1953
1954 sendto_anywhere(remote, local_chan_ov, "TEST", "Hello %s!", "World");
1955 is_client_sendq_empty(local_chan_ov, MSG);
1956 is_client_sendq(":" TEST_ME_ID "90002 TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1957
1958 sendto_anywhere(remote, local_chan_v, "TEST", "Hello %s!", "World");
1959 is_client_sendq_empty(local_chan_v, MSG);
1960 is_client_sendq(":" TEST_ME_ID "90003 TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1961
1962 sendto_anywhere(remote, server2, "TEST", "Hello %s!", "World");
1963 is_client_sendq(":" TEST_SERVER2_ID " TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1964 is_client_sendq_empty(server2, MSG);
1965
1966 sendto_anywhere(remote, &me, "TEST", "Hello %s!", "World");
1967 is_client_sendq(":" TEST_ME_ID " TEST " TEST_REMOTE_ID " Hello World!" CRLF, server, MSG);
1968 is_client_sendq_empty(server2, MSG);
1969
1970 standard_free();
1971 }
1972
1973 static void sendto_anywhere_echo1(void)
1974 {
1975 standard_init();
1976
1977 // Local
1978 sendto_anywhere_echo(user, user, "TEST", "Hello %s!", "World");
1979 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST " TEST_NICK " Hello World!" CRLF, user, MSG);
1980 is_client_sendq_empty(server, MSG);
1981
1982 sendto_anywhere_echo(user, local_chan_o, "TEST", "Hello %s!", "World");
1983 is_client_sendq_empty(user, MSG);
1984 is_client_sendq(":LChanOp" TEST_ID_SUFFIX " TEST " TEST_NICK " Hello World!" CRLF, local_chan_o, MSG);
1985 is_client_sendq_empty(server, MSG);
1986
1987 sendto_anywhere_echo(&me, user, "TEST", "Hello %s!", "World");
1988 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST " TEST_ME_NAME " Hello World!" CRLF, user, MSG);
1989 is_client_sendq_empty(server, MSG);
1990
1991 // Remote
1992 sendto_anywhere_echo(remote, user, "TEST", "Hello %s!", "World");
1993 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST " TEST_REMOTE_NICK " Hello World!" CRLF, user, MSG);
1994 is_client_sendq_empty(server, MSG);
1995
1996 sendto_anywhere_echo(server, user, "TEST", "Hello %s!", "World");
1997 is_client_sendq(":" TEST_NICK TEST_ID_SUFFIX " TEST " TEST_SERVER_NAME " Hello World!" CRLF, user, MSG);
1998 is_client_sendq_empty(server, MSG);
1999
2000 standard_free();
2001 }
2002
2003 static void sendto_anywhere_echo1__tags(void)
2004 {
2005 standard_init();
2006
2007 strcpy(user->user->suser, "test");
2008 strcpy(local_chan_o->user->suser, "test_o");
2009 strcpy(local_chan_ov->user->suser, "test_ov");
2010 strcpy(local_chan_v->user->suser, "test_v");
2011 strcpy(local_chan_p->user->suser, "test_p");
2012 local_chan_o->localClient->caps |= CAP_ACCOUNT_TAG;
2013 local_chan_o->localClient->caps |= CAP_SERVER_TIME;
2014 local_chan_ov->localClient->caps |= CAP_SERVER_TIME;
2015 local_chan_v->localClient->caps |= CAP_ACCOUNT_TAG;
2016
2017 sendto_anywhere_echo(local_chan_o, local_chan_o, "TEST", "Hello %s!", "World");
2018 is_client_sendq("@time=" ADVENTURE_TIME ";account=test_o :LChanOp" TEST_ID_SUFFIX " TEST LChanOp Hello World!" CRLF, local_chan_o, MSG);
2019 is_client_sendq_empty(server, MSG);
2020
2021 sendto_anywhere_echo(user, local_chan_o, "TEST", "Hello %s!", "World");
2022 is_client_sendq_empty(user, MSG);
2023 is_client_sendq("@time=" ADVENTURE_TIME ";account=test_o :LChanOp" TEST_ID_SUFFIX " TEST " TEST_NICK " Hello World!" CRLF, local_chan_o, MSG);
2024 is_client_sendq_empty(server, MSG);
2025
2026 sendto_anywhere_echo(local_chan_p, local_chan_o, "TEST", "Hello %s!", "World");
2027 is_client_sendq("@time=" ADVENTURE_TIME ";account=test_o :LChanOp" TEST_ID_SUFFIX " TEST LChanPeon Hello World!" CRLF, local_chan_o, MSG);
2028 is_client_sendq_empty(local_chan_p, MSG);
2029 is_client_sendq_empty(server, MSG);
2030
2031 sendto_anywhere_echo(&me, local_chan_o, "TEST", "Hello %s!", "World");
2032 is_client_sendq("@time=" ADVENTURE_TIME ";account=test_o :LChanOp" TEST_ID_SUFFIX " TEST " TEST_ME_NAME " Hello World!" CRLF, local_chan_o, MSG);
2033 is_client_sendq_empty(server, MSG);
2034
2035 sendto_anywhere_echo(remote, local_chan_o, "TEST", "Hello %s!", "World");
2036 is_client_sendq("@time=" ADVENTURE_TIME ";account=test_o :LChanOp" TEST_ID_SUFFIX " TEST " TEST_REMOTE_NICK " Hello World!" CRLF, local_chan_o, MSG);
2037 is_client_sendq_empty(server, MSG);
2038
2039 sendto_anywhere_echo(server, local_chan_o, "TEST", "Hello %s!", "World");
2040 is_client_sendq("@time=" ADVENTURE_TIME ";account=test_o :LChanOp" TEST_ID_SUFFIX " TEST " TEST_SERVER_NAME " Hello World!" CRLF, local_chan_o, MSG);
2041 is_client_sendq_empty(server, MSG);
2042
2043
2044 sendto_anywhere_echo(local_chan_ov, local_chan_ov, "TEST", "Hello %s!", "World");
2045 is_client_sendq("@time=" ADVENTURE_TIME " :LChanOpVoice" TEST_ID_SUFFIX " TEST LChanOpVoice Hello World!" CRLF, local_chan_ov, MSG);
2046 is_client_sendq_empty(server, MSG);
2047
2048 sendto_anywhere_echo(user, local_chan_ov, "TEST", "Hello %s!", "World");
2049 is_client_sendq_empty(user, MSG);
2050 is_client_sendq("@time=" ADVENTURE_TIME " :LChanOpVoice" TEST_ID_SUFFIX " TEST " TEST_NICK " Hello World!" CRLF, local_chan_ov, MSG);
2051 is_client_sendq_empty(server, MSG);
2052
2053 sendto_anywhere_echo(local_chan_p, local_chan_ov, "TEST", "Hello %s!", "World");
2054 is_client_sendq("@time=" ADVENTURE_TIME " :LChanOpVoice" TEST_ID_SUFFIX " TEST LChanPeon Hello World!" CRLF, local_chan_ov, MSG);
2055 is_client_sendq_empty(local_chan_p, MSG);
2056 is_client_sendq_empty(server, MSG);
2057
2058 sendto_anywhere_echo(&me, local_chan_ov, "TEST", "Hello %s!", "World");
2059 is_client_sendq("@time=" ADVENTURE_TIME " :LChanOpVoice" TEST_ID_SUFFIX " TEST " TEST_ME_NAME " Hello World!" CRLF, local_chan_ov, MSG);
2060 is_client_sendq_empty(server, MSG);
2061
2062 sendto_anywhere_echo(remote, local_chan_ov, "TEST", "Hello %s!", "World");
2063 is_client_sendq("@time=" ADVENTURE_TIME " :LChanOpVoice" TEST_ID_SUFFIX " TEST " TEST_REMOTE_NICK " Hello World!" CRLF, local_chan_ov, MSG);
2064 is_client_sendq_empty(server, MSG);
2065
2066 sendto_anywhere_echo(server, local_chan_ov, "TEST", "Hello %s!", "World");
2067 is_client_sendq("@time=" ADVENTURE_TIME " :LChanOpVoice" TEST_ID_SUFFIX " TEST " TEST_SERVER_NAME " Hello World!" CRLF, local_chan_ov, MSG);
2068 is_client_sendq_empty(server, MSG);
2069
2070
2071 sendto_anywhere_echo(local_chan_v, local_chan_v, "TEST", "Hello %s!", "World");
2072 is_client_sendq("@account=test_v :LChanVoice" TEST_ID_SUFFIX " TEST LChanVoice Hello World!" CRLF, local_chan_v, MSG);
2073 is_client_sendq_empty(server, MSG);
2074
2075 sendto_anywhere_echo(user, local_chan_v, "TEST", "Hello %s!", "World");
2076 is_client_sendq_empty(user, MSG);
2077 is_client_sendq("@account=test_v :LChanVoice" TEST_ID_SUFFIX " TEST " TEST_NICK " Hello World!" CRLF, local_chan_v, MSG);
2078 is_client_sendq_empty(server, MSG);
2079
2080 sendto_anywhere_echo(local_chan_p, local_chan_v, "TEST", "Hello %s!", "World");
2081 is_client_sendq("@account=test_v :LChanVoice" TEST_ID_SUFFIX " TEST LChanPeon Hello World!" CRLF, local_chan_v, MSG);
2082 is_client_sendq_empty(local_chan_p, MSG);
2083 is_client_sendq_empty(server, MSG);
2084
2085 sendto_anywhere_echo(&me, local_chan_v, "TEST", "Hello %s!", "World");
2086 is_client_sendq("@account=test_v :LChanVoice" TEST_ID_SUFFIX " TEST " TEST_ME_NAME " Hello World!" CRLF, local_chan_v, MSG);
2087 is_client_sendq_empty(server, MSG);
2088
2089 sendto_anywhere_echo(remote, local_chan_v, "TEST", "Hello %s!", "World");
2090 is_client_sendq("@account=test_v :LChanVoice" TEST_ID_SUFFIX " TEST " TEST_REMOTE_NICK " Hello World!" CRLF, local_chan_v, MSG);
2091 is_client_sendq_empty(server, MSG);
2092
2093 sendto_anywhere_echo(server, local_chan_v, "TEST", "Hello %s!", "World");
2094 is_client_sendq("@account=test_v :LChanVoice" TEST_ID_SUFFIX " TEST " TEST_SERVER_NAME " Hello World!" CRLF, local_chan_v, MSG);
2095 is_client_sendq_empty(server, MSG);
2096
2097
2098 sendto_anywhere_echo(local_chan_p, local_chan_p, "TEST", "Hello %s!", "World");
2099 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST LChanPeon Hello World!" CRLF, local_chan_p, MSG);
2100 is_client_sendq_empty(server, MSG);
2101
2102 sendto_anywhere_echo(user, local_chan_p, "TEST", "Hello %s!", "World");
2103 is_client_sendq_empty(user, MSG);
2104 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_NICK " Hello World!" CRLF, local_chan_p, MSG);
2105 is_client_sendq_empty(server, MSG);
2106
2107 sendto_anywhere_echo(&me, local_chan_p, "TEST", "Hello %s!", "World");
2108 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_ME_NAME " Hello World!" CRLF, local_chan_p, MSG);
2109 is_client_sendq_empty(server, MSG);
2110
2111 sendto_anywhere_echo(remote, local_chan_p, "TEST", "Hello %s!", "World");
2112 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_REMOTE_NICK " Hello World!" CRLF, local_chan_p, MSG);
2113 is_client_sendq_empty(server, MSG);
2114
2115 sendto_anywhere_echo(server, local_chan_p, "TEST", "Hello %s!", "World");
2116 is_client_sendq(":LChanPeon" TEST_ID_SUFFIX " TEST " TEST_SERVER_NAME " Hello World!" CRLF, local_chan_p, MSG);
2117 is_client_sendq_empty(server, MSG);
2118
2119 standard_free();
2120 }
2121
2122 static void sendto_match_servs1(void)
2123 {
2124 standard_init();
2125
2126 server->localClient->caps = CAP_ENCAP;
2127 server2->localClient->caps = CAP_ENCAP;
2128 server2->localClient->caps |= CAP_KNOCK;
2129 server3->localClient->caps = CAP_BAN;
2130
2131 // This function does not support TS5...
2132 standard_ids();
2133
2134 // Match all
2135 sendto_match_servs(&me, "*.test", 0, 0, "Hello %s!", "World");
2136 is_client_sendq(":" TEST_ME_ID " Hello World!" CRLF, server, MSG);
2137 is_client_sendq(":" TEST_ME_ID " Hello World!" CRLF, server2, MSG);
2138 is_client_sendq(":" TEST_ME_ID " Hello World!" CRLF, server3, MSG);
2139
2140 sendto_match_servs(user, "*.test", 0, 0, "Hello %s!", "World");
2141 is_client_sendq(":" TEST_ID " Hello World!" CRLF, server, MSG);
2142 is_client_sendq(":" TEST_ID " Hello World!" CRLF, server2, MSG);
2143 is_client_sendq(":" TEST_ID " Hello World!" CRLF, server3, MSG);
2144
2145 sendto_match_servs(remote, "*.test", 0, 0, "Hello %s!", "World");
2146 is_client_sendq_empty(server, MSG);
2147 is_client_sendq(":" TEST_REMOTE_ID " Hello World!" CRLF, server2, MSG);
2148 is_client_sendq(":" TEST_REMOTE_ID " Hello World!" CRLF, server3, MSG);
2149
2150 sendto_match_servs(server, "*.test", 0, 0, "Hello %s!", "World");
2151 is_client_sendq_empty(server, MSG);
2152 is_client_sendq(":" TEST_SERVER_ID " Hello World!" CRLF, server2, MSG);
2153 is_client_sendq(":" TEST_SERVER_ID " Hello World!" CRLF, server3, MSG);
2154
2155 // Match all, CAP_ENCAP but not CAP_KNOCK
2156 sendto_match_servs(&me, "*.test", CAP_ENCAP, CAP_KNOCK, "Hello %s!", "World");
2157 is_client_sendq(":" TEST_ME_ID " Hello World!" CRLF, server, MSG);
2158 is_client_sendq_empty(server2, MSG);
2159 is_client_sendq_empty(server3, MSG);
2160
2161 sendto_match_servs(user, "*.test", CAP_ENCAP, CAP_KNOCK, "Hello %s!", "World");
2162 is_client_sendq(":" TEST_ID " Hello World!" CRLF, server, MSG);
2163 is_client_sendq_empty(server2, MSG);
2164 is_client_sendq_empty(server3, MSG);
2165
2166 sendto_match_servs(remote, "*.test", CAP_ENCAP, CAP_KNOCK, "Hello %s!", "World");
2167 is_client_sendq_empty(server, MSG);
2168 is_client_sendq_empty(server2, MSG);
2169 is_client_sendq_empty(server3, MSG);
2170
2171 sendto_match_servs(server, "*.test", CAP_ENCAP, CAP_KNOCK, "Hello %s!", "World");
2172 is_client_sendq_empty(server, MSG);
2173 is_client_sendq_empty(server2, MSG);
2174 is_client_sendq_empty(server3, MSG);
2175
2176 // Match all, but not CAP_BAN
2177 sendto_match_servs(&me, "*.test", 0, CAP_BAN, "Hello %s!", "World");
2178 is_client_sendq(":" TEST_ME_ID " Hello World!" CRLF, server, MSG);
2179 is_client_sendq(":" TEST_ME_ID " Hello World!" CRLF, server2, MSG);
2180 is_client_sendq_empty(server3, MSG);
2181
2182 sendto_match_servs(user, "*.test", 0, CAP_BAN, "Hello %s!", "World");
2183 is_client_sendq(":" TEST_ID " Hello World!" CRLF, server, MSG);
2184 is_client_sendq(":" TEST_ID " Hello World!" CRLF, server2, MSG);
2185 is_client_sendq_empty(server3, MSG);
2186
2187 sendto_match_servs(remote, "*.test", 0, CAP_BAN, "Hello %s!", "World");
2188 is_client_sendq_empty(server, MSG);
2189 is_client_sendq(":" TEST_REMOTE_ID " Hello World!" CRLF, server2, MSG);
2190 is_client_sendq_empty(server3, MSG);
2191
2192 sendto_match_servs(server, "*.test", 0, CAP_BAN, "Hello %s!", "World");
2193 is_client_sendq_empty(server, MSG);
2194 is_client_sendq(":" TEST_SERVER_ID " Hello World!" CRLF, server2, MSG);
2195 is_client_sendq_empty(server3, MSG);
2196
2197 // Match all, CAP_BAN but not CAP_KNOCK
2198 sendto_match_servs(&me, "*.test", CAP_BAN, CAP_KNOCK, "Hello %s!", "World");
2199 is_client_sendq_empty(server, MSG);
2200 is_client_sendq_empty(server2, MSG);
2201 is_client_sendq(":" TEST_ME_ID " Hello World!" CRLF, server3, MSG);
2202
2203 sendto_match_servs(user, "*.test", CAP_BAN, CAP_KNOCK, "Hello %s!", "World");
2204 is_client_sendq_empty(server, MSG);
2205 is_client_sendq_empty(server2, MSG);
2206 is_client_sendq(":" TEST_ID " Hello World!" CRLF, server3, MSG);
2207
2208 sendto_match_servs(remote, "*.test", CAP_BAN, CAP_KNOCK, "Hello %s!", "World");
2209 is_client_sendq_empty(server, MSG);
2210 is_client_sendq_empty(server2, MSG);
2211 is_client_sendq(":" TEST_REMOTE_ID " Hello World!" CRLF, server3, MSG);
2212
2213 sendto_match_servs(server, "*.test", CAP_BAN, CAP_KNOCK, "Hello %s!", "World");
2214 is_client_sendq_empty(server, MSG);
2215 is_client_sendq_empty(server2, MSG);
2216 is_client_sendq(":" TEST_SERVER_ID " Hello World!" CRLF, server3, MSG);
2217
2218 // Match all, CAP_KNOCK
2219 sendto_match_servs(&me, "*.test", CAP_KNOCK, 0, "Hello %s!", "World");
2220 is_client_sendq_empty(server, MSG);
2221 is_client_sendq(":" TEST_ME_ID " Hello World!" CRLF, server2, MSG);
2222 is_client_sendq_empty(server3, MSG);
2223
2224 sendto_match_servs(user, "*.test", CAP_KNOCK, 0, "Hello %s!", "World");
2225 is_client_sendq_empty(server, MSG);
2226 is_client_sendq(":" TEST_ID " Hello World!" CRLF, server2, MSG);
2227 is_client_sendq_empty(server3, MSG);
2228
2229 sendto_match_servs(remote, "*.test", CAP_KNOCK, 0, "Hello %s!", "World");
2230 is_client_sendq_empty(server, MSG);
2231 is_client_sendq(":" TEST_REMOTE_ID " Hello World!" CRLF, server2, MSG);
2232 is_client_sendq_empty(server3, MSG);
2233
2234 sendto_match_servs(server, "*.test", CAP_KNOCK, 0, "Hello %s!", "World");
2235 is_client_sendq_empty(server, MSG);
2236 is_client_sendq(":" TEST_SERVER_ID " Hello World!" CRLF, server2, MSG);
2237 is_client_sendq_empty(server3, MSG);
2238
2239 // Match none
2240 sendto_match_servs(&me, "*.invalid", 0, 0, "Hello %s!", "World");
2241 is_client_sendq_empty(server, MSG);
2242 is_client_sendq_empty(server2, MSG);
2243 is_client_sendq_empty(server3, MSG);
2244
2245 sendto_match_servs(user, "*.invalid", 0, 0, "Hello %s!", "World");
2246 is_client_sendq_empty(server, MSG);
2247 is_client_sendq_empty(server2, MSG);
2248 is_client_sendq_empty(server3, MSG);
2249
2250 sendto_match_servs(remote, "*.invalid", 0, 0, "Hello %s!", "World");
2251 is_client_sendq_empty(server, MSG);
2252 is_client_sendq_empty(server2, MSG);
2253 is_client_sendq_empty(server3, MSG);
2254
2255 sendto_match_servs(server, "*.invalid", 0, 0, "Hello %s!", "World");
2256 is_client_sendq_empty(server, MSG);
2257 is_client_sendq_empty(server2, MSG);
2258 is_client_sendq_empty(server3, MSG);
2259
2260 standard_free();
2261 }
2262
2263 static void sendto_realops_snomask1(void)
2264 {
2265 struct Client *oper1 = make_local_person_nick("oper1");
2266 struct Client *oper2 = make_local_person_nick("oper2");
2267 struct Client *oper3 = make_local_person_nick("oper3");
2268 struct Client *oper4 = make_local_person_nick("oper4");
2269
2270 standard_init();
2271
2272 make_local_person_oper(oper1);
2273 make_local_person_oper(oper2);
2274 make_local_person_oper(oper3);
2275 make_local_person_oper(oper4);
2276
2277 oper1->snomask = SNO_BOTS | SNO_SKILL;
2278 oper2->snomask = SNO_GENERAL | SNO_REJ;
2279 oper3->snomask = SNO_BOTS | SNO_SKILL;
2280 oper4->snomask = SNO_GENERAL | SNO_REJ;
2281
2282 oper3->localClient->privset = privilegeset_get("admin");
2283 oper4->localClient->privset = privilegeset_get("admin");
2284
2285 server->localClient->caps = CAP_ENCAP | CAP_TS6;
2286 server2->localClient->caps = 0;
2287
2288 ConfigFileEntry.global_snotices = 0;
2289 remote_rehash_oper_p = NULL;
2290
2291 sendto_realops_snomask(SNO_BOTS, L_ALL, "Hello %s!", "World");
2292 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2293 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2294 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2295 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2296 is_client_sendq_empty(server, MSG);
2297
2298 sendto_realops_snomask(SNO_BOTS, L_ADMIN, "Hello %s!", "World");
2299 is_client_sendq_empty(oper1, "Not an admin; " MSG);
2300 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2301 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2302 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2303 is_client_sendq_empty(server, MSG);
2304
2305 sendto_realops_snomask(SNO_BOTS, L_OPER, "Hello %s!", "World");
2306 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2307 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2308 is_client_sendq_empty(oper3, "Not an oper; " MSG);
2309 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2310 is_client_sendq_empty(server, MSG);
2311
2312 sendto_realops_snomask(SNO_GENERAL, L_ALL, "Hello %s!", "World");
2313 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2314 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2315 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2316 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2317 is_client_sendq_empty(server, MSG);
2318
2319 sendto_realops_snomask(SNO_GENERAL, L_ADMIN, "Hello %s!", "World");
2320 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2321 is_client_sendq_empty(oper2, "Not an admin; " MSG);
2322 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2323 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2324 is_client_sendq_empty(server, MSG);
2325
2326 sendto_realops_snomask(SNO_GENERAL, L_OPER, "Hello %s!", "World");
2327 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2328 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2329 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2330 is_client_sendq_empty(oper4, "Not an oper; " MSG);
2331 is_client_sendq_empty(server, MSG);
2332
2333 remote_rehash_oper_p = remote;
2334
2335 sendto_realops_snomask(SNO_BOTS, L_ALL, "Hello %s!", "World");
2336 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2337 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2338 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2339 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2340 is_client_sendq(":" TEST_ME_NAME " NOTICE " TEST_REMOTE_NICK " :*** Notice -- Hello World!" CRLF, server, MSG);
2341
2342 sendto_realops_snomask(SNO_BOTS, L_ADMIN, "Hello %s!", "World");
2343 is_client_sendq_empty(oper1, "Not an admin; " MSG);
2344 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2345 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2346 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2347 is_client_sendq(":" TEST_ME_NAME " NOTICE " TEST_REMOTE_NICK " :*** Notice -- Hello World!" CRLF, server, MSG);
2348
2349 sendto_realops_snomask(SNO_BOTS, L_OPER, "Hello %s!", "World");
2350 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2351 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2352 is_client_sendq_empty(oper3, "Not an oper; " MSG);
2353 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2354 is_client_sendq(":" TEST_ME_NAME " NOTICE " TEST_REMOTE_NICK " :*** Notice -- Hello World!" CRLF, server, MSG);
2355
2356 sendto_realops_snomask(SNO_GENERAL, L_ALL, "Hello %s!", "World");
2357 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2358 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2359 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2360 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2361 is_client_sendq(":" TEST_ME_NAME " NOTICE " TEST_REMOTE_NICK " :*** Notice -- Hello World!" CRLF, server, MSG);
2362
2363 sendto_realops_snomask(SNO_GENERAL, L_ADMIN, "Hello %s!", "World");
2364 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2365 is_client_sendq_empty(oper2, "Not an admin; " MSG);
2366 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2367 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2368 is_client_sendq(":" TEST_ME_NAME " NOTICE " TEST_REMOTE_NICK " :*** Notice -- Hello World!" CRLF, server, MSG);
2369
2370 sendto_realops_snomask(SNO_GENERAL, L_OPER, "Hello %s!", "World");
2371 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2372 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2373 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2374 is_client_sendq_empty(oper4, "Not an oper; " MSG);
2375 is_client_sendq(":" TEST_ME_NAME " NOTICE " TEST_REMOTE_NICK " :*** Notice -- Hello World!" CRLF, server, MSG);
2376
2377 standard_ids();
2378
2379 sendto_realops_snomask(SNO_BOTS, L_ALL, "Hello %s!", "World");
2380 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2381 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2382 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2383 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2384 is_client_sendq(":" TEST_ME_ID " NOTICE " TEST_REMOTE_ID " :*** Notice -- Hello World!" CRLF, server, MSG);
2385
2386 sendto_realops_snomask(SNO_BOTS, L_ADMIN, "Hello %s!", "World");
2387 is_client_sendq_empty(oper1, "Not an admin; " MSG);
2388 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2389 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2390 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2391 is_client_sendq(":" TEST_ME_ID " NOTICE " TEST_REMOTE_ID " :*** Notice -- Hello World!" CRLF, server, MSG);
2392
2393 sendto_realops_snomask(SNO_BOTS, L_OPER, "Hello %s!", "World");
2394 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2395 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2396 is_client_sendq_empty(oper3, "Not an oper; " MSG);
2397 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2398 is_client_sendq(":" TEST_ME_ID " NOTICE " TEST_REMOTE_ID " :*** Notice -- Hello World!" CRLF, server, MSG);
2399
2400 sendto_realops_snomask(SNO_GENERAL, L_ALL, "Hello %s!", "World");
2401 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2402 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2403 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2404 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2405 is_client_sendq(":" TEST_ME_ID " NOTICE " TEST_REMOTE_ID " :*** Notice -- Hello World!" CRLF, server, MSG);
2406
2407 sendto_realops_snomask(SNO_GENERAL, L_ADMIN, "Hello %s!", "World");
2408 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2409 is_client_sendq_empty(oper2, "Not an admin; " MSG);
2410 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2411 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2412 is_client_sendq(":" TEST_ME_ID " NOTICE " TEST_REMOTE_ID " :*** Notice -- Hello World!" CRLF, server, MSG);
2413
2414 sendto_realops_snomask(SNO_GENERAL, L_OPER, "Hello %s!", "World");
2415 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2416 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2417 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2418 is_client_sendq_empty(oper4, "Not an oper; " MSG);
2419 is_client_sendq(":" TEST_ME_ID " NOTICE " TEST_REMOTE_ID " :*** Notice -- Hello World!" CRLF, server, MSG);
2420
2421 // This feature does not support TS5...
2422 ConfigFileEntry.global_snotices = 1;
2423
2424 sendto_realops_snomask(SNO_BOTS, L_NETWIDE | L_ALL, "Hello %s!", "World");
2425 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2426 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2427 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2428 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2429 is_client_sendq(":" TEST_ME_ID " ENCAP * SNOTE b :Hello World!" CRLF, server, MSG);
2430 is_client_sendq_empty(server2, MSG);
2431
2432 sendto_realops_snomask(SNO_BOTS, L_NETWIDE | L_ADMIN, "Hello %s!", "World");
2433 is_client_sendq_empty(oper1, "Not an admin; " MSG);
2434 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2435 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2436 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2437 is_client_sendq(":" TEST_ME_ID " ENCAP * SNOTE b :Hello World!" CRLF, server, MSG);
2438 is_client_sendq_empty(server2, MSG);
2439
2440 sendto_realops_snomask(SNO_BOTS, L_NETWIDE | L_OPER, "Hello %s!", "World");
2441 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2442 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2443 is_client_sendq_empty(oper3, "Not an oper; " MSG);
2444 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2445 is_client_sendq(":" TEST_ME_ID " ENCAP * SNOTE b :Hello World!" CRLF, server, MSG);
2446 is_client_sendq_empty(server2, MSG);
2447
2448 sendto_realops_snomask(SNO_GENERAL, L_NETWIDE | L_ALL, "Hello %s!", "World");
2449 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2450 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2451 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2452 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2453 is_client_sendq(":" TEST_ME_ID " ENCAP * SNOTE s :Hello World!" CRLF, server, MSG);
2454 is_client_sendq_empty(server2, MSG);
2455
2456 sendto_realops_snomask(SNO_GENERAL, L_NETWIDE | L_ADMIN, "Hello %s!", "World");
2457 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2458 is_client_sendq_empty(oper2, "Not an admin; " MSG);
2459 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2460 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2461 is_client_sendq(":" TEST_ME_ID " ENCAP * SNOTE s :Hello World!" CRLF, server, MSG);
2462 is_client_sendq_empty(server2, MSG);
2463
2464 sendto_realops_snomask(SNO_GENERAL, L_NETWIDE | L_OPER, "Hello %s!", "World");
2465 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2466 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2467 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2468 is_client_sendq_empty(oper4, "Not an oper; " MSG);
2469 is_client_sendq(":" TEST_ME_ID " ENCAP * SNOTE s :Hello World!" CRLF, server, MSG);
2470 is_client_sendq_empty(server2, MSG);
2471
2472 remove_local_person(oper1);
2473 remove_local_person(oper2);
2474 remove_local_person(oper3);
2475 remove_local_person(oper4);
2476
2477 standard_free();
2478 }
2479
2480 static void sendto_realops_snomask_from1(void)
2481 {
2482 struct Client *oper1 = make_local_person_nick("oper1");
2483 struct Client *oper2 = make_local_person_nick("oper2");
2484 struct Client *oper3 = make_local_person_nick("oper3");
2485 struct Client *oper4 = make_local_person_nick("oper4");
2486
2487 make_local_person_oper(oper1);
2488 make_local_person_oper(oper2);
2489 make_local_person_oper(oper3);
2490 make_local_person_oper(oper4);
2491
2492 oper1->snomask = SNO_BOTS | SNO_SKILL;
2493 oper2->snomask = SNO_GENERAL | SNO_REJ;
2494 oper3->snomask = SNO_BOTS | SNO_SKILL;
2495 oper4->snomask = SNO_GENERAL | SNO_REJ;
2496
2497 oper3->localClient->privset = privilegeset_get("admin");
2498 oper4->localClient->privset = privilegeset_get("admin");
2499
2500 sendto_realops_snomask_from(SNO_BOTS, L_ALL, &me, "Hello %s!", "World");
2501 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2502 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2503 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2504 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2505 is_client_sendq_empty(server, MSG);
2506
2507 sendto_realops_snomask_from(SNO_BOTS, L_ADMIN, &me, "Hello %s!", "World");
2508 is_client_sendq_empty(oper1, "Not an admin; " MSG);
2509 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2510 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2511 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2512 is_client_sendq_empty(server, MSG);
2513
2514 sendto_realops_snomask_from(SNO_BOTS, L_OPER, &me, "Hello %s!", "World");
2515 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2516 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2517 is_client_sendq_empty(oper3, "Not an oper; " MSG);
2518 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2519 is_client_sendq_empty(server, MSG);
2520
2521 sendto_realops_snomask_from(SNO_BOTS, L_ALL, server, "Hello %s!", "World");
2522 is_client_sendq(":" TEST_SERVER_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2523 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2524 is_client_sendq(":" TEST_SERVER_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2525 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2526 is_client_sendq_empty(server, MSG);
2527
2528 sendto_realops_snomask_from(SNO_BOTS, L_ADMIN, server, "Hello %s!", "World");
2529 is_client_sendq_empty(oper1, "Not an admin; " MSG);
2530 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2531 is_client_sendq(":" TEST_SERVER_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper3, "Matches mask; " MSG);
2532 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2533 is_client_sendq_empty(server, MSG);
2534
2535 sendto_realops_snomask_from(SNO_BOTS, L_OPER, server, "Hello %s!", "World");
2536 is_client_sendq(":" TEST_SERVER_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper1, "Matches mask; " MSG);
2537 is_client_sendq_empty(oper2, "Doesn't match mask; " MSG);
2538 is_client_sendq_empty(oper3, "Not an oper; " MSG);
2539 is_client_sendq_empty(oper4, "Doesn't match mask; " MSG);
2540 is_client_sendq_empty(server, MSG);
2541
2542 sendto_realops_snomask_from(SNO_GENERAL, L_ALL, &me, "Hello %s!", "World");
2543 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2544 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2545 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2546 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2547 is_client_sendq_empty(server, MSG);
2548
2549 sendto_realops_snomask_from(SNO_GENERAL, L_ADMIN, &me, "Hello %s!", "World");
2550 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2551 is_client_sendq_empty(oper2, "Not an admin; " MSG);
2552 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2553 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2554 is_client_sendq_empty(server, MSG);
2555
2556 sendto_realops_snomask_from(SNO_GENERAL, L_OPER, &me, "Hello %s!", "World");
2557 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2558 is_client_sendq(":" TEST_ME_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2559 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2560 is_client_sendq_empty(oper4, "Not an oper; " MSG);
2561 is_client_sendq_empty(server, MSG);
2562
2563 sendto_realops_snomask_from(SNO_GENERAL, L_ALL, server, "Hello %s!", "World");
2564 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2565 is_client_sendq(":" TEST_SERVER_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2566 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2567 is_client_sendq(":" TEST_SERVER_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2568 is_client_sendq_empty(server, MSG);
2569
2570 sendto_realops_snomask_from(SNO_GENERAL, L_ADMIN, server, "Hello %s!", "World");
2571 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2572 is_client_sendq_empty(oper2, "Not an admin; " MSG);
2573 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2574 is_client_sendq(":" TEST_SERVER_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper4, "Matches mask; " MSG);
2575 is_client_sendq_empty(server, MSG);
2576
2577 sendto_realops_snomask_from(SNO_GENERAL, L_OPER, server, "Hello %s!", "World");
2578 is_client_sendq_empty(oper1, "Doesn't match mask; " MSG);
2579 is_client_sendq(":" TEST_SERVER_NAME " NOTICE * :*** Notice -- Hello World!" CRLF, oper2, "Matches mask; " MSG);
2580 is_client_sendq_empty(oper3, "Doesn't match mask; " MSG);
2581 is_client_sendq_empty(oper4, "Not an oper; " MSG);
2582 is_client_sendq_empty(server, MSG);
2583
2584 remove_local_person(oper1);
2585 remove_local_person(oper2);
2586 remove_local_person(oper3);
2587 remove_local_person(oper4);
2588 }
2589
2590 static void sendto_wallops_flags1(void)
2591 {
2592 struct Client *user1 = make_local_person_nick("user1");
2593 struct Client *user2 = make_local_person_nick("user2");
2594 struct Client *oper1 = make_local_person_nick("oper1");
2595 struct Client *oper2 = make_local_person_nick("oper2");
2596 struct Client *oper3 = make_local_person_nick("oper3");
2597 struct Client *oper4 = make_local_person_nick("oper4");
2598
2599 make_local_person_oper(oper1);
2600 make_local_person_oper(oper2);
2601 make_local_person_oper(oper3);
2602 make_local_person_oper(oper4);
2603
2604 user1->umodes |= UMODE_WALLOP;
2605 oper1->umodes |= UMODE_WALLOP | UMODE_OPERWALL;
2606 oper2->umodes |= UMODE_WALLOP | UMODE_OPERWALL | UMODE_ADMIN;
2607 oper3->umodes |= UMODE_WALLOP;
2608 oper4->umodes |= UMODE_OPERWALL;
2609
2610 sendto_wallops_flags(UMODE_WALLOP, oper1, "Test to users");
2611 is_client_sendq(":oper1" TEST_ID_SUFFIX " WALLOPS :Test to users" CRLF, user1, "User is +w; " MSG);
2612 is_client_sendq_empty(user2, "User is -w; " MSG);
2613 is_client_sendq(":oper1" TEST_ID_SUFFIX " WALLOPS :Test to users" CRLF, oper1, "User is +w; " MSG);
2614 is_client_sendq(":oper1" TEST_ID_SUFFIX " WALLOPS :Test to users" CRLF, oper2, "User is +w; " MSG);
2615 is_client_sendq(":oper1" TEST_ID_SUFFIX " WALLOPS :Test to users" CRLF, oper3, "User is +w; " MSG);
2616 is_client_sendq_empty(oper4, "User is -w; " MSG);
2617 is_client_sendq_empty(server, MSG);
2618
2619 sendto_wallops_flags(UMODE_OPERWALL, oper2, "Test to opers");
2620 is_client_sendq_empty(user1, "Not an oper; " MSG);
2621 is_client_sendq_empty(user2, "Not an oper; " MSG);
2622 is_client_sendq(":oper2" TEST_ID_SUFFIX " WALLOPS :Test to opers" CRLF, oper1, "Oper is +z; " MSG);
2623 is_client_sendq(":oper2" TEST_ID_SUFFIX " WALLOPS :Test to opers" CRLF, oper2, "Oper is +z; " MSG);
2624 is_client_sendq_empty(oper3, "Oper is -z; " MSG);
2625 is_client_sendq(":oper2" TEST_ID_SUFFIX " WALLOPS :Test to opers" CRLF, oper4, "Oper is +z; " MSG);
2626 is_client_sendq_empty(server, MSG);
2627
2628 sendto_wallops_flags(UMODE_ADMIN, &me, "Test to admins");
2629 is_client_sendq_empty(user1, "Not an admin; " MSG);
2630 is_client_sendq_empty(user2, "Not an admin; " MSG);
2631 is_client_sendq_empty(oper1, "Not an admin; " MSG);
2632 is_client_sendq(":" TEST_ME_NAME " WALLOPS :Test to admins" CRLF, oper2, MSG);
2633 is_client_sendq_empty(oper3, "Not an admin; " MSG);
2634 is_client_sendq_empty(oper4, "Not an admin; " MSG);
2635 is_client_sendq_empty(server, MSG);
2636
2637 remove_local_person(user1);
2638 remove_local_person(user2);
2639 remove_local_person(oper1);
2640 remove_local_person(oper2);
2641 remove_local_person(oper3);
2642 remove_local_person(oper4);
2643 }
2644
2645 static void kill_client1(void)
2646 {
2647 standard_init();
2648
2649 kill_client(server, remote, "Hello %s!", "World");
2650 is_client_sendq(":" TEST_ME_NAME " KILL " TEST_REMOTE_NICK " :Hello World!" CRLF, server, MSG);
2651 is_client_sendq_empty(server2, MSG);
2652
2653 standard_ids();
2654
2655 kill_client(server, remote, "Hello %s!", "World");
2656 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE_ID " :Hello World!" CRLF, server, MSG);
2657 is_client_sendq_empty(server2, MSG);
2658
2659 standard_free();
2660 }
2661
2662 static void kill_client_serv_butone1(void)
2663 {
2664 standard_init();
2665
2666 // This function does not support TS5...
2667 standard_ids();
2668
2669 // If the server being sent to (or the kill target) is TS6,
2670 // then "but one" is ignored and the kill is sent anyway
2671 kill_client_serv_butone(remote, remote, "Hello %s!", "World");
2672 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE_ID " :Hello World!" CRLF, server, MSG);
2673 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE_ID " :Hello World!" CRLF, server2, MSG);
2674 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE_ID " :Hello World!" CRLF, server3, MSG);
2675
2676 kill_client_serv_butone(remote, remote2, "Hello %s!", "World");
2677 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE2_ID " :Hello World!" CRLF, server, MSG);
2678 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE2_ID " :Hello World!" CRLF, server2, MSG);
2679 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE2_ID " :Hello World!" CRLF, server3, MSG);
2680
2681 kill_client_serv_butone(remote2, remote, "Hello %s!", "World");
2682 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE_ID " :Hello World!" CRLF, server, MSG);
2683 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE_ID " :Hello World!" CRLF, server2, MSG);
2684 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE_ID " :Hello World!" CRLF, server3, MSG);
2685
2686 kill_client_serv_butone(remote2, remote2, "Hello %s!", "World");
2687 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE2_ID " :Hello World!" CRLF, server, MSG);
2688 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE2_ID " :Hello World!" CRLF, server2, MSG);
2689 is_client_sendq(":" TEST_ME_ID " KILL " TEST_REMOTE2_ID " :Hello World!" CRLF, server3, MSG);
2690
2691 standard_free();
2692 }
2693
2694 int main(int argc, char *argv[])
2695 {
2696 plan_lazy();
2697
2698 ircd_util_init(__FILE__);
2699 client_util_init();
2700
2701 // Load modules in a predictable order so that tags are added in the same order every time
2702 ircd_util_reload_module("cap_account_tag");
2703 ircd_util_reload_module("cap_server_time");
2704
2705 CAP_ACCOUNT_TAG = capability_get(cli_capindex, "account-tag", NULL);
2706 ok(CAP_ACCOUNT_TAG != 0, "CAP_ACCOUNT_TAG missing; " MSG);
2707
2708 CAP_SERVER_TIME = capability_get(cli_capindex, "server-time", NULL);
2709 ok(CAP_SERVER_TIME != 0, "CAP_SERVER_TIME missing; " MSG);
2710
2711 CAP_INVITE_NOTIFY = capability_get(cli_capindex, "invite-notify", NULL);
2712 ok(CAP_INVITE_NOTIFY != 0, "CAP_INVITE_NOTIFY missing; " MSG);
2713
2714 sendto_one1();
2715 sendto_one_prefix1();
2716 sendto_one_notice1();
2717 sendto_one_numeric1();
2718 sendto_server1();
2719
2720 sendto_channel_flags__local__all_members();
2721 sendto_channel_flags__remote__all_members();
2722 sendto_channel_flags__local__all_members__tags();
2723 sendto_channel_flags__remote__all_members__tags();
2724 sendto_channel_flags__local__voice();
2725 sendto_channel_flags__remote__voice();
2726 sendto_channel_flags__local__chanop();
2727 sendto_channel_flags__remote__chanop();
2728 sendto_channel_flags__local__chanop_voice();
2729 sendto_channel_flags__remote__chanop_voice();
2730
2731 sendto_channel_opmod__local();
2732 sendto_channel_opmod__remote();
2733 sendto_channel_local1();
2734 sendto_channel_local_with_capability1();
2735 sendto_channel_local_with_capability_butone1();
2736 sendto_channel_local_butone1();
2737 sendto_common_channels_local1();
2738 sendto_common_channels_local_butone1();
2739
2740 sendto_match_butone__host();
2741 sendto_match_butone__server();
2742 sendto_match_servs1();
2743 sendto_local_clients_with_capability1();
2744 sendto_monitor1();
2745 sendto_anywhere1();
2746 sendto_anywhere1__tags();
2747 sendto_anywhere_echo1();
2748 sendto_anywhere_echo1__tags();
2749
2750 sendto_realops_snomask1();
2751 sendto_realops_snomask_from1();
2752 sendto_wallops_flags1();
2753
2754 kill_client1();
2755 kill_client_serv_butone1();
2756
2757 client_util_free();
2758 ircd_util_free();
2759 return 0;
2760 }