]>
jfr.im git - solanum.git/blob - tests/msgbuf_parse1.c
2 * msgbuf_parse1.c: Test msgbuf under various conditions
3 * Copyright 2017 Simon Arlott
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.
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.
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
24 #include "tap/basic.h"
27 #include "ircd_defs.h"
31 #define MSG "%s:%d (%s)", __FILE__, __LINE__, __FUNCTION__
34 static char tmp
[2048];
35 static const char text
[] =
36 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba"
37 "ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
38 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba"
39 "ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
40 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba"
41 "ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
42 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba"
43 "ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
44 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba"
45 "ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
48 #define MKTEXT(n) &text[sizeof(text) - ((n) + 1)]
50 static void basic_tags1(void)
54 memset(&msgbuf
, 0, sizeof(msgbuf
));
55 strcpy(tmp
, "@tag=value PRIVMSG #test :test");
57 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
58 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
59 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
60 is_string("value", msgbuf
.tags
[0].value
, MSG
);
63 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
64 if (is_int(3, msgbuf
.n_para
, MSG
)) {
65 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
66 is_string("#test", msgbuf
.para
[1], MSG
);
67 is_string("test", msgbuf
.para
[2], MSG
);
72 static void basic_tags2(void)
76 memset(&msgbuf
, 0, sizeof(msgbuf
));
77 strcpy(tmp
, "@tag0=value0;tag1=value1 PRIVMSG #test :test");
79 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
80 if (is_int(2, msgbuf
.n_tags
, MSG
)) {
81 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
82 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
84 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
85 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
88 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
89 if (is_int(3, msgbuf
.n_para
, MSG
)) {
90 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
91 is_string("#test", msgbuf
.para
[1], MSG
);
92 is_string("test", msgbuf
.para
[2], MSG
);
97 static void basic_tags3(void)
101 memset(&msgbuf
, 0, sizeof(msgbuf
));
102 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2 PRIVMSG #test :test");
104 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
105 if (is_int(3, msgbuf
.n_tags
, MSG
)) {
106 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
107 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
109 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
110 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
112 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
113 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
116 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
117 if (is_int(3, msgbuf
.n_para
, MSG
)) {
118 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
119 is_string("#test", msgbuf
.para
[1], MSG
);
120 is_string("test", msgbuf
.para
[2], MSG
);
125 static void basic_tags4(void)
127 struct MsgBuf msgbuf
;
129 memset(&msgbuf
, 0, sizeof(msgbuf
));
130 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3 PRIVMSG #test :test");
132 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
133 if (is_int(4, msgbuf
.n_tags
, MSG
)) {
134 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
135 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
137 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
138 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
140 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
141 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
143 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
144 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
147 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
148 if (is_int(3, msgbuf
.n_para
, MSG
)) {
149 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
150 is_string("#test", msgbuf
.para
[1], MSG
);
151 is_string("test", msgbuf
.para
[2], MSG
);
156 static void basic_tags5a(void)
158 struct MsgBuf msgbuf
;
160 memset(&msgbuf
, 0, sizeof(msgbuf
));
161 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4 PRIVMSG #test :test");
163 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
164 if (is_int(5, msgbuf
.n_tags
, MSG
)) {
165 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
166 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
168 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
169 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
171 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
172 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
174 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
175 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
177 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
178 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
181 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
182 if (is_int(3, msgbuf
.n_para
, MSG
)) {
183 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
184 is_string("#test", msgbuf
.para
[1], MSG
);
185 is_string("test", msgbuf
.para
[2], MSG
);
190 static void basic_tags5b(void)
192 struct MsgBuf msgbuf
;
194 memset(&msgbuf
, 0, sizeof(msgbuf
));
195 strcpy(tmp
, "@tag0=val=ue0;tag1=val=ue1;tag2=val=ue2;tag3=val=ue3;tag4=val=ue4 PRIVMSG #test :test");
197 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
198 if (is_int(5, msgbuf
.n_tags
, MSG
)) {
199 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
200 is_string("val=ue0", msgbuf
.tags
[0].value
, MSG
);
202 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
203 is_string("val=ue1", msgbuf
.tags
[1].value
, MSG
);
205 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
206 is_string("val=ue2", msgbuf
.tags
[2].value
, MSG
);
208 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
209 is_string("val=ue3", msgbuf
.tags
[3].value
, MSG
);
211 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
212 is_string("val=ue4", msgbuf
.tags
[4].value
, MSG
);
215 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
216 if (is_int(3, msgbuf
.n_para
, MSG
)) {
217 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
218 is_string("#test", msgbuf
.para
[1], MSG
);
219 is_string("test", msgbuf
.para
[2], MSG
);
224 static void basic_tags13(void)
226 struct MsgBuf msgbuf
;
228 memset(&msgbuf
, 0, sizeof(msgbuf
));
229 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12 PRIVMSG #test :test");
231 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
232 if (is_int(13, msgbuf
.n_tags
, MSG
)) {
233 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
234 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
236 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
237 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
239 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
240 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
242 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
243 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
245 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
246 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
248 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
249 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
251 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
252 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
254 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
255 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
257 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
258 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
260 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
261 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
263 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
264 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
266 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
267 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
269 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
270 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
273 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
274 if (is_int(3, msgbuf
.n_para
, MSG
)) {
275 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
276 is_string("#test", msgbuf
.para
[1], MSG
);
277 is_string("test", msgbuf
.para
[2], MSG
);
282 static void basic_tags14(void)
284 struct MsgBuf msgbuf
;
286 memset(&msgbuf
, 0, sizeof(msgbuf
));
287 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13 PRIVMSG #test :test");
289 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
290 if (is_int(14, msgbuf
.n_tags
, MSG
)) {
291 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
292 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
294 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
295 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
297 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
298 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
300 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
301 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
303 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
304 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
306 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
307 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
309 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
310 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
312 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
313 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
315 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
316 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
318 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
319 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
321 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
322 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
324 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
325 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
327 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
328 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
330 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
331 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
334 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
335 if (is_int(3, msgbuf
.n_para
, MSG
)) {
336 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
337 is_string("#test", msgbuf
.para
[1], MSG
);
338 is_string("test", msgbuf
.para
[2], MSG
);
343 static void basic_tags15(void)
345 struct MsgBuf msgbuf
;
347 memset(&msgbuf
, 0, sizeof(msgbuf
));
348 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=value14 PRIVMSG #test :test");
350 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
351 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
352 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
353 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
355 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
356 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
358 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
359 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
361 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
362 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
364 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
365 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
367 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
368 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
370 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
371 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
373 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
374 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
376 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
377 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
379 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
380 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
382 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
383 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
385 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
386 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
388 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
389 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
391 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
392 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
394 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
395 is_string("value14", msgbuf
.tags
[14].value
, MSG
);
398 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
399 if (is_int(3, msgbuf
.n_para
, MSG
)) {
400 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
401 is_string("#test", msgbuf
.para
[1], MSG
);
402 is_string("test", msgbuf
.para
[2], MSG
);
407 static void basic_tags16(void)
409 struct MsgBuf msgbuf
;
411 memset(&msgbuf
, 0, sizeof(msgbuf
));
412 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=value14;tag15=value15 PRIVMSG #test :test");
414 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
415 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
416 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
417 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
419 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
420 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
422 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
423 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
425 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
426 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
428 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
429 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
431 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
432 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
434 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
435 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
437 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
438 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
440 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
441 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
443 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
444 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
446 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
447 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
449 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
450 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
452 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
453 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
455 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
456 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
458 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
459 is_string("value14", msgbuf
.tags
[14].value
, MSG
);
462 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
463 if (is_int(3, msgbuf
.n_para
, MSG
)) {
464 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
465 is_string("#test", msgbuf
.para
[1], MSG
);
466 is_string("test", msgbuf
.para
[2], MSG
);
471 static void basic_tags17(void)
473 struct MsgBuf msgbuf
;
475 memset(&msgbuf
, 0, sizeof(msgbuf
));
476 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=value14;tag15=value15;tag16=value16 PRIVMSG #test :test");
478 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
479 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
480 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
481 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
483 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
484 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
486 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
487 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
489 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
490 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
492 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
493 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
495 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
496 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
498 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
499 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
501 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
502 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
504 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
505 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
507 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
508 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
510 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
511 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
513 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
514 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
516 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
517 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
519 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
520 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
522 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
523 is_string("value14", msgbuf
.tags
[14].value
, MSG
);
526 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
527 if (is_int(3, msgbuf
.n_para
, MSG
)) {
528 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
529 is_string("#test", msgbuf
.para
[1], MSG
);
530 is_string("test", msgbuf
.para
[2], MSG
);
535 static void too_long_tags15a(void)
537 struct MsgBuf msgbuf
;
539 memset(&msgbuf
, 0, sizeof(msgbuf
));
540 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
541 strcat(tmp
, MKTEXT(328));
542 is_int(511, strlen(tmp
), MSG
);
543 strcat(tmp
, " PRIVMSG #test :test");
545 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
546 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
547 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
548 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
550 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
551 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
553 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
554 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
556 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
557 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
559 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
560 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
562 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
563 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
565 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
566 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
568 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
569 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
571 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
572 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
574 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
575 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
577 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
578 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
580 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
581 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
583 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
584 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
586 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
587 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
589 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
590 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
593 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
594 if (is_int(3, msgbuf
.n_para
, MSG
)) {
595 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
596 is_string("#test", msgbuf
.para
[1], MSG
);
597 is_string("test", msgbuf
.para
[2], MSG
);
602 static void too_long_tags15b(void)
604 struct MsgBuf msgbuf
;
606 memset(&msgbuf
, 0, sizeof(msgbuf
));
607 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
608 strcat(tmp
, MKTEXT(329)); /* final character will be replaced with ' ' */
609 is_int(512, strlen(tmp
), MSG
);
610 strcat(tmp
, "PRIVMSG #test :test");
612 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
613 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
616 /* the value will be truncated */
617 strcpy(tmp2
, MKTEXT(329));
618 tmp2
[strlen(tmp2
) - 1] = 0;
620 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
621 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
623 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
624 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
626 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
627 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
629 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
630 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
632 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
633 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
635 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
636 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
638 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
639 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
641 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
642 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
644 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
645 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
647 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
648 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
650 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
651 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
653 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
654 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
656 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
657 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
659 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
660 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
662 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
663 is_string(tmp2
, msgbuf
.tags
[14].value
, MSG
);
666 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
667 if (is_int(3, msgbuf
.n_para
, MSG
)) {
668 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
669 is_string("#test", msgbuf
.para
[1], MSG
);
670 is_string("test", msgbuf
.para
[2], MSG
);
675 static void too_long_tags16a(void)
677 struct MsgBuf msgbuf
;
679 memset(&msgbuf
, 0, sizeof(msgbuf
));
680 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=value14;tag15=");
681 strcat(tmp
, MKTEXT(314));
682 is_int(511, strlen(tmp
), MSG
);
683 strcat(tmp
, " PRIVMSG #test :test");
685 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
686 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
687 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
688 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
690 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
691 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
693 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
694 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
696 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
697 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
699 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
700 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
702 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
703 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
705 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
706 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
708 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
709 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
711 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
712 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
714 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
715 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
717 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
718 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
720 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
721 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
723 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
724 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
726 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
727 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
729 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
730 is_string("value14", msgbuf
.tags
[14].value
, MSG
);
733 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
734 if (is_int(3, msgbuf
.n_para
, MSG
)) {
735 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
736 is_string("#test", msgbuf
.para
[1], MSG
);
737 is_string("test", msgbuf
.para
[2], MSG
);
742 static void too_long_tags16b(void)
744 struct MsgBuf msgbuf
;
746 memset(&msgbuf
, 0, sizeof(msgbuf
));
747 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=value14;tag15=");
748 strcat(tmp
, MKTEXT(315)); /* final character will be replaced with ' ' */
749 is_int(512, strlen(tmp
), MSG
);
750 strcat(tmp
, "PRIVMSG #test :test");
752 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
753 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
754 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
755 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
757 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
758 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
760 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
761 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
763 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
764 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
766 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
767 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
769 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
770 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
772 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
773 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
775 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
776 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
778 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
779 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
781 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
782 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
784 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
785 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
787 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
788 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
790 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
791 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
793 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
794 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
796 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
797 is_string("value14", msgbuf
.tags
[14].value
, MSG
);
800 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
801 if (is_int(3, msgbuf
.n_para
, MSG
)) {
802 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
803 is_string("#test", msgbuf
.para
[1], MSG
);
804 is_string("test", msgbuf
.para
[2], MSG
);
809 static void too_long_tags17a(void)
811 struct MsgBuf msgbuf
;
813 memset(&msgbuf
, 0, sizeof(msgbuf
));
814 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=value14;tag15=value15;tag16=");
815 strcat(tmp
, MKTEXT(300));
816 is_int(511, strlen(tmp
), MSG
);
817 strcat(tmp
, " PRIVMSG #test :test");
819 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
820 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
821 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
822 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
824 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
825 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
827 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
828 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
830 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
831 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
833 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
834 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
836 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
837 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
839 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
840 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
842 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
843 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
845 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
846 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
848 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
849 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
851 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
852 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
854 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
855 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
857 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
858 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
860 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
861 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
863 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
864 is_string("value14", msgbuf
.tags
[14].value
, MSG
);
867 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
868 if (is_int(3, msgbuf
.n_para
, MSG
)) {
869 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
870 is_string("#test", msgbuf
.para
[1], MSG
);
871 is_string("test", msgbuf
.para
[2], MSG
);
876 static void too_long_tags17b(void)
878 struct MsgBuf msgbuf
;
880 memset(&msgbuf
, 0, sizeof(msgbuf
));
881 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=value14;tag15=value15;tag16=");
882 strcat(tmp
, MKTEXT(301)); /* final character will be replaced with ' ' */
883 is_int(512, strlen(tmp
), MSG
);
884 strcat(tmp
, "PRIVMSG #test :test");
886 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
887 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
888 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
889 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
891 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
892 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
894 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
895 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
897 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
898 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
900 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
901 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
903 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
904 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
906 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
907 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
909 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
910 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
912 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
913 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
915 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
916 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
918 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
919 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
921 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
922 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
924 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
925 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
927 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
928 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
930 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
931 is_string("value14", msgbuf
.tags
[14].value
, MSG
);
934 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
935 if (is_int(3, msgbuf
.n_para
, MSG
)) {
936 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
937 is_string("#test", msgbuf
.para
[1], MSG
);
938 is_string("test", msgbuf
.para
[2], MSG
);
943 static void empty_value1(void)
945 struct MsgBuf msgbuf
;
947 memset(&msgbuf
, 0, sizeof(msgbuf
));
948 strcpy(tmp
, "@tag= PRIVMSG #test :test");
950 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
951 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
952 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
953 is_string("", msgbuf
.tags
[0].value
, MSG
);
956 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
957 if (is_int(3, msgbuf
.n_para
, MSG
)) {
958 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
959 is_string("#test", msgbuf
.para
[1], MSG
);
960 is_string("test", msgbuf
.para
[2], MSG
);
965 static void empty_value2(void)
967 struct MsgBuf msgbuf
;
969 memset(&msgbuf
, 0, sizeof(msgbuf
));
970 strcpy(tmp
, "@tag PRIVMSG #test :test");
972 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
973 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
974 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
975 is_string(NULL
, msgbuf
.tags
[0].value
, MSG
);
978 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
979 if (is_int(3, msgbuf
.n_para
, MSG
)) {
980 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
981 is_string("#test", msgbuf
.para
[1], MSG
);
982 is_string("test", msgbuf
.para
[2], MSG
);
987 static void malformed1a(void)
989 struct MsgBuf msgbuf
;
991 memset(&msgbuf
, 0, sizeof(msgbuf
));
992 strcpy(tmp
, "@=value PRIVMSG #test :test");
994 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
995 is_int(0, msgbuf
.n_tags
, MSG
);
997 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
998 if (is_int(3, msgbuf
.n_para
, MSG
)) {
999 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1000 is_string("#test", msgbuf
.para
[1], MSG
);
1001 is_string("test", msgbuf
.para
[2], MSG
);
1006 static void malformed2a(void)
1008 struct MsgBuf msgbuf
;
1010 memset(&msgbuf
, 0, sizeof(msgbuf
));
1011 strcpy(tmp
, "@= PRIVMSG #test :test");
1013 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1014 is_int(0, msgbuf
.n_tags
, MSG
);
1016 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1017 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1018 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1019 is_string("#test", msgbuf
.para
[1], MSG
);
1020 is_string("test", msgbuf
.para
[2], MSG
);
1025 static void malformed1b(void)
1027 struct MsgBuf msgbuf
;
1029 memset(&msgbuf
, 0, sizeof(msgbuf
));
1030 strcpy(tmp
, "@=value;tag2=value2 PRIVMSG #test :test");
1032 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1033 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1034 is_string("tag2", msgbuf
.tags
[0].key
, MSG
);
1035 is_string("value2", msgbuf
.tags
[0].value
, MSG
);
1038 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1039 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1040 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1041 is_string("#test", msgbuf
.para
[1], MSG
);
1042 is_string("test", msgbuf
.para
[2], MSG
);
1047 static void malformed2b(void)
1049 struct MsgBuf msgbuf
;
1051 memset(&msgbuf
, 0, sizeof(msgbuf
));
1052 strcpy(tmp
, "@=;tag2=value2 PRIVMSG #test :test");
1054 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1055 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1056 is_string("tag2", msgbuf
.tags
[0].key
, MSG
);
1057 is_string("value2", msgbuf
.tags
[0].value
, MSG
);
1060 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1061 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1062 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1063 is_string("#test", msgbuf
.para
[1], MSG
);
1064 is_string("test", msgbuf
.para
[2], MSG
);
1069 static void malformed3(void)
1071 struct MsgBuf msgbuf
;
1073 memset(&msgbuf
, 0, sizeof(msgbuf
));
1074 strcpy(tmp
, "@ta g=value PRIVMSG #test :test");
1076 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1077 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1078 is_string("ta", msgbuf
.tags
[0].key
, MSG
);
1079 is_string(NULL
, msgbuf
.tags
[0].value
, MSG
);
1082 is_string("g=value", msgbuf
.cmd
, MSG
);
1083 if (is_int(4, msgbuf
.n_para
, MSG
)) {
1084 is_string("g=value", msgbuf
.para
[0], MSG
);
1085 is_string("PRIVMSG", msgbuf
.para
[1], MSG
);
1086 is_string("#test", msgbuf
.para
[2], MSG
);
1087 is_string("test", msgbuf
.para
[3], MSG
);
1092 static void malformed4(void)
1094 struct MsgBuf msgbuf
;
1096 memset(&msgbuf
, 0, sizeof(msgbuf
));
1097 strcpy(tmp
, "@tag=va lue PRIVMSG #test :test");
1099 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1100 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1101 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1102 is_string("va", msgbuf
.tags
[0].value
, MSG
);
1105 is_string("lue", msgbuf
.cmd
, MSG
);
1106 if (is_int(4, msgbuf
.n_para
, MSG
)) {
1107 is_string("lue", msgbuf
.para
[0], MSG
);
1108 is_string("PRIVMSG", msgbuf
.para
[1], MSG
);
1109 is_string("#test", msgbuf
.para
[2], MSG
);
1110 is_string("test", msgbuf
.para
[3], MSG
);
1115 static void malformed5(void)
1117 struct MsgBuf msgbuf
;
1119 memset(&msgbuf
, 0, sizeof(msgbuf
));
1120 strcpy(tmp
, "@ta g=va lue PRIVMSG #test :test");
1122 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1123 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1124 is_string("ta", msgbuf
.tags
[0].key
, MSG
);
1125 is_string(NULL
, msgbuf
.tags
[0].value
, MSG
);
1128 is_string("g=va", msgbuf
.cmd
, MSG
);
1129 if (is_int(5, msgbuf
.n_para
, MSG
)) {
1130 is_string("g=va", msgbuf
.para
[0], MSG
);
1131 is_string("lue", msgbuf
.para
[1], MSG
);
1132 is_string("PRIVMSG", msgbuf
.para
[2], MSG
);
1133 is_string("#test", msgbuf
.para
[3], MSG
);
1134 is_string("test", msgbuf
.para
[4], MSG
);
1139 static void malformed6(void)
1141 struct MsgBuf msgbuf
;
1143 memset(&msgbuf
, 0, sizeof(msgbuf
));
1144 strcpy(tmp
, "@tag =value PRIVMSG #test :test");
1146 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1147 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1148 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1149 is_string(NULL
, msgbuf
.tags
[0].value
, MSG
);
1152 is_string("=value", msgbuf
.cmd
, MSG
);
1153 if (is_int(4, msgbuf
.n_para
, MSG
)) {
1154 is_string("=value", msgbuf
.para
[0], MSG
);
1155 is_string("PRIVMSG", msgbuf
.para
[1], MSG
);
1156 is_string("#test", msgbuf
.para
[2], MSG
);
1157 is_string("test", msgbuf
.para
[3], MSG
);
1162 static void malformed7(void)
1164 struct MsgBuf msgbuf
;
1166 memset(&msgbuf
, 0, sizeof(msgbuf
));
1167 strcpy(tmp
, "@tag= value PRIVMSG #test :test");
1169 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1170 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1171 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1172 is_string("", msgbuf
.tags
[0].value
, MSG
);
1175 is_string("value", msgbuf
.cmd
, MSG
);
1176 if (is_int(4, msgbuf
.n_para
, MSG
)) {
1177 is_string("value", msgbuf
.para
[0], MSG
);
1178 is_string("PRIVMSG", msgbuf
.para
[1], MSG
);
1179 is_string("#test", msgbuf
.para
[2], MSG
);
1180 is_string("test", msgbuf
.para
[3], MSG
);
1185 static void long_tag1(void)
1187 struct MsgBuf msgbuf
;
1189 memset(&msgbuf
, 0, sizeof(msgbuf
));
1191 strcat(tmp
, MKTEXT(509));
1192 strcat(tmp
, "= PRIVMSG #test :test");
1194 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1195 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1196 is_string(MKTEXT(509), msgbuf
.tags
[0].key
, MSG
);
1197 is_string("", msgbuf
.tags
[0].value
, MSG
);
1200 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1201 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1202 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1203 is_string("#test", msgbuf
.para
[1], MSG
);
1204 is_string("test", msgbuf
.para
[2], MSG
);
1209 static void long_tag2(void)
1211 struct MsgBuf msgbuf
;
1213 memset(&msgbuf
, 0, sizeof(msgbuf
));
1215 strcat(tmp
, MKTEXT(510));
1216 strcat(tmp
, " PRIVMSG #test :test");
1218 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1219 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1220 is_string(MKTEXT(510), msgbuf
.tags
[0].key
, MSG
);
1221 is_string(NULL
, msgbuf
.tags
[0].value
, MSG
);
1224 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1225 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1226 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1227 is_string("#test", msgbuf
.para
[1], MSG
);
1228 is_string("test", msgbuf
.para
[2], MSG
);
1233 static void long_value1(void)
1235 struct MsgBuf msgbuf
;
1237 memset(&msgbuf
, 0, sizeof(msgbuf
));
1239 strcat(tmp
, MKTEXT(1));
1241 strcat(tmp
, MKTEXT(508));
1242 strcat(tmp
, " PRIVMSG #test :test");
1244 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1245 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1246 is_string(MKTEXT(1), msgbuf
.tags
[0].key
, MSG
);
1247 is_string(MKTEXT(508), msgbuf
.tags
[0].value
, MSG
);
1250 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1251 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1252 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1253 is_string("#test", msgbuf
.para
[1], MSG
);
1254 is_string("test", msgbuf
.para
[2], MSG
);
1259 static void too_long_tag1(void)
1261 struct MsgBuf msgbuf
;
1263 memset(&msgbuf
, 0, sizeof(msgbuf
));
1265 strcat(tmp
, MKTEXT(510));
1266 is_int(511, strlen(tmp
), MSG
);
1267 /* the '=' will be replaced with a ' ' when parsing */
1268 strcat(tmp
, "=PRIVMSG #test :test");
1270 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1271 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1272 is_string(MKTEXT(510), msgbuf
.tags
[0].key
, MSG
);
1273 is_string(NULL
, msgbuf
.tags
[0].value
, MSG
);
1276 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1277 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1278 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1279 is_string("#test", msgbuf
.para
[1], MSG
);
1280 is_string("test", msgbuf
.para
[2], MSG
);
1285 static void too_long_tag2(void)
1287 struct MsgBuf msgbuf
;
1289 memset(&msgbuf
, 0, sizeof(msgbuf
));
1291 strcat(tmp
, MKTEXT(511)); /* the last byte will be replaced with a ' ' when parsing */
1292 is_int(512, strlen(tmp
), MSG
);
1293 strcat(tmp
, "PRIVMSG #test :test");
1295 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1298 /* the tag will be truncated */
1299 strcpy(tmp2
, MKTEXT(511));
1300 tmp2
[strlen(tmp2
) - 1] = 0;
1302 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1303 is_string(tmp2
, msgbuf
.tags
[0].key
, MSG
);
1304 is_string(NULL
, msgbuf
.tags
[0].value
, MSG
);
1307 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1308 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1309 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1310 is_string("#test", msgbuf
.para
[1], MSG
);
1311 is_string("test", msgbuf
.para
[2], MSG
);
1316 static void too_long_tag3(void)
1318 struct MsgBuf msgbuf
;
1320 memset(&msgbuf
, 0, sizeof(msgbuf
));
1322 strcat(tmp
, MKTEXT(510));
1323 is_int(511, strlen(tmp
), MSG
);
1324 /* the ';' will be replaced with a ' ' when parsing */
1325 strcat(tmp
, ";PRIVMSG #test :test");
1327 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1328 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1329 is_string(MKTEXT(510), msgbuf
.tags
[0].key
, MSG
);
1330 is_string(NULL
, msgbuf
.tags
[0].value
, MSG
);
1333 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1334 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1335 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1336 is_string("#test", msgbuf
.para
[1], MSG
);
1337 is_string("test", msgbuf
.para
[2], MSG
);
1342 static void too_long_value1(void)
1344 struct MsgBuf msgbuf
;
1346 memset(&msgbuf
, 0, sizeof(msgbuf
));
1348 strcat(tmp
, MKTEXT(1));
1350 strcat(tmp
, MKTEXT(508));
1351 is_int(511, strlen(tmp
), MSG
);
1352 /* the ';' will be replaced with a ' ' when parsing */
1353 strcat(tmp
, ";PRIVMSG #test :test");
1355 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1356 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1357 is_string(MKTEXT(1), msgbuf
.tags
[0].key
, MSG
);
1358 is_string(MKTEXT(508), msgbuf
.tags
[0].value
, MSG
);
1361 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1362 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1363 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1364 is_string("#test", msgbuf
.para
[1], MSG
);
1365 is_string("test", msgbuf
.para
[2], MSG
);
1370 static void too_long_value2(void)
1372 struct MsgBuf msgbuf
;
1374 memset(&msgbuf
, 0, sizeof(msgbuf
));
1376 strcat(tmp
, MKTEXT(1));
1378 strcat(tmp
, MKTEXT(509)); /* the last byte will be replaced with a ' ' when parsing */
1379 is_int(512, strlen(tmp
), MSG
);
1380 strcat(tmp
, "PRIVMSG #test :test");
1382 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1385 /* the value will be truncated */
1386 strcpy(tmp2
, MKTEXT(509));
1387 tmp2
[strlen(tmp2
) - 1] = 0;
1389 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1390 is_string(MKTEXT(1), msgbuf
.tags
[0].key
, MSG
);
1391 is_string(tmp2
, msgbuf
.tags
[0].value
, MSG
);
1394 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1395 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1396 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1397 is_string("#test", msgbuf
.para
[1], MSG
);
1398 is_string("test", msgbuf
.para
[2], MSG
);
1403 static void too_long_value3(void)
1405 struct MsgBuf msgbuf
;
1407 memset(&msgbuf
, 0, sizeof(msgbuf
));
1409 strcat(tmp
, MKTEXT(1));
1411 strcat(tmp
, MKTEXT(510)); /* the second-last byte will be replaced with a ' ' when parsing */
1412 is_int(513, strlen(tmp
), MSG
);
1413 strcat(tmp
, "PRIVMSG #test :test");
1415 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1418 /* the value will be truncated */
1419 strcpy(tmp2
, MKTEXT(510));
1420 tmp2
[strlen(tmp2
) - 2] = 0;
1422 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1423 is_string(MKTEXT(1), msgbuf
.tags
[0].key
, MSG
);
1424 is_string(tmp2
, msgbuf
.tags
[0].value
, MSG
);
1427 is_string("ZPRIVMSG", msgbuf
.cmd
, MSG
);
1428 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1429 is_string("ZPRIVMSG", msgbuf
.para
[0], MSG
);
1430 is_string("#test", msgbuf
.para
[1], MSG
);
1431 is_string("test", msgbuf
.para
[2], MSG
);
1436 static void basic_para3a(void)
1438 struct MsgBuf msgbuf
;
1440 memset(&msgbuf
, 0, sizeof(msgbuf
));
1441 strcpy(tmp
, "@tag=value PRIVMSG #test :");
1443 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1444 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1445 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1446 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1449 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1450 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1451 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1452 is_string("#test", msgbuf
.para
[1], MSG
);
1453 is_string("", msgbuf
.para
[2], MSG
);
1458 static void basic_para3b(void)
1460 struct MsgBuf msgbuf
;
1462 memset(&msgbuf
, 0, sizeof(msgbuf
));
1463 strcpy(tmp
, "@tag=value PRIVMSG #test :test D E F G H I J K");
1465 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1466 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1467 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1468 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1471 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1472 if (is_int(3, msgbuf
.n_para
, MSG
)) {
1473 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1474 is_string("#test", msgbuf
.para
[1], MSG
);
1475 is_string("test D E F G H I J K", msgbuf
.para
[2], MSG
);
1480 static void basic_para13(void)
1482 struct MsgBuf msgbuf
;
1484 memset(&msgbuf
, 0, sizeof(msgbuf
));
1485 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M");
1487 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1488 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1489 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1490 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1493 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1494 if (is_int(13, msgbuf
.n_para
, MSG
)) {
1495 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1496 is_string("#test", msgbuf
.para
[1], MSG
);
1497 is_string("test", msgbuf
.para
[2], MSG
);
1498 is_string("D", msgbuf
.para
[3], MSG
);
1499 is_string("E", msgbuf
.para
[4], MSG
);
1500 is_string("F", msgbuf
.para
[5], MSG
);
1501 is_string("G", msgbuf
.para
[6], MSG
);
1502 is_string("H", msgbuf
.para
[7], MSG
);
1503 is_string("I", msgbuf
.para
[8], MSG
);
1504 is_string("J", msgbuf
.para
[9], MSG
);
1505 is_string("K", msgbuf
.para
[10], MSG
);
1506 is_string("L", msgbuf
.para
[11], MSG
);
1507 is_string("M", msgbuf
.para
[12], MSG
);
1512 static void basic_para14a(void)
1514 struct MsgBuf msgbuf
;
1516 memset(&msgbuf
, 0, sizeof(msgbuf
));
1517 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N");
1519 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1520 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1521 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1522 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1525 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1526 if (is_int(14, msgbuf
.n_para
, MSG
)) {
1527 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1528 is_string("#test", msgbuf
.para
[1], MSG
);
1529 is_string("test", msgbuf
.para
[2], MSG
);
1530 is_string("D", msgbuf
.para
[3], MSG
);
1531 is_string("E", msgbuf
.para
[4], MSG
);
1532 is_string("F", msgbuf
.para
[5], MSG
);
1533 is_string("G", msgbuf
.para
[6], MSG
);
1534 is_string("H", msgbuf
.para
[7], MSG
);
1535 is_string("I", msgbuf
.para
[8], MSG
);
1536 is_string("J", msgbuf
.para
[9], MSG
);
1537 is_string("K", msgbuf
.para
[10], MSG
);
1538 is_string("L", msgbuf
.para
[11], MSG
);
1539 is_string("M", msgbuf
.para
[12], MSG
);
1540 is_string("N", msgbuf
.para
[13], MSG
);
1545 static void basic_para14b(void)
1547 struct MsgBuf msgbuf
;
1549 memset(&msgbuf
, 0, sizeof(msgbuf
));
1550 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M :N");
1552 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1553 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1554 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1555 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1558 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1559 if (is_int(14, msgbuf
.n_para
, MSG
)) {
1560 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1561 is_string("#test", msgbuf
.para
[1], MSG
);
1562 is_string("test", msgbuf
.para
[2], MSG
);
1563 is_string("D", msgbuf
.para
[3], MSG
);
1564 is_string("E", msgbuf
.para
[4], MSG
);
1565 is_string("F", msgbuf
.para
[5], MSG
);
1566 is_string("G", msgbuf
.para
[6], MSG
);
1567 is_string("H", msgbuf
.para
[7], MSG
);
1568 is_string("I", msgbuf
.para
[8], MSG
);
1569 is_string("J", msgbuf
.para
[9], MSG
);
1570 is_string("K", msgbuf
.para
[10], MSG
);
1571 is_string("L", msgbuf
.para
[11], MSG
);
1572 is_string("M", msgbuf
.para
[12], MSG
);
1573 is_string("N", msgbuf
.para
[13], MSG
);
1578 static void basic_para14c(void)
1580 struct MsgBuf msgbuf
;
1582 memset(&msgbuf
, 0, sizeof(msgbuf
));
1583 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M :N O P");
1585 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1586 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1587 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1588 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1591 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1592 if (is_int(14, msgbuf
.n_para
, MSG
)) {
1593 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1594 is_string("#test", msgbuf
.para
[1], MSG
);
1595 is_string("test", msgbuf
.para
[2], MSG
);
1596 is_string("D", msgbuf
.para
[3], MSG
);
1597 is_string("E", msgbuf
.para
[4], MSG
);
1598 is_string("F", msgbuf
.para
[5], MSG
);
1599 is_string("G", msgbuf
.para
[6], MSG
);
1600 is_string("H", msgbuf
.para
[7], MSG
);
1601 is_string("I", msgbuf
.para
[8], MSG
);
1602 is_string("J", msgbuf
.para
[9], MSG
);
1603 is_string("K", msgbuf
.para
[10], MSG
);
1604 is_string("L", msgbuf
.para
[11], MSG
);
1605 is_string("M", msgbuf
.para
[12], MSG
);
1606 is_string("N O P", msgbuf
.para
[13], MSG
);
1611 static void basic_para15a(void)
1613 struct MsgBuf msgbuf
;
1615 memset(&msgbuf
, 0, sizeof(msgbuf
));
1616 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N O");
1618 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1619 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1620 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1621 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1624 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1625 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1626 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1627 is_string("#test", msgbuf
.para
[1], MSG
);
1628 is_string("test", msgbuf
.para
[2], MSG
);
1629 is_string("D", msgbuf
.para
[3], MSG
);
1630 is_string("E", msgbuf
.para
[4], MSG
);
1631 is_string("F", msgbuf
.para
[5], MSG
);
1632 is_string("G", msgbuf
.para
[6], MSG
);
1633 is_string("H", msgbuf
.para
[7], MSG
);
1634 is_string("I", msgbuf
.para
[8], MSG
);
1635 is_string("J", msgbuf
.para
[9], MSG
);
1636 is_string("K", msgbuf
.para
[10], MSG
);
1637 is_string("L", msgbuf
.para
[11], MSG
);
1638 is_string("M", msgbuf
.para
[12], MSG
);
1639 is_string("N", msgbuf
.para
[13], MSG
);
1640 is_string("O", msgbuf
.para
[14], MSG
);
1645 static void basic_para15b(void)
1647 struct MsgBuf msgbuf
;
1649 memset(&msgbuf
, 0, sizeof(msgbuf
));
1650 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N :O");
1652 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1653 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1654 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1655 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1658 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1659 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1660 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1661 is_string("#test", msgbuf
.para
[1], MSG
);
1662 is_string("test", msgbuf
.para
[2], MSG
);
1663 is_string("D", msgbuf
.para
[3], MSG
);
1664 is_string("E", msgbuf
.para
[4], MSG
);
1665 is_string("F", msgbuf
.para
[5], MSG
);
1666 is_string("G", msgbuf
.para
[6], MSG
);
1667 is_string("H", msgbuf
.para
[7], MSG
);
1668 is_string("I", msgbuf
.para
[8], MSG
);
1669 is_string("J", msgbuf
.para
[9], MSG
);
1670 is_string("K", msgbuf
.para
[10], MSG
);
1671 is_string("L", msgbuf
.para
[11], MSG
);
1672 is_string("M", msgbuf
.para
[12], MSG
);
1673 is_string("N", msgbuf
.para
[13], MSG
);
1674 is_string("O", msgbuf
.para
[14], MSG
);
1679 static void basic_para15c(void)
1681 struct MsgBuf msgbuf
;
1683 memset(&msgbuf
, 0, sizeof(msgbuf
));
1684 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N O ");
1686 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1687 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1688 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1689 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1692 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1693 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1694 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1695 is_string("#test", msgbuf
.para
[1], MSG
);
1696 is_string("test", msgbuf
.para
[2], MSG
);
1697 is_string("D", msgbuf
.para
[3], MSG
);
1698 is_string("E", msgbuf
.para
[4], MSG
);
1699 is_string("F", msgbuf
.para
[5], MSG
);
1700 is_string("G", msgbuf
.para
[6], MSG
);
1701 is_string("H", msgbuf
.para
[7], MSG
);
1702 is_string("I", msgbuf
.para
[8], MSG
);
1703 is_string("J", msgbuf
.para
[9], MSG
);
1704 is_string("K", msgbuf
.para
[10], MSG
);
1705 is_string("L", msgbuf
.para
[11], MSG
);
1706 is_string("M", msgbuf
.para
[12], MSG
);
1707 is_string("N", msgbuf
.para
[13], MSG
);
1708 is_string("O ", msgbuf
.para
[14], MSG
);
1713 static void basic_para15d(void)
1715 struct MsgBuf msgbuf
;
1717 memset(&msgbuf
, 0, sizeof(msgbuf
));
1718 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N :O ");
1720 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1721 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1722 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1723 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1726 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1727 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1728 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1729 is_string("#test", msgbuf
.para
[1], MSG
);
1730 is_string("test", msgbuf
.para
[2], MSG
);
1731 is_string("D", msgbuf
.para
[3], MSG
);
1732 is_string("E", msgbuf
.para
[4], MSG
);
1733 is_string("F", msgbuf
.para
[5], MSG
);
1734 is_string("G", msgbuf
.para
[6], MSG
);
1735 is_string("H", msgbuf
.para
[7], MSG
);
1736 is_string("I", msgbuf
.para
[8], MSG
);
1737 is_string("J", msgbuf
.para
[9], MSG
);
1738 is_string("K", msgbuf
.para
[10], MSG
);
1739 is_string("L", msgbuf
.para
[11], MSG
);
1740 is_string("M", msgbuf
.para
[12], MSG
);
1741 is_string("N", msgbuf
.para
[13], MSG
);
1742 is_string("O ", msgbuf
.para
[14], MSG
);
1747 static void basic_para16a(void)
1749 struct MsgBuf msgbuf
;
1751 memset(&msgbuf
, 0, sizeof(msgbuf
));
1752 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N O P");
1754 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1755 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1756 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1757 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1760 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1761 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1762 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1763 is_string("#test", msgbuf
.para
[1], MSG
);
1764 is_string("test", msgbuf
.para
[2], MSG
);
1765 is_string("D", msgbuf
.para
[3], MSG
);
1766 is_string("E", msgbuf
.para
[4], MSG
);
1767 is_string("F", msgbuf
.para
[5], MSG
);
1768 is_string("G", msgbuf
.para
[6], MSG
);
1769 is_string("H", msgbuf
.para
[7], MSG
);
1770 is_string("I", msgbuf
.para
[8], MSG
);
1771 is_string("J", msgbuf
.para
[9], MSG
);
1772 is_string("K", msgbuf
.para
[10], MSG
);
1773 is_string("L", msgbuf
.para
[11], MSG
);
1774 is_string("M", msgbuf
.para
[12], MSG
);
1775 is_string("N", msgbuf
.para
[13], MSG
);
1776 is_string("O P", msgbuf
.para
[14], MSG
);
1781 static void basic_para16b(void)
1783 struct MsgBuf msgbuf
;
1785 memset(&msgbuf
, 0, sizeof(msgbuf
));
1786 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N O :P");
1788 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1789 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1790 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1791 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1794 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1795 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1796 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1797 is_string("#test", msgbuf
.para
[1], MSG
);
1798 is_string("test", msgbuf
.para
[2], MSG
);
1799 is_string("D", msgbuf
.para
[3], MSG
);
1800 is_string("E", msgbuf
.para
[4], MSG
);
1801 is_string("F", msgbuf
.para
[5], MSG
);
1802 is_string("G", msgbuf
.para
[6], MSG
);
1803 is_string("H", msgbuf
.para
[7], MSG
);
1804 is_string("I", msgbuf
.para
[8], MSG
);
1805 is_string("J", msgbuf
.para
[9], MSG
);
1806 is_string("K", msgbuf
.para
[10], MSG
);
1807 is_string("L", msgbuf
.para
[11], MSG
);
1808 is_string("M", msgbuf
.para
[12], MSG
);
1809 is_string("N", msgbuf
.para
[13], MSG
);
1810 is_string("O :P", msgbuf
.para
[14], MSG
);
1815 static void basic_para16c(void)
1817 struct MsgBuf msgbuf
;
1819 memset(&msgbuf
, 0, sizeof(msgbuf
));
1820 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N :O P");
1822 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1823 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1824 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1825 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1828 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1829 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1830 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1831 is_string("#test", msgbuf
.para
[1], MSG
);
1832 is_string("test", msgbuf
.para
[2], MSG
);
1833 is_string("D", msgbuf
.para
[3], MSG
);
1834 is_string("E", msgbuf
.para
[4], MSG
);
1835 is_string("F", msgbuf
.para
[5], MSG
);
1836 is_string("G", msgbuf
.para
[6], MSG
);
1837 is_string("H", msgbuf
.para
[7], MSG
);
1838 is_string("I", msgbuf
.para
[8], MSG
);
1839 is_string("J", msgbuf
.para
[9], MSG
);
1840 is_string("K", msgbuf
.para
[10], MSG
);
1841 is_string("L", msgbuf
.para
[11], MSG
);
1842 is_string("M", msgbuf
.para
[12], MSG
);
1843 is_string("N", msgbuf
.para
[13], MSG
);
1844 is_string("O P", msgbuf
.para
[14], MSG
);
1849 static void basic_para17a(void)
1851 struct MsgBuf msgbuf
;
1853 memset(&msgbuf
, 0, sizeof(msgbuf
));
1854 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N O P Q");
1856 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1857 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1858 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1859 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1862 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1863 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1864 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1865 is_string("#test", msgbuf
.para
[1], MSG
);
1866 is_string("test", msgbuf
.para
[2], MSG
);
1867 is_string("D", msgbuf
.para
[3], MSG
);
1868 is_string("E", msgbuf
.para
[4], MSG
);
1869 is_string("F", msgbuf
.para
[5], MSG
);
1870 is_string("G", msgbuf
.para
[6], MSG
);
1871 is_string("H", msgbuf
.para
[7], MSG
);
1872 is_string("I", msgbuf
.para
[8], MSG
);
1873 is_string("J", msgbuf
.para
[9], MSG
);
1874 is_string("K", msgbuf
.para
[10], MSG
);
1875 is_string("L", msgbuf
.para
[11], MSG
);
1876 is_string("M", msgbuf
.para
[12], MSG
);
1877 is_string("N", msgbuf
.para
[13], MSG
);
1878 is_string("O P Q", msgbuf
.para
[14], MSG
);
1883 static void basic_para17b(void)
1885 struct MsgBuf msgbuf
;
1887 memset(&msgbuf
, 0, sizeof(msgbuf
));
1888 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N O P :Q");
1890 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1891 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1892 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1893 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1896 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1897 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1898 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1899 is_string("#test", msgbuf
.para
[1], MSG
);
1900 is_string("test", msgbuf
.para
[2], MSG
);
1901 is_string("D", msgbuf
.para
[3], MSG
);
1902 is_string("E", msgbuf
.para
[4], MSG
);
1903 is_string("F", msgbuf
.para
[5], MSG
);
1904 is_string("G", msgbuf
.para
[6], MSG
);
1905 is_string("H", msgbuf
.para
[7], MSG
);
1906 is_string("I", msgbuf
.para
[8], MSG
);
1907 is_string("J", msgbuf
.para
[9], MSG
);
1908 is_string("K", msgbuf
.para
[10], MSG
);
1909 is_string("L", msgbuf
.para
[11], MSG
);
1910 is_string("M", msgbuf
.para
[12], MSG
);
1911 is_string("N", msgbuf
.para
[13], MSG
);
1912 is_string("O P :Q", msgbuf
.para
[14], MSG
);
1917 static void basic_para17c(void)
1919 struct MsgBuf msgbuf
;
1921 memset(&msgbuf
, 0, sizeof(msgbuf
));
1922 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N O :P Q");
1924 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1925 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1926 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1927 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1930 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1931 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1932 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1933 is_string("#test", msgbuf
.para
[1], MSG
);
1934 is_string("test", msgbuf
.para
[2], MSG
);
1935 is_string("D", msgbuf
.para
[3], MSG
);
1936 is_string("E", msgbuf
.para
[4], MSG
);
1937 is_string("F", msgbuf
.para
[5], MSG
);
1938 is_string("G", msgbuf
.para
[6], MSG
);
1939 is_string("H", msgbuf
.para
[7], MSG
);
1940 is_string("I", msgbuf
.para
[8], MSG
);
1941 is_string("J", msgbuf
.para
[9], MSG
);
1942 is_string("K", msgbuf
.para
[10], MSG
);
1943 is_string("L", msgbuf
.para
[11], MSG
);
1944 is_string("M", msgbuf
.para
[12], MSG
);
1945 is_string("N", msgbuf
.para
[13], MSG
);
1946 is_string("O :P Q", msgbuf
.para
[14], MSG
);
1951 static void basic_para17d(void)
1953 struct MsgBuf msgbuf
;
1955 memset(&msgbuf
, 0, sizeof(msgbuf
));
1956 strcpy(tmp
, "@tag=value PRIVMSG #test test D E F G H I J K L M N :O P Q");
1958 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1959 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1960 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1961 is_string("value", msgbuf
.tags
[0].value
, MSG
);
1964 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
1965 if (is_int(15, msgbuf
.n_para
, MSG
)) {
1966 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
1967 is_string("#test", msgbuf
.para
[1], MSG
);
1968 is_string("test", msgbuf
.para
[2], MSG
);
1969 is_string("D", msgbuf
.para
[3], MSG
);
1970 is_string("E", msgbuf
.para
[4], MSG
);
1971 is_string("F", msgbuf
.para
[5], MSG
);
1972 is_string("G", msgbuf
.para
[6], MSG
);
1973 is_string("H", msgbuf
.para
[7], MSG
);
1974 is_string("I", msgbuf
.para
[8], MSG
);
1975 is_string("J", msgbuf
.para
[9], MSG
);
1976 is_string("K", msgbuf
.para
[10], MSG
);
1977 is_string("L", msgbuf
.para
[11], MSG
);
1978 is_string("M", msgbuf
.para
[12], MSG
);
1979 is_string("N", msgbuf
.para
[13], MSG
);
1980 is_string("O P Q", msgbuf
.para
[14], MSG
);
1985 static void long_para1(void)
1987 struct MsgBuf msgbuf
;
1989 memset(&msgbuf
, 0, sizeof(msgbuf
));
1990 strcpy(tmp
, "@tag=value PRIVMSG #test ");
1991 strcat(tmp
, MKTEXT(496));
1992 is_int(510, strlen(strchr(tmp
, ' ')+1), MSG
);
1994 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
1995 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
1996 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
1997 is_string("value", msgbuf
.tags
[0].value
, MSG
);
2000 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2001 if (is_int(3, msgbuf
.n_para
, MSG
)) {
2002 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2003 is_string("#test", msgbuf
.para
[1], MSG
);
2004 is_string(MKTEXT(496), msgbuf
.para
[2], MSG
);
2009 static void long_para2(void)
2011 struct MsgBuf msgbuf
;
2013 memset(&msgbuf
, 0, sizeof(msgbuf
));
2014 strcpy(tmp
, "@tag=value PRIVMSG #test ");
2015 strcat(tmp
, MKTEXT(494));
2017 is_int(510, strlen(strchr(tmp
, ' ')+1), MSG
);
2019 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2020 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
2021 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
2022 is_string("value", msgbuf
.tags
[0].value
, MSG
);
2025 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2026 if (is_int(4, msgbuf
.n_para
, MSG
)) {
2027 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2028 is_string("#test", msgbuf
.para
[1], MSG
);
2029 is_string(MKTEXT(494), msgbuf
.para
[2], MSG
);
2030 is_string("", msgbuf
.para
[3], MSG
);
2035 static void long_para3(void)
2037 struct MsgBuf msgbuf
;
2039 memset(&msgbuf
, 0, sizeof(msgbuf
));
2040 strcpy(tmp
, "@tag=value PRIVMSG #test ");
2041 strcat(tmp
, MKTEXT(495));
2043 is_int(510, strlen(strchr(tmp
, ' ')+1), MSG
);
2045 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2046 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
2047 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
2048 is_string("value", msgbuf
.tags
[0].value
, MSG
);
2051 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2052 if (is_int(3, msgbuf
.n_para
, MSG
)) {
2053 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2054 is_string("#test", msgbuf
.para
[1], MSG
);
2055 is_string(MKTEXT(495), msgbuf
.para
[2], MSG
);
2060 static void long_para4(void)
2062 struct MsgBuf msgbuf
;
2064 memset(&msgbuf
, 0, sizeof(msgbuf
));
2065 strcpy(tmp
, "@tag=value PRIVMSG #test ");
2066 strcat(tmp
, MKTEXT(493));
2068 is_int(510, strlen(strchr(tmp
, ' ')+1), MSG
);
2070 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2071 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
2072 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
2073 is_string("value", msgbuf
.tags
[0].value
, MSG
);
2076 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2077 if (is_int(4, msgbuf
.n_para
, MSG
)) {
2078 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2079 is_string("#test", msgbuf
.para
[1], MSG
);
2080 is_string(MKTEXT(493), msgbuf
.para
[2], MSG
);
2081 is_string("x", msgbuf
.para
[3], MSG
);
2086 static void too_long_para1(void)
2088 struct MsgBuf msgbuf
;
2090 memset(&msgbuf
, 0, sizeof(msgbuf
));
2091 strcpy(tmp
, "@tag=value PRIVMSG #test :");
2092 strcat(tmp
, MKTEXT(496));
2093 is_int(511, strlen(strchr(tmp
, ' ')+1), MSG
);
2095 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2098 /* the text will be truncated */
2099 strcpy(tmp2
, MKTEXT(496));
2100 tmp2
[strlen(tmp2
) - 1] = 0;
2102 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
2103 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
2104 is_string("value", msgbuf
.tags
[0].value
, MSG
);
2107 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2108 if (is_int(3, msgbuf
.n_para
, MSG
)) {
2109 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2110 is_string("#test", msgbuf
.para
[1], MSG
);
2111 is_string(tmp2
, msgbuf
.para
[2], MSG
);
2116 static void too_long_para2(void)
2118 struct MsgBuf msgbuf
;
2120 memset(&msgbuf
, 0, sizeof(msgbuf
));
2121 strcpy(tmp
, "@tag=value PRIVMSG #test :");
2122 strcat(tmp
, MKTEXT(497));
2123 is_int(512, strlen(strchr(tmp
, ' ')+1), MSG
);
2125 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2128 /* the text will be truncated */
2129 strcpy(tmp2
, MKTEXT(497));
2130 tmp2
[strlen(tmp2
) - 2] = 0;
2132 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
2133 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
2134 is_string("value", msgbuf
.tags
[0].value
, MSG
);
2137 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2138 if (is_int(3, msgbuf
.n_para
, MSG
)) {
2139 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2140 is_string("#test", msgbuf
.para
[1], MSG
);
2141 is_string(tmp2
, msgbuf
.para
[2], MSG
);
2146 static void long_everything1(void)
2148 struct MsgBuf msgbuf
;
2150 memset(&msgbuf
, 0, sizeof(msgbuf
));
2151 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2152 strcat(tmp
, MKTEXT(328));
2153 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K L ");
2154 strcat(tmp
, MKTEXT(472));
2155 is_int(512+510, strlen(tmp
), MSG
);
2157 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2158 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2159 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2160 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2162 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2163 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2165 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2166 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2168 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2169 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2171 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2172 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2174 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2175 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2177 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2178 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2180 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2181 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2183 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2184 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2186 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2187 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2189 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2190 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2192 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2193 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2195 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2196 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2198 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2199 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2201 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2202 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2205 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2206 if (is_int(15, msgbuf
.n_para
, MSG
)) {
2207 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2208 is_string("#test", msgbuf
.para
[1], MSG
);
2209 is_string("A", msgbuf
.para
[2], MSG
);
2210 is_string("B", msgbuf
.para
[3], MSG
);
2211 is_string("C", msgbuf
.para
[4], MSG
);
2212 is_string("D", msgbuf
.para
[5], MSG
);
2213 is_string("E", msgbuf
.para
[6], MSG
);
2214 is_string("F", msgbuf
.para
[7], MSG
);
2215 is_string("G", msgbuf
.para
[8], MSG
);
2216 is_string("H", msgbuf
.para
[9], MSG
);
2217 is_string("I", msgbuf
.para
[10], MSG
);
2218 is_string("J", msgbuf
.para
[11], MSG
);
2219 is_string("K", msgbuf
.para
[12], MSG
);
2220 is_string("L", msgbuf
.para
[13], MSG
);
2221 is_string(MKTEXT(472), msgbuf
.para
[14], MSG
);
2226 static void too_long_everything1(void)
2228 struct MsgBuf msgbuf
;
2230 memset(&msgbuf
, 0, sizeof(msgbuf
));
2231 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2232 strcat(tmp
, MKTEXT(328));
2233 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K L ");
2234 strcat(tmp
, MKTEXT(472));
2236 is_int(512+511, strlen(tmp
), MSG
);
2238 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2239 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2240 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2241 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2243 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2244 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2246 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2247 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2249 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2250 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2252 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2253 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2255 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2256 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2258 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2259 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2261 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2262 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2264 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2265 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2267 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2268 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2270 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2271 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2273 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2274 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2276 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2277 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2279 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2280 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2282 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2283 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2286 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2287 if (is_int(15, msgbuf
.n_para
, MSG
)) {
2288 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2289 is_string("#test", msgbuf
.para
[1], MSG
);
2290 is_string("A", msgbuf
.para
[2], MSG
);
2291 is_string("B", msgbuf
.para
[3], MSG
);
2292 is_string("C", msgbuf
.para
[4], MSG
);
2293 is_string("D", msgbuf
.para
[5], MSG
);
2294 is_string("E", msgbuf
.para
[6], MSG
);
2295 is_string("F", msgbuf
.para
[7], MSG
);
2296 is_string("G", msgbuf
.para
[8], MSG
);
2297 is_string("H", msgbuf
.para
[9], MSG
);
2298 is_string("I", msgbuf
.para
[10], MSG
);
2299 is_string("J", msgbuf
.para
[11], MSG
);
2300 is_string("K", msgbuf
.para
[12], MSG
);
2301 is_string("L", msgbuf
.para
[13], MSG
);
2302 is_string(MKTEXT(472), msgbuf
.para
[14], MSG
);
2307 static void long_everything2(void)
2309 struct MsgBuf msgbuf
;
2311 memset(&msgbuf
, 0, sizeof(msgbuf
));
2312 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2313 strcat(tmp
, MKTEXT(328));
2314 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K ");
2315 strcat(tmp
, MKTEXT(472));
2317 is_int(512+510, strlen(tmp
), MSG
);
2319 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2320 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2321 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2322 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2324 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2325 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2327 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2328 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2330 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2331 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2333 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2334 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2336 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2337 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2339 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2340 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2342 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2343 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2345 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2346 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2348 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2349 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2351 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2352 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2354 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2355 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2357 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2358 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2360 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2361 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2363 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2364 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2367 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2368 if (is_int(15, msgbuf
.n_para
, MSG
)) {
2369 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2370 is_string("#test", msgbuf
.para
[1], MSG
);
2371 is_string("A", msgbuf
.para
[2], MSG
);
2372 is_string("B", msgbuf
.para
[3], MSG
);
2373 is_string("C", msgbuf
.para
[4], MSG
);
2374 is_string("D", msgbuf
.para
[5], MSG
);
2375 is_string("E", msgbuf
.para
[6], MSG
);
2376 is_string("F", msgbuf
.para
[7], MSG
);
2377 is_string("G", msgbuf
.para
[8], MSG
);
2378 is_string("H", msgbuf
.para
[9], MSG
);
2379 is_string("I", msgbuf
.para
[10], MSG
);
2380 is_string("J", msgbuf
.para
[11], MSG
);
2381 is_string("K", msgbuf
.para
[12], MSG
);
2382 is_string(MKTEXT(472), msgbuf
.para
[13], MSG
);
2383 is_string("", msgbuf
.para
[14], MSG
);
2388 static void too_long_everything2(void)
2390 struct MsgBuf msgbuf
;
2392 memset(&msgbuf
, 0, sizeof(msgbuf
));
2393 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2394 strcat(tmp
, MKTEXT(328));
2395 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K ");
2396 strcat(tmp
, MKTEXT(472));
2399 is_int(512+511, strlen(tmp
), MSG
);
2401 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2402 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2403 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2404 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2406 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2407 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2409 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2410 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2412 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2413 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2415 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2416 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2418 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2419 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2421 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2422 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2424 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2425 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2427 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2428 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2430 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2431 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2433 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2434 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2436 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2437 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2439 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2440 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2442 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2443 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2445 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2446 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2449 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2450 if (is_int(15, msgbuf
.n_para
, MSG
)) {
2451 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2452 is_string("#test", msgbuf
.para
[1], MSG
);
2453 is_string("A", msgbuf
.para
[2], MSG
);
2454 is_string("B", msgbuf
.para
[3], MSG
);
2455 is_string("C", msgbuf
.para
[4], MSG
);
2456 is_string("D", msgbuf
.para
[5], MSG
);
2457 is_string("E", msgbuf
.para
[6], MSG
);
2458 is_string("F", msgbuf
.para
[7], MSG
);
2459 is_string("G", msgbuf
.para
[8], MSG
);
2460 is_string("H", msgbuf
.para
[9], MSG
);
2461 is_string("I", msgbuf
.para
[10], MSG
);
2462 is_string("J", msgbuf
.para
[11], MSG
);
2463 is_string("K", msgbuf
.para
[12], MSG
);
2464 is_string(MKTEXT(472), msgbuf
.para
[13], MSG
);
2465 is_string("", msgbuf
.para
[14], MSG
);
2470 static void long_everything3a(void)
2472 struct MsgBuf msgbuf
;
2474 memset(&msgbuf
, 0, sizeof(msgbuf
));
2475 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2476 strcat(tmp
, MKTEXT(328));
2477 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K L ");
2478 strcat(tmp
, MKTEXT(471));
2480 is_int(512+510, strlen(tmp
), MSG
);
2482 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2485 /* last para has a space at the end */
2486 memset(tmp2
, 0, sizeof(tmp2
));
2487 strcat(tmp2
, MKTEXT(471));
2490 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2491 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2492 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2494 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2495 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2497 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2498 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2500 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2501 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2503 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2504 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2506 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2507 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2509 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2510 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2512 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2513 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2515 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2516 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2518 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2519 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2521 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2522 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2524 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2525 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2527 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2528 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2530 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2531 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2533 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2534 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2537 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2538 if (is_int(15, msgbuf
.n_para
, MSG
)) {
2539 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2540 is_string("#test", msgbuf
.para
[1], MSG
);
2541 is_string("A", msgbuf
.para
[2], MSG
);
2542 is_string("B", msgbuf
.para
[3], MSG
);
2543 is_string("C", msgbuf
.para
[4], MSG
);
2544 is_string("D", msgbuf
.para
[5], MSG
);
2545 is_string("E", msgbuf
.para
[6], MSG
);
2546 is_string("F", msgbuf
.para
[7], MSG
);
2547 is_string("G", msgbuf
.para
[8], MSG
);
2548 is_string("H", msgbuf
.para
[9], MSG
);
2549 is_string("I", msgbuf
.para
[10], MSG
);
2550 is_string("J", msgbuf
.para
[11], MSG
);
2551 is_string("K", msgbuf
.para
[12], MSG
);
2552 is_string("L", msgbuf
.para
[13], MSG
);
2553 is_string(tmp2
, msgbuf
.para
[14], MSG
);
2558 static void too_long_everything3a(void)
2560 struct MsgBuf msgbuf
;
2562 memset(&msgbuf
, 0, sizeof(msgbuf
));
2563 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2564 strcat(tmp
, MKTEXT(328));
2565 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K L ");
2566 strcat(tmp
, MKTEXT(471));
2569 is_int(512+511, strlen(tmp
), MSG
);
2571 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2574 /* last para has a space at the end */
2575 memset(tmp2
, 0, sizeof(tmp2
));
2576 strcat(tmp2
, MKTEXT(471));
2579 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2580 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2581 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2583 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2584 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2586 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2587 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2589 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2590 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2592 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2593 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2595 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2596 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2598 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2599 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2601 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2602 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2604 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2605 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2607 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2608 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2610 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2611 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2613 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2614 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2616 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2617 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2619 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2620 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2622 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2623 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2626 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2627 if (is_int(15, msgbuf
.n_para
, MSG
)) {
2628 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2629 is_string("#test", msgbuf
.para
[1], MSG
);
2630 is_string("A", msgbuf
.para
[2], MSG
);
2631 is_string("B", msgbuf
.para
[3], MSG
);
2632 is_string("C", msgbuf
.para
[4], MSG
);
2633 is_string("D", msgbuf
.para
[5], MSG
);
2634 is_string("E", msgbuf
.para
[6], MSG
);
2635 is_string("F", msgbuf
.para
[7], MSG
);
2636 is_string("G", msgbuf
.para
[8], MSG
);
2637 is_string("H", msgbuf
.para
[9], MSG
);
2638 is_string("I", msgbuf
.para
[10], MSG
);
2639 is_string("J", msgbuf
.para
[11], MSG
);
2640 is_string("K", msgbuf
.para
[12], MSG
);
2641 is_string("L", msgbuf
.para
[13], MSG
);
2642 is_string(tmp2
, msgbuf
.para
[14], MSG
);
2647 static void long_everything3b(void)
2649 struct MsgBuf msgbuf
;
2651 memset(&msgbuf
, 0, sizeof(msgbuf
));
2652 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2653 strcat(tmp
, MKTEXT(328));
2654 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K ");
2655 strcat(tmp
, MKTEXT(473));
2657 is_int(512+510, strlen(tmp
), MSG
);
2659 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2660 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2661 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2662 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2664 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2665 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2667 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2668 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2670 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2671 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2673 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2674 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2676 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2677 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2679 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2680 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2682 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2683 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2685 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2686 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2688 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2689 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2691 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2692 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2694 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2695 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2697 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2698 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2700 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2701 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2703 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2704 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2707 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2708 if (is_int(14, msgbuf
.n_para
, MSG
)) {
2709 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2710 is_string("#test", msgbuf
.para
[1], MSG
);
2711 is_string("A", msgbuf
.para
[2], MSG
);
2712 is_string("B", msgbuf
.para
[3], MSG
);
2713 is_string("C", msgbuf
.para
[4], MSG
);
2714 is_string("D", msgbuf
.para
[5], MSG
);
2715 is_string("E", msgbuf
.para
[6], MSG
);
2716 is_string("F", msgbuf
.para
[7], MSG
);
2717 is_string("G", msgbuf
.para
[8], MSG
);
2718 is_string("H", msgbuf
.para
[9], MSG
);
2719 is_string("I", msgbuf
.para
[10], MSG
);
2720 is_string("J", msgbuf
.para
[11], MSG
);
2721 is_string("K", msgbuf
.para
[12], MSG
);
2722 is_string(MKTEXT(473), msgbuf
.para
[13], MSG
);
2727 static void too_long_everything3b(void)
2729 struct MsgBuf msgbuf
;
2731 memset(&msgbuf
, 0, sizeof(msgbuf
));
2732 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2733 strcat(tmp
, MKTEXT(328));
2734 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K ");
2735 strcat(tmp
, MKTEXT(473));
2738 is_int(512+511, strlen(tmp
), MSG
);
2740 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2741 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2742 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2743 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2745 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2746 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2748 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2749 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2751 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2752 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2754 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2755 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2757 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2758 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2760 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2761 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2763 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2764 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2766 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2767 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2769 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2770 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2772 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2773 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2775 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2776 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2778 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2779 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2781 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2782 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2784 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2785 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2788 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2789 if (is_int(14, msgbuf
.n_para
, MSG
)) {
2790 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2791 is_string("#test", msgbuf
.para
[1], MSG
);
2792 is_string("A", msgbuf
.para
[2], MSG
);
2793 is_string("B", msgbuf
.para
[3], MSG
);
2794 is_string("C", msgbuf
.para
[4], MSG
);
2795 is_string("D", msgbuf
.para
[5], MSG
);
2796 is_string("E", msgbuf
.para
[6], MSG
);
2797 is_string("F", msgbuf
.para
[7], MSG
);
2798 is_string("G", msgbuf
.para
[8], MSG
);
2799 is_string("H", msgbuf
.para
[9], MSG
);
2800 is_string("I", msgbuf
.para
[10], MSG
);
2801 is_string("J", msgbuf
.para
[11], MSG
);
2802 is_string("K", msgbuf
.para
[12], MSG
);
2803 is_string(MKTEXT(473), msgbuf
.para
[13], MSG
);
2808 static void long_everything4(void)
2810 struct MsgBuf msgbuf
;
2812 memset(&msgbuf
, 0, sizeof(msgbuf
));
2813 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2814 strcat(tmp
, MKTEXT(328));
2815 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K ");
2816 strcat(tmp
, MKTEXT(471));
2818 is_int(512+510, strlen(tmp
), MSG
);
2820 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2821 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2822 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2823 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2825 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2826 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2828 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2829 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2831 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2832 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2834 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2835 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2837 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2838 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2840 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2841 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2843 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2844 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2846 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2847 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2849 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2850 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2852 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2853 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2855 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2856 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2858 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2859 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2861 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2862 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2864 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2865 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2868 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2869 if (is_int(15, msgbuf
.n_para
, MSG
)) {
2870 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2871 is_string("#test", msgbuf
.para
[1], MSG
);
2872 is_string("A", msgbuf
.para
[2], MSG
);
2873 is_string("B", msgbuf
.para
[3], MSG
);
2874 is_string("C", msgbuf
.para
[4], MSG
);
2875 is_string("D", msgbuf
.para
[5], MSG
);
2876 is_string("E", msgbuf
.para
[6], MSG
);
2877 is_string("F", msgbuf
.para
[7], MSG
);
2878 is_string("G", msgbuf
.para
[8], MSG
);
2879 is_string("H", msgbuf
.para
[9], MSG
);
2880 is_string("I", msgbuf
.para
[10], MSG
);
2881 is_string("J", msgbuf
.para
[11], MSG
);
2882 is_string("K", msgbuf
.para
[12], MSG
);
2883 is_string(MKTEXT(471), msgbuf
.para
[13], MSG
);
2884 is_string("L", msgbuf
.para
[14], MSG
);
2889 static void too_long_everything4(void)
2891 struct MsgBuf msgbuf
;
2893 memset(&msgbuf
, 0, sizeof(msgbuf
));
2894 strcpy(tmp
, "@tag0=value0;tag1=value1;tag2=value2;tag3=value3;tag4=value4;tag5=value5;tag6=value6;tag7=value7;tag8=value8;tag9=value9;tag10=value10;tag11=value11;tag12=value12;tag13=value13;tag14=");
2895 strcat(tmp
, MKTEXT(328));
2896 strcat(tmp
, " PRIVMSG #test A B C D E F G H I J K ");
2897 strcat(tmp
, MKTEXT(471));
2900 is_int(512+511, strlen(tmp
), MSG
);
2902 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
2903 if (is_int(15, msgbuf
.n_tags
, MSG
)) {
2904 is_string("tag0", msgbuf
.tags
[0].key
, MSG
);
2905 is_string("value0", msgbuf
.tags
[0].value
, MSG
);
2907 is_string("tag1", msgbuf
.tags
[1].key
, MSG
);
2908 is_string("value1", msgbuf
.tags
[1].value
, MSG
);
2910 is_string("tag2", msgbuf
.tags
[2].key
, MSG
);
2911 is_string("value2", msgbuf
.tags
[2].value
, MSG
);
2913 is_string("tag3", msgbuf
.tags
[3].key
, MSG
);
2914 is_string("value3", msgbuf
.tags
[3].value
, MSG
);
2916 is_string("tag4", msgbuf
.tags
[4].key
, MSG
);
2917 is_string("value4", msgbuf
.tags
[4].value
, MSG
);
2919 is_string("tag5", msgbuf
.tags
[5].key
, MSG
);
2920 is_string("value5", msgbuf
.tags
[5].value
, MSG
);
2922 is_string("tag6", msgbuf
.tags
[6].key
, MSG
);
2923 is_string("value6", msgbuf
.tags
[6].value
, MSG
);
2925 is_string("tag7", msgbuf
.tags
[7].key
, MSG
);
2926 is_string("value7", msgbuf
.tags
[7].value
, MSG
);
2928 is_string("tag8", msgbuf
.tags
[8].key
, MSG
);
2929 is_string("value8", msgbuf
.tags
[8].value
, MSG
);
2931 is_string("tag9", msgbuf
.tags
[9].key
, MSG
);
2932 is_string("value9", msgbuf
.tags
[9].value
, MSG
);
2934 is_string("tag10", msgbuf
.tags
[10].key
, MSG
);
2935 is_string("value10", msgbuf
.tags
[10].value
, MSG
);
2937 is_string("tag11", msgbuf
.tags
[11].key
, MSG
);
2938 is_string("value11", msgbuf
.tags
[11].value
, MSG
);
2940 is_string("tag12", msgbuf
.tags
[12].key
, MSG
);
2941 is_string("value12", msgbuf
.tags
[12].value
, MSG
);
2943 is_string("tag13", msgbuf
.tags
[13].key
, MSG
);
2944 is_string("value13", msgbuf
.tags
[13].value
, MSG
);
2946 is_string("tag14", msgbuf
.tags
[14].key
, MSG
);
2947 is_string(MKTEXT(328), msgbuf
.tags
[14].value
, MSG
);
2950 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
2951 if (is_int(15, msgbuf
.n_para
, MSG
)) {
2952 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
2953 is_string("#test", msgbuf
.para
[1], MSG
);
2954 is_string("A", msgbuf
.para
[2], MSG
);
2955 is_string("B", msgbuf
.para
[3], MSG
);
2956 is_string("C", msgbuf
.para
[4], MSG
);
2957 is_string("D", msgbuf
.para
[5], MSG
);
2958 is_string("E", msgbuf
.para
[6], MSG
);
2959 is_string("F", msgbuf
.para
[7], MSG
);
2960 is_string("G", msgbuf
.para
[8], MSG
);
2961 is_string("H", msgbuf
.para
[9], MSG
);
2962 is_string("I", msgbuf
.para
[10], MSG
);
2963 is_string("J", msgbuf
.para
[11], MSG
);
2964 is_string("K", msgbuf
.para
[12], MSG
);
2965 is_string(MKTEXT(471), msgbuf
.para
[13], MSG
);
2966 is_string("L", msgbuf
.para
[14], MSG
);
2971 static void no_para_0_spaces(void)
2973 struct MsgBuf msgbuf
;
2975 memset(&msgbuf
, 0, sizeof(msgbuf
));
2976 strcpy(tmp
, "@tag=value");
2978 is_int(1, msgbuf_parse(&msgbuf
, tmp
), MSG
);
2981 static void no_para_1_space(void)
2983 struct MsgBuf msgbuf
;
2985 memset(&msgbuf
, 0, sizeof(msgbuf
));
2986 strcpy(tmp
, "@tag=value ");
2988 is_int(2, msgbuf_parse(&msgbuf
, tmp
), MSG
);
2991 static void no_para_2_spaces(void)
2993 struct MsgBuf msgbuf
;
2995 memset(&msgbuf
, 0, sizeof(msgbuf
));
2996 strcpy(tmp
, "@tag=value ");
2998 is_int(3, msgbuf_parse(&msgbuf
, tmp
), MSG
);
3001 static void no_para_3_spaces(void)
3003 struct MsgBuf msgbuf
;
3005 memset(&msgbuf
, 0, sizeof(msgbuf
));
3006 strcpy(tmp
, "@tag=value ");
3008 is_int(3, msgbuf_parse(&msgbuf
, tmp
), MSG
);
3011 static void origin_with_para1(void)
3013 struct MsgBuf msgbuf
;
3015 memset(&msgbuf
, 0, sizeof(msgbuf
));
3016 strcpy(tmp
, "@tag=value :origin. PRIVMSG");
3018 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3019 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
3020 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
3021 is_string("value", msgbuf
.tags
[0].value
, MSG
);
3024 is_string("origin.", msgbuf
.origin
, MSG
);
3026 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3027 if (is_int(1, msgbuf
.n_para
, MSG
)) {
3028 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3033 static void origin_with_para3(void)
3035 struct MsgBuf msgbuf
;
3037 memset(&msgbuf
, 0, sizeof(msgbuf
));
3038 strcpy(tmp
, "@tag=value :origin. PRIVMSG #test :test");
3040 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3041 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
3042 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
3043 is_string("value", msgbuf
.tags
[0].value
, MSG
);
3046 is_string("origin.", msgbuf
.origin
, MSG
);
3048 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3049 if (is_int(3, msgbuf
.n_para
, MSG
)) {
3050 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3051 is_string("#test", msgbuf
.para
[1], MSG
);
3052 is_string("test", msgbuf
.para
[2], MSG
);
3057 static void origin_no_para_0_spaces(void)
3059 struct MsgBuf msgbuf
;
3061 memset(&msgbuf
, 0, sizeof(msgbuf
));
3062 strcpy(tmp
, "@tag=value :origin");
3064 is_int(4, msgbuf_parse(&msgbuf
, tmp
), MSG
);
3067 static void origin_no_para_1_space(void)
3069 struct MsgBuf msgbuf
;
3071 memset(&msgbuf
, 0, sizeof(msgbuf
));
3072 strcpy(tmp
, "@tag=value :origin ");
3074 is_int(2, msgbuf_parse(&msgbuf
, tmp
), MSG
);
3077 static void origin_no_para_2_spaces(void)
3079 struct MsgBuf msgbuf
;
3081 memset(&msgbuf
, 0, sizeof(msgbuf
));
3082 strcpy(tmp
, "@tag=value :origin ");
3084 is_int(3, msgbuf_parse(&msgbuf
, tmp
), MSG
);
3087 static void origin_no_para_3_spaces(void)
3089 struct MsgBuf msgbuf
;
3091 memset(&msgbuf
, 0, sizeof(msgbuf
));
3092 strcpy(tmp
, "@tag=value :origin ");
3094 is_int(3, msgbuf_parse(&msgbuf
, tmp
), MSG
);
3097 static void unescape_test(void)
3099 struct MsgBuf msgbuf
;
3101 memset(&msgbuf
, 0, sizeof(msgbuf
));
3102 strcpy(tmp
, "@tag1=:\\:\\s\\\\\\r\\n;tag2=^:^\\:^\\s^\\\\^\\r^\\n^;tag3=\\:;tag4=\\\\;tag5=\\s PRIVMSG #test :test");
3104 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3105 if (is_int(5, msgbuf
.n_tags
, MSG
)) {
3106 is_string("tag1", msgbuf
.tags
[0].key
, MSG
);
3107 is_string(":; \\\r\n", msgbuf
.tags
[0].value
, MSG
);
3109 is_string("tag2", msgbuf
.tags
[1].key
, MSG
);
3110 is_string("^:^;^ ^\\^\r^\n^", msgbuf
.tags
[1].value
, MSG
);
3112 is_string("tag3", msgbuf
.tags
[2].key
, MSG
);
3113 is_string(";", msgbuf
.tags
[2].value
, MSG
);
3115 is_string("tag4", msgbuf
.tags
[3].key
, MSG
);
3116 is_string("\\", msgbuf
.tags
[3].value
, MSG
);
3118 is_string("tag5", msgbuf
.tags
[4].key
, MSG
);
3119 is_string(" ", msgbuf
.tags
[4].value
, MSG
);
3122 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3123 if (is_int(3, msgbuf
.n_para
, MSG
)) {
3124 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3125 is_string("#test", msgbuf
.para
[1], MSG
);
3126 is_string("test", msgbuf
.para
[2], MSG
);
3131 static void unescape_bad_test1(void)
3133 struct MsgBuf msgbuf
;
3135 memset(&msgbuf
, 0, sizeof(msgbuf
));
3136 strcpy(tmp
, "@tag1=\\ PRIVMSG #test :test");
3138 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3139 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
3140 is_string("tag1", msgbuf
.tags
[0].key
, MSG
);
3141 is_string("", msgbuf
.tags
[0].value
, MSG
);
3144 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3145 if (is_int(3, msgbuf
.n_para
, MSG
)) {
3146 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3147 is_string("#test", msgbuf
.para
[1], MSG
);
3148 is_string("test", msgbuf
.para
[2], MSG
);
3153 static void unescape_bad_test2(void)
3155 struct MsgBuf msgbuf
;
3157 memset(&msgbuf
, 0, sizeof(msgbuf
));
3158 strcpy(tmp
, "@tag1=\\; PRIVMSG #test :test");
3160 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3161 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
3162 is_string("tag1", msgbuf
.tags
[0].key
, MSG
);
3163 is_string("", msgbuf
.tags
[0].value
, MSG
);
3166 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3167 if (is_int(3, msgbuf
.n_para
, MSG
)) {
3168 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3169 is_string("#test", msgbuf
.para
[1], MSG
);
3170 is_string("test", msgbuf
.para
[2], MSG
);
3175 static void unescape_bad_test3(void)
3177 struct MsgBuf msgbuf
;
3179 memset(&msgbuf
, 0, sizeof(msgbuf
));
3180 strcpy(tmp
, "@tag1=\\;tag2=value2 PRIVMSG #test :test");
3182 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3183 if (is_int(2, msgbuf
.n_tags
, MSG
)) {
3184 is_string("tag1", msgbuf
.tags
[0].key
, MSG
);
3185 is_string("", msgbuf
.tags
[0].value
, MSG
);
3187 is_string("tag2", msgbuf
.tags
[1].key
, MSG
);
3188 is_string("value2", msgbuf
.tags
[1].value
, MSG
);
3191 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3192 if (is_int(3, msgbuf
.n_para
, MSG
)) {
3193 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3194 is_string("#test", msgbuf
.para
[1], MSG
);
3195 is_string("test", msgbuf
.para
[2], MSG
);
3200 static void unescape_bad_test4(void)
3202 struct MsgBuf msgbuf
;
3204 memset(&msgbuf
, 0, sizeof(msgbuf
));
3205 strcpy(tmp
, "@tag1\\=value1;ta\\g2=val\\=ue2 PRIVMSG #test :test");
3207 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3208 if (is_int(2, msgbuf
.n_tags
, MSG
)) {
3209 is_string("tag1\\", msgbuf
.tags
[0].key
, MSG
);
3210 is_string("value1", msgbuf
.tags
[0].value
, MSG
);
3212 is_string("ta\\g2", msgbuf
.tags
[1].key
, MSG
);
3213 is_string("val=ue2", msgbuf
.tags
[1].value
, MSG
);
3216 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3217 if (is_int(3, msgbuf
.n_para
, MSG
)) {
3218 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3219 is_string("#test", msgbuf
.para
[1], MSG
);
3220 is_string("test", msgbuf
.para
[2], MSG
);
3225 static void unescape_bad_test5(void)
3227 struct MsgBuf msgbuf
;
3229 memset(&msgbuf
, 0, sizeof(msgbuf
));
3230 strcpy(tmp
, "@tag1=\\v\\a\\l\\u\\e\\1;tag2=\\va\\lu\\e2;tag3=v\\al\\ue\\3 PRIVMSG #test :test");
3232 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3233 if (is_int(3, msgbuf
.n_tags
, MSG
)) {
3234 is_string("tag1", msgbuf
.tags
[0].key
, MSG
);
3235 is_string("value1", msgbuf
.tags
[0].value
, MSG
);
3237 is_string("tag2", msgbuf
.tags
[1].key
, MSG
);
3238 is_string("value2", msgbuf
.tags
[1].value
, MSG
);
3240 is_string("tag3", msgbuf
.tags
[2].key
, MSG
);
3241 is_string("value3", msgbuf
.tags
[2].value
, MSG
);
3244 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3245 if (is_int(3, msgbuf
.n_para
, MSG
)) {
3246 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3247 is_string("#test", msgbuf
.para
[1], MSG
);
3248 is_string("test", msgbuf
.para
[2], MSG
);
3253 static void unescape_bad_test6(void)
3255 struct MsgBuf msgbuf
;
3257 memset(&msgbuf
, 0, sizeof(msgbuf
));
3258 strcpy(tmp
, "@\\=value1;tag2=value2 PRIVMSG #test :test");
3260 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3261 if (is_int(2, msgbuf
.n_tags
, MSG
)) {
3262 is_string("\\", msgbuf
.tags
[0].key
, MSG
);
3263 is_string("value1", msgbuf
.tags
[0].value
, MSG
);
3265 is_string("tag2", msgbuf
.tags
[1].key
, MSG
);
3266 is_string("value2", msgbuf
.tags
[1].value
, MSG
);
3269 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3270 if (is_int(3, msgbuf
.n_para
, MSG
)) {
3271 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3272 is_string("#test", msgbuf
.para
[1], MSG
);
3273 is_string("test", msgbuf
.para
[2], MSG
);
3278 static void unescape_8bit(void)
3280 struct MsgBuf msgbuf
;
3282 memset(&msgbuf
, 0, sizeof(msgbuf
));
3283 strcpy(tmp
, "@tag=\176\177\178\376\377 PRIVMSG #test :test");
3285 if (is_int(0, msgbuf_parse(&msgbuf
, tmp
), MSG
)) {
3286 if (is_int(1, msgbuf
.n_tags
, MSG
)) {
3287 is_string("tag", msgbuf
.tags
[0].key
, MSG
);
3288 is_string("\176\177\178\376\377", msgbuf
.tags
[0].value
, MSG
);
3291 is_string("PRIVMSG", msgbuf
.cmd
, MSG
);
3292 if (is_int(3, msgbuf
.n_para
, MSG
)) {
3293 is_string("PRIVMSG", msgbuf
.para
[0], MSG
);
3294 is_string("#test", msgbuf
.para
[1], MSG
);
3295 is_string("test", msgbuf
.para
[2], MSG
);
3300 static struct MsgBuf
*reconstruct_tail_prep(char *line
, size_t n
)
3302 static struct MsgBuf msgbuf
;
3303 msgbuf_init(&msgbuf
);
3304 msgbuf_parse(&msgbuf
, line
);
3305 msgbuf_reconstruct_tail(&msgbuf
, n
);
3309 static void reconstruct_tail(void)
3312 mb
= reconstruct_tail_prep((char[]){"CMD P1"}, 2);
3313 is_string("CMD", mb
->para
[0], MSG
);
3314 is_string("P1", mb
->para
[1], MSG
);
3316 mb
= reconstruct_tail_prep((char[]){"CMD P1 P2"}, 2);
3317 is_string("CMD", mb
->para
[0], MSG
);
3318 is_string("P1", mb
->para
[1], MSG
);
3319 is_string("P2", mb
->para
[2], MSG
);
3321 mb
= reconstruct_tail_prep((char[]){" CMD P1 P2 :P3"}, 0);
3322 is_string("CMD P1 P2 :P3", mb
->para
[0], MSG
);
3324 mb
= reconstruct_tail_prep((char[]){"CMD P1 P2 :P3"}, 1);
3325 is_string(" P1 P2 :P3", mb
->para
[1], MSG
);
3327 mb
= reconstruct_tail_prep((char[]){"CMD P1 P2"}, 1);
3328 is_string("P1 P2", mb
->para
[1], MSG
);
3330 mb
= reconstruct_tail_prep((char[]){"CMD P1 P2 "}, 2);
3331 is_string(" P2 ", mb
->para
[2], MSG
);
3333 mb
= reconstruct_tail_prep((char[]){"CMD P1 "}, 2);
3334 is_string(" ", mb
->para
[2], MSG
);
3336 mb
= reconstruct_tail_prep((char[]){"CMD P1 :"}, 2);
3337 is_string(":", mb
->para
[2], MSG
);
3339 mb
= reconstruct_tail_prep((char[]){"CMD P1 :"}, 2);
3340 is_string(" :", mb
->para
[2], MSG
);
3343 int main(int argc
, char *argv
[])
3345 memset(&me
, 0, sizeof(me
));
3346 strcpy(me
.name
, "me.name.");
3350 is_int(512, TAGSLEN
, MSG
);
3351 is_int(510, DATALEN
, MSG
);
3425 long_everything3a();
3426 long_everything3b();
3429 too_long_everything1();
3430 too_long_everything2();
3431 too_long_everything3a();
3432 too_long_everything3b();
3433 too_long_everything4();
3440 origin_with_para1();
3441 origin_with_para3();
3442 origin_no_para_0_spaces();
3443 origin_no_para_1_space();
3444 origin_no_para_2_spaces();
3445 origin_no_para_3_spaces();
3448 unescape_bad_test1();
3449 unescape_bad_test2();
3450 unescape_bad_test3();
3451 unescape_bad_test4();
3452 unescape_bad_test5();
3453 unescape_bad_test6();