2 * CUnit - A Unit testing framework library for C.
3 * Copyright (C) 2001 Anil Kumar
5 * This library is open source software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library 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 GNU
13 * Library General Public License for more details.
22 #include "stringbuf_test.h"
23 #include "../lib/libcitadel.h"
30 int OutputEscapeAs = 0;
32 static void TestRevalidateStrBuf(StrBuf *Buf)
34 CU_ASSERT(strlen(ChrPtr(Buf)) == StrLength(Buf));
40 Some samples from the original...
41 CU_ASSERT_EQUAL(10, 10);
42 CU_ASSERT_EQUAL(0, -0);
43 CU_ASSERT_EQUAL(-12, -12);
44 CU_ASSERT_NOT_EQUAL(10, 11);
45 CU_ASSERT_NOT_EQUAL(0, -1);
46 CU_ASSERT_NOT_EQUAL(-12, -11);
47 CU_ASSERT_PTR_EQUAL((void*)0x100, (void*)0x100);
48 CU_ASSERT_PTR_NOT_EQUAL((void*)0x100, (void*)0x101);
49 CU_ASSERT_PTR_NULL(NULL);
50 CU_ASSERT_PTR_NULL(0x0);
51 CU_ASSERT_PTR_NOT_NULL((void*)0x23);
52 CU_ASSERT_STRING_EQUAL(str1, str2);
53 CU_ASSERT_STRING_NOT_EQUAL(str1, str2);
54 CU_ASSERT_NSTRING_EQUAL(str1, str2, strlen(str1));
55 CU_ASSERT_NSTRING_EQUAL(str1, str1, strlen(str1));
56 CU_ASSERT_NSTRING_EQUAL(str1, str1, strlen(str1) + 1);
57 CU_ASSERT_NSTRING_NOT_EQUAL(str1, str2, 3);
58 CU_ASSERT_NSTRING_NOT_EQUAL(str1, str3, strlen(str1) + 1);
59 CU_ASSERT_DOUBLE_EQUAL(10, 10.0001, 0.0001);
60 CU_ASSERT_DOUBLE_EQUAL(10, 10.0001, -0.0001);
61 CU_ASSERT_DOUBLE_EQUAL(-10, -10.0001, 0.0001);
62 CU_ASSERT_DOUBLE_EQUAL(-10, -10.0001, -0.0001);
63 CU_ASSERT_DOUBLE_NOT_EQUAL(10, 10.001, 0.0001);
64 CU_ASSERT_DOUBLE_NOT_EQUAL(10, 10.001, -0.0001);
65 CU_ASSERT_DOUBLE_NOT_EQUAL(-10, -10.001, 0.0001);
66 CU_ASSERT_DOUBLE_NOT_EQUAL(-10, -10.001, -0.0001);
69 static void TestRFC822Decode(void)
73 StrBuf *DefaultCharset;
76 DefaultCharset = NewStrBufPlain(HKEY("iso-8859-1"));
77 FoundCharset = NewStrBuf();
78 Source = NewStrBufPlain(HKEY("=?koi8-r?B?78bP0s3Mxc7JxSDXz9rE1dvO2c3JINvB0sHNySDP?="));
81 StrBuf_RFC822_to_Utf8(Target, Source, DefaultCharset, FoundCharset);
84 TestRevalidateStrBuf(Target);
85 printf("the ugly multi:>%s<\n", ChrPtr(Target));
88 FreeStrBuf(&FoundCharset);
89 FreeStrBuf(&DefaultCharset);
92 DefaultCharset = NewStrBufPlain(HKEY("iso-8859-1"));
93 FoundCharset = NewStrBuf();
94 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"));
95 Target = NewStrBufPlain(NULL, 256);
97 StrBuf_RFC822_to_Utf8(Target, Source, DefaultCharset, FoundCharset);
98 TestRevalidateStrBuf(Target);
99 printf("the ugly multi:>%s<\n", ChrPtr(Target));
102 FreeStrBuf(&FoundCharset);
103 FreeStrBuf(&DefaultCharset);
108 static void TestRFC822DecodeStdin(void)
110 int fdin = 0;// STDIN
114 StrBuf *DefaultCharset;
115 StrBuf *FoundCharset;
117 DefaultCharset = NewStrBufPlain(HKEY("iso-8859-1"));
118 FoundCharset = NewStrBuf();
119 Source = NewStrBuf();
123 StrBufTCP_read_line(Source, &fdin, 0, &Err);
124 Target = NewStrBuf();
126 StrBuf_RFC822_to_Utf8(Target, Source, DefaultCharset, FoundCharset);
128 TestRevalidateStrBuf(Target);
129 printf("the ugly multi:>%s<\n", ChrPtr(Target));
133 FreeStrBuf(&FoundCharset);
134 FreeStrBuf(&DefaultCharset);
138 static void TestHTMLEscEncodeStdin(void)
140 int fdin = 0;// STDIN
145 Source = NewStrBuf();
149 StrBufTCP_read_line(Source, &fdin, 0, &Err);
150 Target = NewStrBuf();
152 StrEscAppend(Target, Source, NULL, 0, 2);
154 TestRevalidateStrBuf(Target);
155 printf("%s\n", ChrPtr(Target));
161 static void TestEscEncodeStdin(void)
163 int fdin = 0;// STDIN
168 Source = NewStrBuf();
172 StrBufTCP_read_line(Source, &fdin, 0, &Err);
173 Target = NewStrBuf();
175 StrEscAppend(Target, Source, NULL, 0, 0);
177 TestRevalidateStrBuf(Target);
178 printf("%s\n", ChrPtr(Target));
185 static void TestECMAEscEncodeStdin(void)
187 int fdin = 0;// STDIN
192 Source = NewStrBuf();
197 StrBufTCP_read_line(Source, &fdin, 0, &Err);
198 Target = NewStrBuf();
200 StrECMAEscAppend(Target, Source, NULL);
202 TestRevalidateStrBuf(Target);
203 printf("\"%s\",\n", ChrPtr(Target));
210 static void TestHtmlEcmaEscEncodeStdin(void)
212 int fdin = 0;// STDIN
217 Source = NewStrBuf();
222 StrBufTCP_read_line(Source, &fdin, 0, &Err);
223 Target = NewStrBuf();
225 StrHtmlEcmaEscAppend(Target, Source, NULL, 0, 2);
227 TestRevalidateStrBuf(Target);
228 printf("\"%s\",\n", ChrPtr(Target));
235 static void TestUrlescEncodeStdin(void)
237 int fdin = 0;// STDIN
242 Source = NewStrBuf();
246 StrBufTCP_read_line(Source, &fdin, 0, &Err);
247 Target = NewStrBuf();
249 StrBufUrlescAppend(Target, Source, NULL);
251 TestRevalidateStrBuf(Target);
252 printf("%s\n", ChrPtr(Target));
259 static void TestEncodeEmail(void)
263 StrBuf *UserName = NewStrBuf();
264 StrBuf *EmailAddress = NewStrBuf();
265 StrBuf *EncBuf = NewStrBuf();
267 Source = NewStrBuf();
269 // Source = NewStrBufPlain(HKEY("Art Cancro <ajc@uncensored.citadel.org>, Art Cancro <ajc@uncensored.citadel.org>"));
271 Source = NewStrBufPlain(HKEY("\"Alexandra Weiz, Restless GmbH\" <alexandra.weiz@boblbee.de>, \"NetIN\" <editor@netin.co.il>, \" יריב ברקאי, מולטימדי\" <info@immembed.com>"));
272 Target = StrBufSanitizeEmailRecipientVector(
279 TestRevalidateStrBuf(Target);
280 printf("the source:>%s<\n", ChrPtr(Source));
281 printf("the target:>%s<\n", ChrPtr(Target));
283 FreeStrBuf(&UserName);
284 FreeStrBuf(&EmailAddress);
290 static void TestEncodeEmailSTDIN(void)
292 int fdin = 0;// STDIN
296 StrBuf *UserName = NewStrBuf();
297 StrBuf *EmailAddress = NewStrBuf();
298 StrBuf *EncBuf = NewStrBuf();
300 Source = NewStrBuf();
304 StrBufTCP_read_line(Source, &fdin, 0, &Err);
305 printf("the source:>%s<\n", ChrPtr(Source));
306 Target = StrBufSanitizeEmailRecipientVector(
313 TestRevalidateStrBuf(Target);
314 printf("the target:>%s<\n", ChrPtr(Target));
317 FreeStrBuf(&UserName);
318 FreeStrBuf(&EmailAddress);
325 static void TestHTML2ASCII_line(void)
327 int fdin = 0;// STDIN
332 Source = NewStrBuf();
336 StrBufTCP_read_line(Source, &fdin, 0, &Err);
337 printf("the source:>%s<\n", ChrPtr(Source));
338 Target = html_to_ascii(ChrPtr(Source), StrLength(Source), 80, 0);
340 printf("the target:>%s<\n", Target);
349 static void AddStrBufSimlpeTests(void)
351 CU_pSuite pGroup = NULL;
352 CU_pTest pTest = NULL;
354 pGroup = CU_add_suite("TestStringBufConversions", NULL, NULL);
357 pTest = CU_add_test(pGroup, "TestParseEmailSTDIN", TestEncodeEmail);
360 pTest = CU_add_test(pGroup, "TestParseEmailSTDIN", TestEncodeEmailSTDIN);
362 else if (parse_html) {
363 pTest = CU_add_test(pGroup, "TestParseHTMLSTDIN", TestHTML2ASCII_line);
367 pTest = CU_add_test(pGroup, "testRFC822Decode", TestRFC822Decode);
368 pTest = CU_add_test(pGroup, "testRFC822Decode1", TestRFC822Decode);
369 pTest = CU_add_test(pGroup, "testRFC822Decode2", TestRFC822Decode);
370 pTest = CU_add_test(pGroup, "testRFC822Decode3", TestRFC822Decode);
375 pTest = CU_add_test(pGroup, "testRFC822DecodeSTDIN", TestRFC822DecodeStdin);
376 else switch(OutputEscapeAs)
379 pTest = CU_add_test(pGroup, "TestHTMLEscEncodeStdin", TestHTMLEscEncodeStdin);
382 pTest = CU_add_test(pGroup, "TestEscEncodeStdin", TestEscEncodeStdin);
385 pTest = CU_add_test(pGroup, "TestECMAEscEncodeStdin", TestECMAEscEncodeStdin);
388 pTest = CU_add_test(pGroup, "TestHtmlEcmaEscEncodeStdin", TestHtmlEcmaEscEncodeStdin);
391 pTest = CU_add_test(pGroup, "TestUrlescEncodeStdin", TestUrlescEncodeStdin);
394 printf("%c not supported!\n", OutputEscapeAs);
403 int main(int argc, char* argv[])
407 while ((a = getopt(argc, argv, "@iho:")) != EOF)
413 OutputEscapeAs = *optarg;
429 setvbuf(stdout, NULL, _IONBF, 0);
432 CU_BOOL Run = CU_FALSE ;
434 CU_set_output_filename("TestAutomated");
435 if (CU_initialize_registry()) {
436 printf("\nInitialize of test Registry failed.");
440 AddStrBufSimlpeTests();
442 if (CU_TRUE == Run) {
443 //CU_console_run_tests();
444 printf("\nTests completed with return value %d.\n", CU_basic_run_tests());
446 ///CU_automated_run_tests();
449 CU_cleanup_registry();