3 * CUnit - A Unit testing framework library for C.
4 * Copyright (C) 2001 Anil Kumar
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 #include "stringbuf_test.h"
28 #include "../lib/libcitadel.h"
35 int OutputEscapeAs = 0;
37 static void TestRevalidateStrBuf(StrBuf *Buf)
39 CU_ASSERT(strlen(ChrPtr(Buf)) == StrLength(Buf));
45 Some samples from the original...
46 CU_ASSERT_EQUAL(10, 10);
47 CU_ASSERT_EQUAL(0, -0);
48 CU_ASSERT_EQUAL(-12, -12);
49 CU_ASSERT_NOT_EQUAL(10, 11);
50 CU_ASSERT_NOT_EQUAL(0, -1);
51 CU_ASSERT_NOT_EQUAL(-12, -11);
52 CU_ASSERT_PTR_EQUAL((void*)0x100, (void*)0x100);
53 CU_ASSERT_PTR_NOT_EQUAL((void*)0x100, (void*)0x101);
54 CU_ASSERT_PTR_NULL(NULL);
55 CU_ASSERT_PTR_NULL(0x0);
56 CU_ASSERT_PTR_NOT_NULL((void*)0x23);
57 CU_ASSERT_STRING_EQUAL(str1, str2);
58 CU_ASSERT_STRING_NOT_EQUAL(str1, str2);
59 CU_ASSERT_NSTRING_EQUAL(str1, str2, strlen(str1));
60 CU_ASSERT_NSTRING_EQUAL(str1, str1, strlen(str1));
61 CU_ASSERT_NSTRING_EQUAL(str1, str1, strlen(str1) + 1);
62 CU_ASSERT_NSTRING_NOT_EQUAL(str1, str2, 3);
63 CU_ASSERT_NSTRING_NOT_EQUAL(str1, str3, strlen(str1) + 1);
64 CU_ASSERT_DOUBLE_EQUAL(10, 10.0001, 0.0001);
65 CU_ASSERT_DOUBLE_EQUAL(10, 10.0001, -0.0001);
66 CU_ASSERT_DOUBLE_EQUAL(-10, -10.0001, 0.0001);
67 CU_ASSERT_DOUBLE_EQUAL(-10, -10.0001, -0.0001);
68 CU_ASSERT_DOUBLE_NOT_EQUAL(10, 10.001, 0.0001);
69 CU_ASSERT_DOUBLE_NOT_EQUAL(10, 10.001, -0.0001);
70 CU_ASSERT_DOUBLE_NOT_EQUAL(-10, -10.001, 0.0001);
71 CU_ASSERT_DOUBLE_NOT_EQUAL(-10, -10.001, -0.0001);
74 static void TestRFC822Decode(void)
78 StrBuf *DefaultCharset;
81 DefaultCharset = NewStrBufPlain(HKEY("iso-8859-1"));
82 FoundCharset = NewStrBuf();
83 Source = NewStrBufPlain(HKEY("=?koi8-r?B?78bP0s3Mxc7JxSDXz9rE1dvO2c3JINvB0sHNySDP?="));
86 StrBuf_RFC822_to_Utf8(Target, Source, DefaultCharset, FoundCharset);
89 TestRevalidateStrBuf(Target);
90 printf("the ugly multi:>%s<\n", ChrPtr(Target));
93 FreeStrBuf(&FoundCharset);
94 FreeStrBuf(&DefaultCharset);
97 DefaultCharset = NewStrBufPlain(HKEY("iso-8859-1"));
98 FoundCharset = NewStrBuf();
99 Source = NewStrBufPlain(HKEY("\"w.goesgens\" <w.goesgens@aoeuaoeuaoeu.org>, =?ISO-8859-15?Q?Walter_?= =?ISO-8859-15?Q?G=F6aoeus?= <aoeuaoeu@aoe.de>, =?ISO-8859-15?Q?aoeuaoeuh?= =?ISO-8859-15?Q?_G=F6aoeus?= <aoeuoeuaoeu@oeu.de>, aoeuao aoeuaoeu <aoeuaoeuaoeaoe@aoe.de"));
100 Target = NewStrBufPlain(NULL, 256);
102 StrBuf_RFC822_to_Utf8(Target, Source, DefaultCharset, FoundCharset);
103 TestRevalidateStrBuf(Target);
104 printf("the ugly multi:>%s<\n", ChrPtr(Target));
107 FreeStrBuf(&FoundCharset);
108 FreeStrBuf(&DefaultCharset);
113 static void TestRFC822DecodeStdin(void)
115 int fdin = 0;// STDIN
119 StrBuf *DefaultCharset;
120 StrBuf *FoundCharset;
122 DefaultCharset = NewStrBufPlain(HKEY("iso-8859-1"));
123 FoundCharset = NewStrBuf();
124 Source = NewStrBuf();
128 StrBufTCP_read_line(Source, &fdin, 0, &Err);
129 Target = NewStrBuf();
131 StrBuf_RFC822_to_Utf8(Target, Source, DefaultCharset, FoundCharset);
133 TestRevalidateStrBuf(Target);
134 printf("the ugly multi:>%s<\n", ChrPtr(Target));
138 FreeStrBuf(&FoundCharset);
139 FreeStrBuf(&DefaultCharset);
143 static void TestHTMLEscEncodeStdin(void)
145 int fdin = 0;// STDIN
150 Source = NewStrBuf();
154 StrBufTCP_read_line(Source, &fdin, 0, &Err);
155 Target = NewStrBuf();
157 StrEscAppend(Target, Source, NULL, 0, 2);
159 TestRevalidateStrBuf(Target);
160 printf("%s\n", ChrPtr(Target));
166 static void TestEscEncodeStdin(void)
168 int fdin = 0;// STDIN
173 Source = NewStrBuf();
177 StrBufTCP_read_line(Source, &fdin, 0, &Err);
178 Target = NewStrBuf();
180 StrEscAppend(Target, Source, NULL, 0, 0);
182 TestRevalidateStrBuf(Target);
183 printf("%s\n", ChrPtr(Target));
190 static void TestECMAEscEncodeStdin(void)
192 int fdin = 0;// STDIN
197 Source = NewStrBuf();
202 StrBufTCP_read_line(Source, &fdin, 0, &Err);
203 Target = NewStrBuf();
205 StrECMAEscAppend(Target, Source, NULL);
207 TestRevalidateStrBuf(Target);
208 printf("\"%s\",\n", ChrPtr(Target));
215 static void TestHtmlEcmaEscEncodeStdin(void)
217 int fdin = 0;// STDIN
222 Source = NewStrBuf();
227 StrBufTCP_read_line(Source, &fdin, 0, &Err);
228 Target = NewStrBuf();
230 StrHtmlEcmaEscAppend(Target, Source, NULL, 0, 2);
232 TestRevalidateStrBuf(Target);
233 printf("\"%s\",\n", ChrPtr(Target));
240 static void TestUrlescEncodeStdin(void)
242 int fdin = 0;// STDIN
247 Source = NewStrBuf();
251 StrBufTCP_read_line(Source, &fdin, 0, &Err);
252 Target = NewStrBuf();
254 StrBufUrlescAppend(Target, Source, NULL);
256 TestRevalidateStrBuf(Target);
257 printf("%s\n", ChrPtr(Target));
264 static void TestEncodeEmail(void)
268 StrBuf *UserName = NewStrBuf();
269 StrBuf *EmailAddress = NewStrBuf();
270 StrBuf *EncBuf = NewStrBuf();
272 Source = NewStrBuf();
274 // Source = NewStrBufPlain(HKEY("Art Cancro <ajc@uncensored.citadel.org>, Art Cancro <ajc@uncensored.citadel.org>"));
276 Source = NewStrBufPlain(HKEY("\"Alexandra Weiz, Restless GmbH\" <alexandra.weiz@boblbee.de>, \"NetIN\" <editor@netin.co.il>, \" יריב ברקאי, מולטימדי\" <info@immembed.com>"));
277 Target = StrBufSanitizeEmailRecipientVector(
284 TestRevalidateStrBuf(Target);
285 printf("the source:>%s<\n", ChrPtr(Source));
286 printf("the target:>%s<\n", ChrPtr(Target));
288 FreeStrBuf(&UserName);
289 FreeStrBuf(&EmailAddress);
295 static void TestEncodeEmailSTDIN(void)
297 int fdin = 0;// STDIN
301 StrBuf *UserName = NewStrBuf();
302 StrBuf *EmailAddress = NewStrBuf();
303 StrBuf *EncBuf = NewStrBuf();
305 Source = NewStrBuf();
309 StrBufTCP_read_line(Source, &fdin, 0, &Err);
310 printf("the source:>%s<\n", ChrPtr(Source));
311 Target = StrBufSanitizeEmailRecipientVector(
318 TestRevalidateStrBuf(Target);
319 printf("the target:>%s<\n", ChrPtr(Target));
322 FreeStrBuf(&UserName);
323 FreeStrBuf(&EmailAddress);
330 static void TestHTML2ASCII_line(void)
332 int fdin = 0;// STDIN
337 Source = NewStrBuf();
341 StrBufTCP_read_line(Source, &fdin, 0, &Err);
342 printf("the source:>%s<\n", ChrPtr(Source));
343 Target = html_to_ascii(ChrPtr(Source), StrLength(Source), 80, 0);
345 printf("the target:>%s<\n", Target);
354 static void AddStrBufSimlpeTests(void)
356 CU_pSuite pGroup = NULL;
357 CU_pTest pTest = NULL;
359 pGroup = CU_add_suite("TestStringBufConversions", NULL, NULL);
362 pTest = CU_add_test(pGroup, "TestParseEmailSTDIN", TestEncodeEmail);
365 pTest = CU_add_test(pGroup, "TestParseEmailSTDIN", TestEncodeEmailSTDIN);
367 else if (parse_html) {
368 pTest = CU_add_test(pGroup, "TestParseHTMLSTDIN", TestHTML2ASCII_line);
372 pTest = CU_add_test(pGroup, "testRFC822Decode", TestRFC822Decode);
373 pTest = CU_add_test(pGroup, "testRFC822Decode1", TestRFC822Decode);
374 pTest = CU_add_test(pGroup, "testRFC822Decode2", TestRFC822Decode);
375 pTest = CU_add_test(pGroup, "testRFC822Decode3", TestRFC822Decode);
380 pTest = CU_add_test(pGroup, "testRFC822DecodeSTDIN", TestRFC822DecodeStdin);
381 else switch(OutputEscapeAs)
384 pTest = CU_add_test(pGroup, "TestHTMLEscEncodeStdin", TestHTMLEscEncodeStdin);
387 pTest = CU_add_test(pGroup, "TestEscEncodeStdin", TestEscEncodeStdin);
390 pTest = CU_add_test(pGroup, "TestECMAEscEncodeStdin", TestECMAEscEncodeStdin);
393 pTest = CU_add_test(pGroup, "TestHtmlEcmaEscEncodeStdin", TestHtmlEcmaEscEncodeStdin);
396 pTest = CU_add_test(pGroup, "TestUrlescEncodeStdin", TestUrlescEncodeStdin);
399 printf("%c not supported!\n", OutputEscapeAs);
408 int main(int argc, char* argv[])
412 while ((a = getopt(argc, argv, "@iho:")) != EOF)
418 OutputEscapeAs = *optarg;
434 setvbuf(stdout, NULL, _IONBF, 0);
437 CU_BOOL Run = CU_FALSE ;
439 CU_set_output_filename("TestAutomated");
440 if (CU_initialize_registry()) {
441 printf("\nInitialize of test Registry failed.");
445 AddStrBufSimlpeTests();
447 if (CU_TRUE == Run) {
448 //CU_console_run_tests();
449 printf("\nTests completed with return value %d.\n", CU_basic_run_tests());
451 ///CU_automated_run_tests();
454 CU_cleanup_registry();