bump product version to 5.0.4.1
[LibreOffice.git] / sal / qa / rtl / oustring / rtl_ustr.cxx
blob4fc33eab421824c8b058b1ae216a5eb5e12350c2
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <cppunit/TestFixture.h>
21 #include <cppunit/extensions/HelperMacros.h>
22 #include <cppunit/plugin/TestPlugIn.h>
24 /** print a UNI_CODE file name.
27 inline void printOUString( ::rtl::OUString const & _suStr )
29 rtl::OString aString;
31 printf( "OUString: " );
32 aString = ::rtl::OUStringToOString( _suStr, RTL_TEXTENCODING_ASCII_US );
33 printf( "%s\n", aString.getStr( ) );
37 namespace rtl_ustr
40 class compare : public CppUnit::TestFixture
42 public:
44 void compare_000()
46 rtl_ustr_compare( NULL, NULL);
47 // should not GPF
50 void compare_000_1()
52 rtl::OUString aStr1("Line must be equal.");
53 rtl_ustr_compare( aStr1.getStr(), NULL);
54 // should not GPF
56 void compare_001()
58 rtl::OUString aStr1;
59 rtl::OUString aStr2;
61 sal_Int32 nValue = rtl_ustr_compare( aStr1.getStr(), aStr2.getStr());
62 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
65 void compare_002()
67 rtl::OUString aStr1("Line must be equal.");
68 rtl::OUString aStr2("Line must be equal.");
70 sal_Int32 nValue = rtl_ustr_compare( aStr1.getStr(), aStr2.getStr());
71 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
74 void compare_003()
76 rtl::OUString aStr1("Line must differ.");
77 rtl::OUString aStr2("Line foo bar, ok, differ.");
79 sal_Int32 nValue = rtl_ustr_compare( aStr1.getStr(), aStr2.getStr());
80 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
83 // Change the following lines only, if you add, remove or rename
84 // member functions of the current class,
85 // because these macros are need by auto register mechanism.
87 CPPUNIT_TEST_SUITE(compare);
88 CPPUNIT_TEST(compare_000);
89 CPPUNIT_TEST(compare_000_1);
90 CPPUNIT_TEST(compare_001);
91 CPPUNIT_TEST(compare_002);
92 CPPUNIT_TEST(compare_003);
93 CPPUNIT_TEST_SUITE_END();
94 }; // class compare
96 class compareIgnoreAsciiCase : public CppUnit::TestFixture
98 public:
100 void compare_000()
102 rtl_ustr_compareIgnoreAsciiCase( NULL, NULL);
105 void compare_000_1()
107 rtl::OUString aStr1("Line must be equal.");
108 rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), NULL);
110 void compare_001()
112 rtl::OUString aStr1;
113 rtl::OUString aStr2;
115 sal_Int32 nValue = rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
116 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
119 void compare_002()
121 rtl::OUString aStr1("Line must be equal.");
122 rtl::OUString aStr2("Line must be equal.");
124 sal_Int32 nValue = rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
125 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
128 void compare_002_1()
130 rtl::OUString aStr1("Line must be equal.");
131 rtl::OUString aStr2("LINE MUST BE EQUAL.");
133 sal_Int32 nValue = rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
134 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
137 void compare_003()
139 rtl::OUString aStr1("Line must differ.");
140 rtl::OUString aStr2("Line foo bar, ok, differ.");
142 sal_Int32 nValue = rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
143 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
146 // Change the following lines only, if you add, remove or rename
147 // member functions of the current class,
148 // because these macros are need by auto register mechanism.
150 CPPUNIT_TEST_SUITE(compareIgnoreAsciiCase);
151 CPPUNIT_TEST(compare_000);
152 CPPUNIT_TEST(compare_000_1);
153 CPPUNIT_TEST(compare_001);
154 CPPUNIT_TEST(compare_002);
155 CPPUNIT_TEST(compare_002_1);
156 CPPUNIT_TEST(compare_003);
157 CPPUNIT_TEST_SUITE_END();
158 }; // class compareIgnoreAsciiCase
160 class shortenedCompareIgnoreAsciiCase_WithLength : public CppUnit::TestFixture
162 public:
164 void compare_000()
166 rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( NULL, 0, NULL, 0, 0);
169 void compare_000_1()
171 rtl::OUString aStr1("Line must be equal.");
172 rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(), NULL, 0, 1);
174 void compare_001()
176 rtl::OUString aStr1;
177 rtl::OUString aStr2;
179 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(), aStr2.getStr(), aStr2.getLength(), aStr1.getLength());
180 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
183 void compare_002()
185 rtl::OUString aStr1("Line must be equal.");
186 rtl::OUString aStr2("Line must be equal.");
188 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
189 aStr2.getStr(), aStr2.getLength(),
190 aStr1.getLength());
191 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
194 void compare_002_1()
196 rtl::OUString aStr1("Line must be equal.");
197 rtl::OUString aStr2("LINE MUST BE EQUAL.");
199 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
200 aStr2.getStr(), aStr2.getLength(),
201 aStr1.getLength());
202 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
205 void compare_003()
207 rtl::OUString aStr1("Line must differ.");
208 rtl::OUString aStr2("Line foo bar, ok, differ.");
210 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
211 aStr2.getStr(), aStr2.getLength(),
213 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal first 5 characters.", nValue == 0);
216 void compare_004()
218 rtl::OUString aStr1("Line must differ.");
219 rtl::OUString aStr2("Line foo bar, ok, differ.");
221 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
222 aStr2.getStr(), aStr2.getLength(),
223 aStr1.getLength());
224 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
227 // Change the following lines only, if you add, remove or rename
228 // member functions of the current class,
229 // because these macros are need by auto register mechanism.
231 CPPUNIT_TEST_SUITE(shortenedCompareIgnoreAsciiCase_WithLength);
232 CPPUNIT_TEST(compare_000);
233 CPPUNIT_TEST(compare_000_1);
234 CPPUNIT_TEST(compare_001);
235 CPPUNIT_TEST(compare_002);
236 CPPUNIT_TEST(compare_002_1);
237 CPPUNIT_TEST(compare_003);
238 CPPUNIT_TEST(compare_004);
239 CPPUNIT_TEST_SUITE_END();
240 }; // class compare
244 // class hashCode : public CppUnit::TestFixture
245 // {
246 // public:
248 // void hashCode_000()
249 // {
250 // sal_Int32 nHashCode = rtl_ustr_hashCode( NULL );
251 // volatile int dummy = 0;
252 // }
254 // void hashCode_001()
255 // {
256 // rtl::OString aStr1 = "Line for a hashCode.";
257 // sal_Int32 nHashCode = rtl_ustr_hashCode( aStr1.getStr() );
258 // printf("hashcode: %d\n", nHashCode);
259 // // CPPUNIT_ASSERT_MESSAGE("failed.", nValue == 0);
260 // }
262 // void hashCode_002()
263 // {
264 // rtl::OString aStr1 = "Line for a hashCode.";
265 // sal_Int32 nHashCode1 = rtl_ustr_hashCode( aStr1.getStr() );
267 // rtl::OString aStr2 = "Line for a hashCode.";
268 // sal_Int32 nHashCode2 = rtl_ustr_hashCode( aStr2.getStr() );
270 // CPPUNIT_ASSERT_MESSAGE("hashcodes must be equal.", nHashCode1 == nHashCode2 );
271 // }
273 // void hashCode_003()
274 // {
275 // rtl::OString aStr1 = "Line for a hashCode.";
276 // sal_Int32 nHashCode1 = rtl_ustr_hashCode( aStr1.getStr() );
278 // rtl::OString aStr2 = "Line for an other hashcode.";
279 // sal_Int32 nHashCode2 = rtl_ustr_hashCode( aStr2.getStr() );
281 // CPPUNIT_ASSERT_MESSAGE("hashcodes must differ.", nHashCode1 != nHashCode2 );
282 // }
284 // // Change the following lines only, if you add, remove or rename
285 // // member functions of the current class,
286 // // because these macros are need by auto register mechanism.
288 // CPPUNIT_TEST_SUITE(hashCode);
289 // CPPUNIT_TEST(hashCode_000);
290 // CPPUNIT_TEST(hashCode_001);
291 // CPPUNIT_TEST(hashCode_002);
292 // CPPUNIT_TEST(hashCode_003);
293 // CPPUNIT_TEST_SUITE_END();
294 // }; // class compare
296 class indexOfChar : public CppUnit::TestFixture
298 public:
300 void indexOfChar_000()
302 rtl_ustr_indexOfChar( NULL, 0 );
305 void indexOfChar_001()
307 rtl::OUString aStr1("Line for a indexOfChar.");
309 sal_Int32 nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'L' );
310 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 0);
312 /* sal_Int32 */ nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'i' );
313 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 1);
315 /* sal_Int32 */ nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'n' );
316 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 2);
318 /* sal_Int32 */ nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'e' );
319 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 3);
322 void indexOfChar_002()
324 rtl::OUString aStr1("Line for a indexOfChar.");
325 sal_Int32 nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'y' );
327 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
330 // Change the following lines only, if you add, remove or rename
331 // member functions of the current class,
332 // because these macros are need by auto register mechanism.
334 CPPUNIT_TEST_SUITE(indexOfChar);
335 CPPUNIT_TEST(indexOfChar_000);
336 CPPUNIT_TEST(indexOfChar_001);
337 CPPUNIT_TEST(indexOfChar_002);
338 CPPUNIT_TEST_SUITE_END();
339 }; // class indexOfChar
341 class lastIndexOfChar : public CppUnit::TestFixture
343 public:
345 void lastIndexOfChar_000()
347 rtl_ustr_lastIndexOfChar( NULL, 0 );
350 void lastIndexOfChar_001()
352 rtl::OUString aStr1("Line for a lastIndexOfChar.");
354 sal_Int32 nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'C' );
355 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 22);
357 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'h' );
358 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 23);
360 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'a' );
361 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 24);
363 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'r' );
364 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 25);
367 void lastIndexOfChar_002()
369 rtl::OUString aStr1("Line for a lastIndexOfChar.");
370 sal_Int32 nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'y' );
372 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
375 // Change the following lines only, if you add, remove or rename
376 // member functions of the current class,
377 // because these macros are need by auto register mechanism.
379 CPPUNIT_TEST_SUITE(lastIndexOfChar);
380 CPPUNIT_TEST(lastIndexOfChar_000);
381 CPPUNIT_TEST(lastIndexOfChar_001);
382 CPPUNIT_TEST(lastIndexOfChar_002);
383 CPPUNIT_TEST_SUITE_END();
384 }; // class lastIndexOfChar
386 class indexOfStr : public CppUnit::TestFixture
388 public:
390 void indexOfStr_000()
392 rtl_ustr_indexOfStr( NULL, 0 );
395 void indexOfStr_000_1()
397 rtl::OUString aStr1("Line for a indexOfStr.");
398 rtl_ustr_indexOfStr( aStr1.getStr(), 0 );
401 void indexOfStr_001()
403 rtl::OUString aStr1("Line for a indexOfStr.");
405 rtl::OUString suSearch("Line");
406 sal_Int32 nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
407 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 0);
409 /* rtl::OUString */ suSearch("for");
410 /* sal_Int32 */ nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
411 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 5);
413 /* rtl::OUString */ suSearch("a");
414 /* sal_Int32 */ nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
415 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 9);
417 /* rtl::OUString */ suSearch("a index");
418 /* sal_Int32 */ nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
419 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex ==9);
422 void indexOfStr_002()
424 rtl::OUString aStr1("Line for a indexOfStr.");
425 rtl::OUString suSearch("not exist");
426 sal_Int32 nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
428 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
431 // Change the following lines only, if you add, remove or rename
432 // member functions of the current class,
433 // because these macros are need by auto register mechanism.
435 CPPUNIT_TEST_SUITE(indexOfStr);
436 CPPUNIT_TEST(indexOfStr_000);
437 CPPUNIT_TEST(indexOfStr_001);
438 CPPUNIT_TEST(indexOfStr_002);
439 CPPUNIT_TEST_SUITE_END();
440 }; // class compare
442 class lastIndexOfStr : public CppUnit::TestFixture
444 public:
446 void lastIndexOfStr_000()
448 rtl_ustr_lastIndexOfStr( NULL, NULL );
451 void lastIndexOfStr_000_1()
453 rtl::OUString aStr1("Line for a lastIndexOfStr.");
454 rtl_ustr_lastIndexOfStr( aStr1.getStr(), NULL );
457 void lastIndexOfStr_001()
459 rtl::OUString aStr1("Line for a lastIndexOfStr.");
460 rtl::OUString aSearchStr("Index");
462 sal_Int32 nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
463 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 15);
465 /* rtl::OString */ aSearchStr = rtl::OUString("Line");
466 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
467 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 0);
469 /* rtl::OString */ aSearchStr = rtl::OUString("");
470 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
471 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1);
474 void lastIndexOfStr_002()
476 rtl::OUString aStr1("Line for a lastIndexOfStr.");
477 rtl::OUString aSearchStr("foo");
478 sal_Int32 nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
480 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
483 void lastIndexOfStr_003()
485 rtl::OUString aStr1("Line for a lastIndexOfStr.");
486 rtl::OUString aSearchStr("O");
487 sal_Int32 nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
489 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 20 );
492 // Change the following lines only, if you add, remove or rename
493 // member functions of the current class,
494 // because these macros are need by auto register mechanism.
496 CPPUNIT_TEST_SUITE(lastIndexOfStr);
497 CPPUNIT_TEST(lastIndexOfStr_000);
498 CPPUNIT_TEST(lastIndexOfStr_001);
499 CPPUNIT_TEST(lastIndexOfStr_002);
500 CPPUNIT_TEST(lastIndexOfStr_003);
501 CPPUNIT_TEST_SUITE_END();
502 }; // class lastIndexOfStr
504 class replaceChar : public CppUnit::TestFixture
506 public:
508 void replaceChar_000()
510 rtl_ustr_replaceChar( NULL, 0, 0 );
513 void replaceChar_001()
515 rtl::OUString aStr1("replace char.");
516 rtl::OUString aShouldStr1("ruplacu char.");
518 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
519 sal_Unicode* pStr = (sal_Unicode*) malloc( nLength + sizeof(sal_Unicode)); // length + 1 (null terminator)
520 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
521 memcpy(pStr, aStr1.getStr(), nLength);
522 pStr[aStr1.getLength()] = 0;
524 rtl_ustr_replaceChar( pStr, 'e', 'u' );
525 rtl::OUString suStr(pStr, aStr1.getLength());
527 CPPUNIT_ASSERT_MESSAGE("replace failed", aShouldStr1.equals(suStr) == sal_True);
528 free(pStr);
531 // Change the following lines only, if you add, remove or rename
532 // member functions of the current class,
533 // because these macros are need by auto register mechanism.
535 CPPUNIT_TEST_SUITE(replaceChar);
536 CPPUNIT_TEST(replaceChar_000);
537 CPPUNIT_TEST(replaceChar_001);
538 CPPUNIT_TEST_SUITE_END();
539 }; // class replaceChar
541 class replaceChar_WithLength : public CppUnit::TestFixture
543 public:
545 void replaceChar_WithLength_000()
547 rtl_ustr_replaceChar_WithLength( NULL, 0, 0, 0 );
550 void replaceChar_WithLength_000_1()
552 rtl_ustr_replaceChar_WithLength( NULL, 1, 0, 0 );
554 void replaceChar_WithLength_001()
556 rtl::OUString aStr1("replace char.");
557 rtl::OUString aShouldStr1("ruplace char.");
559 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
560 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength);
561 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
562 memcpy(pStr, aStr1.getStr(), nLength);
564 rtl_ustr_replaceChar_WithLength( pStr, 6, 'e', 'u' );
565 rtl::OUString suStr(pStr, aStr1.getLength());
567 CPPUNIT_ASSERT_MESSAGE("replace failed", aShouldStr1.equals(suStr) == sal_True);
568 free(pStr);
571 void replaceChar_WithLength_002()
573 rtl::OUString aStr1 ("eeeeeeeeeeeee");
574 rtl::OUString aShouldStr1("uuuuuueeeeeee");
576 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
577 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength); // no null terminator is need
578 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
579 memcpy(pStr, aStr1.getStr(), nLength);
581 rtl_ustr_replaceChar_WithLength( pStr, 6, 'e', 'u' );
582 rtl::OUString suStr(pStr, aStr1.getLength());
584 CPPUNIT_ASSERT_MESSAGE("replace failed", aShouldStr1.equals(suStr) == sal_True);
585 free(pStr);
588 // Change the following lines only, if you add, remove or rename
589 // member functions of the current class,
590 // because these macros are need by auto register mechanism.
592 CPPUNIT_TEST_SUITE(replaceChar_WithLength);
593 CPPUNIT_TEST(replaceChar_WithLength_000);
594 CPPUNIT_TEST(replaceChar_WithLength_000_1);
595 CPPUNIT_TEST(replaceChar_WithLength_001);
596 CPPUNIT_TEST(replaceChar_WithLength_002);
597 CPPUNIT_TEST_SUITE_END();
598 }; // class replaceChar
600 class toAsciiLowerCase : public CppUnit::TestFixture
602 public:
604 void toAsciiLowerCase_000()
606 rtl_ustr_toAsciiLowerCase( NULL );
609 void toAsciiLowerCase_001()
611 rtl::OUString aStr1("CHANGE THIS TO ASCII LOWER CASE.");
612 rtl::OUString aShouldStr1("change this to ascii lower case.");
614 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
615 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength + sizeof(sal_Unicode) ); // we need to add '\0' so one more
616 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
617 memcpy(pStr, aStr1.getStr(), nLength);
618 pStr[aStr1.getLength()] = 0;
620 rtl_ustr_toAsciiLowerCase( pStr );
621 rtl::OUString suStr(pStr, aStr1.getLength());
623 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
624 free(pStr);
627 // Change the following lines only, if you add, remove or rename
628 // member functions of the current class,
629 // because these macros are need by auto register mechanism.
631 CPPUNIT_TEST_SUITE(toAsciiLowerCase);
632 CPPUNIT_TEST(toAsciiLowerCase_000);
633 CPPUNIT_TEST(toAsciiLowerCase_001);
634 CPPUNIT_TEST_SUITE_END();
635 }; // class replaceChar
637 class toAsciiLowerCase_WithLength : public CppUnit::TestFixture
639 public:
641 void toAsciiLowerCase_WithLength_000()
643 rtl_ustr_toAsciiLowerCase_WithLength( NULL, 0 );
646 void toAsciiLowerCase_WithLength_001()
648 rtl::OUString aStr1("CHANGE THIS TO ASCII LOWER CASE.");
649 rtl::OUString aShouldStr1("change thiS TO ASCII LOWER CASE.");
651 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
652 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength);
653 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
654 memcpy(pStr, aStr1.getStr(), nLength);
656 rtl_ustr_toAsciiLowerCase_WithLength( pStr, 10 );
658 rtl::OUString suStr(pStr, aStr1.getLength());
659 sal_Bool bResult = aShouldStr1.equals(suStr);
661 printOUString(suStr);
662 printf("Result length: %d\n", suStr.getLength() );
663 printf("Result: %d\n", bResult);
665 CPPUNIT_ASSERT_MESSAGE("failed", bResult == sal_True);
666 free(pStr);
669 // Change the following lines only, if you add, remove or rename
670 // member functions of the current class,
671 // because these macros are need by auto register mechanism.
673 CPPUNIT_TEST_SUITE(toAsciiLowerCase_WithLength);
674 CPPUNIT_TEST(toAsciiLowerCase_WithLength_000);
675 CPPUNIT_TEST(toAsciiLowerCase_WithLength_001);
676 CPPUNIT_TEST_SUITE_END();
677 }; // class replaceChar
679 class toAsciiUpperCase : public CppUnit::TestFixture
681 public:
683 void toAsciiUpperCase_000()
685 rtl_ustr_toAsciiUpperCase( NULL );
688 void toAsciiUpperCase_001()
690 rtl::OUString aStr1("change this to ascii upper case.");
691 rtl::OUString aShouldStr1("CHANGE THIS TO ASCII UPPER CASE.");
693 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
694 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength + sizeof(sal_Unicode)); // length + null terminator
695 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
696 memcpy(pStr, aStr1.getStr(), nLength);
697 pStr[aStr1.getLength()] = 0;
699 rtl_ustr_toAsciiUpperCase( pStr );
700 rtl::OUString suStr(pStr, aStr1.getLength());
702 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
703 free(pStr);
706 // Change the following lines only, if you add, remove or rename
707 // member functions of the current class,
708 // because these macros are need by auto register mechanism.
710 CPPUNIT_TEST_SUITE(toAsciiUpperCase);
711 CPPUNIT_TEST(toAsciiUpperCase_000);
712 CPPUNIT_TEST(toAsciiUpperCase_001);
713 CPPUNIT_TEST_SUITE_END();
714 }; // class replaceChar
716 class toAsciiUpperCase_WithLength : public CppUnit::TestFixture
718 public:
720 void toAsciiUpperCase_WithLength_000()
722 rtl_ustr_toAsciiUpperCase_WithLength( NULL, 0 );
725 void toAsciiUpperCase_WithLength_001()
727 rtl::OUString aStr1("change this to ascii lower case.");
728 rtl::OUString aShouldStr1("CHANGE THIs to ascii lower case.");
730 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
731 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength);
732 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
734 memcpy(pStr, aStr1.getStr(), nLength);
735 rtl_ustr_toAsciiUpperCase_WithLength( pStr, 10 );
736 rtl::OUString suStr(pStr, aStr1.getLength());
738 // printf("Uppercase with length: '%s'\n", aStr1.getStr());
739 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
740 free(pStr);
743 // Change the following lines only, if you add, remove or rename
744 // member functions of the current class,
745 // because these macros are need by auto register mechanism.
747 CPPUNIT_TEST_SUITE(toAsciiUpperCase_WithLength);
748 CPPUNIT_TEST(toAsciiUpperCase_WithLength_000);
749 CPPUNIT_TEST(toAsciiUpperCase_WithLength_001);
750 CPPUNIT_TEST_SUITE_END();
751 }; // class replaceChar
753 class trim_WithLength : public CppUnit::TestFixture
755 public:
756 void trim_WithLength_000()
758 rtl_ustr_trim_WithLength(NULL, 0);
759 // should not GPF
762 void trim_WithLength_000_1()
764 rtl::OUString suStr(" trim this");
766 sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
767 sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
768 memcpy(pStr, suStr.getStr(), nLength);
770 rtl_ustr_trim_WithLength( pStr, 0 );
771 free(pStr);
774 void trim_WithLength_001()
776 rtl::OUString suStr(" trim this");
777 sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
778 sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
779 memcpy(pStr, suStr.getStr(), nLength);
781 rtl_ustr_trim_WithLength( pStr, 2 );
783 CPPUNIT_ASSERT_MESSAGE("string should be empty", rtl::OUString(pStr).getLength() == 0);
784 free(pStr);
787 void trim_WithLength_002()
789 rtl::OUString suStr("trim this");
791 sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
792 sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
793 memcpy(pStr, suStr.getStr(), nLength);
795 rtl_ustr_trim_WithLength( pStr, 5 );
797 CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", rtl::OUString(pStr).getLength() == 4);
798 free(pStr);
801 void trim_WithLength_003()
803 rtl::OUString suStr(" trim this");
805 sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
806 sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
807 memcpy(pStr, suStr.getStr(), nLength);
809 rtl_ustr_trim_WithLength( pStr, 11 );
811 CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", rtl::OUString(pStr).getLength() == 4);
812 free(pStr);
815 void trim_WithLength_004()
817 rtl::OUString suStr("\r\n\t \n\r trim \n this");
819 sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
820 sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
821 memcpy(pStr, suStr.getStr(), nLength);
823 rtl_ustr_trim_WithLength( pStr, 17 );
825 CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", rtl::OUString(pStr).getLength() == 4);
826 free(pStr);
829 void trim_WithLength_005()
831 rtl::OUString suStr("\r\n\t \n\r trim \t this \n\r\t\t ");
833 sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
834 sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
835 memcpy(pStr, suStr.getStr(), nLength);
837 rtl_ustr_trim_WithLength( pStr, suStr.getLength() );
839 CPPUNIT_ASSERT_MESSAGE("string should contain 'trim \\t this'", rtl::OUString(pStr).getLength() == 11);
840 free(pStr);
843 // Change the following lines only, if you add, remove or rename
844 // member functions of the current class,
845 // because these macros are need by auto register mechanism.
847 CPPUNIT_TEST_SUITE(trim_WithLength);
848 CPPUNIT_TEST(trim_WithLength_000);
849 CPPUNIT_TEST(trim_WithLength_000_1);
850 CPPUNIT_TEST(trim_WithLength_001);
851 CPPUNIT_TEST(trim_WithLength_002);
852 CPPUNIT_TEST(trim_WithLength_003);
853 CPPUNIT_TEST(trim_WithLength_004);
854 CPPUNIT_TEST(trim_WithLength_005);
855 CPPUNIT_TEST_SUITE_END();
858 class valueOfChar : public CppUnit::TestFixture
860 public:
861 void valueOfChar_000()
863 rtl_ustr_valueOfChar(NULL, 0);
864 // should not GPF
866 void valueOfChar_001()
868 sal_Unicode *pStr = (sal_Unicode*)malloc(RTL_USTR_MAX_VALUEOFCHAR);
869 if (pStr)
871 rtl_ustr_valueOfChar(pStr, 'A');
873 CPPUNIT_ASSERT_MESSAGE("string should contain 'A'", pStr[0] == L'A');
874 free(pStr);
878 // Change the following lines only, if you add, remove or rename
879 // member functions of the current class,
880 // because these macros are need by auto register mechanism.
882 CPPUNIT_TEST_SUITE(valueOfChar);
883 CPPUNIT_TEST(valueOfChar_000);
884 CPPUNIT_TEST(valueOfChar_001);
885 CPPUNIT_TEST_SUITE_END();
888 class ascii_compare_WithLength : public CppUnit::TestFixture
890 public:
891 void zero_length()
893 sal_Unicode pUnicode[] = {0xffff, 0xffff};
894 char const * pAscii = "reference";
896 sal_Int32 value = rtl_ustr_ascii_compare_WithLength(pUnicode, 0, pAscii);
897 CPPUNIT_ASSERT_MESSAGE("ref string is empty, compare failed, needs to be <0.", value < 0);
900 void equal_ascii_shorter()
902 rtl::OUString refStr("referenceString");
903 char const * pAscii = "reference";
905 sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
906 CPPUNIT_ASSERT_MESSAGE("ref string is bigger, compare failed, needs to be >0.", value > 0);
909 void equal_ascii_shorter_asciiLength()
911 rtl::OUString refStr("referenceString");
912 char const * pAscii = "reference";
914 sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, rtl_str_getLength(pAscii), pAscii);
915 CPPUNIT_ASSERT_MESSAGE("ref string is bigger despite ascii length, compare failed, needs to be == 0.", value == 0);
918 void equal_ref_shorter()
920 rtl::OUString refStr("reference");
921 char const * pAscii = "referenceString";
923 sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
924 CPPUNIT_ASSERT_MESSAGE("ascii string is bigger, but only compared to ref length, needs to be 0.", value < 0);
927 void equal()
929 rtl::OUString refStr("reference");
930 char const * pAscii = "reference";
932 sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
933 CPPUNIT_ASSERT_MESSAGE("strings are equal, compare failed, needs to be 0.", value == 0);
936 void unequal_reference_bigger()
938 rtl::OUString refStr("defghi");
939 char const * pAscii = "abc";
941 sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
942 CPPUNIT_ASSERT_MESSAGE("strings are unequal and ref is bigger, needs to be >0.", value > 0);
945 void unequal_ascii_bigger()
947 rtl::OUString refStr("abc");
948 char const * pAscii = "defghi";
950 sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
952 CPPUNIT_ASSERT_MESSAGE("strings are unequal and ascii is bigger, needs to be <0.", value < 0);
955 CPPUNIT_TEST_SUITE(ascii_compare_WithLength);
956 CPPUNIT_TEST(zero_length);
957 CPPUNIT_TEST(equal_ascii_shorter);
958 CPPUNIT_TEST(equal_ascii_shorter_asciiLength);
959 CPPUNIT_TEST(equal_ref_shorter);
960 CPPUNIT_TEST(equal);
961 CPPUNIT_TEST(unequal_reference_bigger);
962 CPPUNIT_TEST(unequal_ascii_bigger);
963 CPPUNIT_TEST_SUITE_END();
966 class ascii_shortenedCompareIgnoreAsciiCase_WithLength : public CppUnit::TestFixture
968 public:
970 void ascii_shortenedCompareIgnoreAsciiCase_WithLength_000()
972 rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( NULL, 0, NULL, 0);
973 // should not GPF
976 void ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_1()
978 rtl::OUString aStr1("Line must be equal.");
979 rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(), NULL, 0);
980 // should not GPF
982 void ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_2()
984 rtl::OUString aStr1("Line must be equal.");
985 rtl::OString sStr2 = "Line is shorter.";
986 rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), sStr2.getLength(), sStr2.getStr(), 0);
987 // should not GPF
989 void ascii_shortenedCompareIgnoreAsciiCase_WithLength_001()
991 rtl::OUString suStr1;
992 rtl::OString sStr2;
994 sal_Int32 nValue = rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( suStr1, 0, sStr2.getStr(), 0);
995 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
998 void ascii_shortenedCompareIgnoreAsciiCase_WithLength_002()
1000 rtl::OUString suStr1("Line must be equal.");
1001 rtl::OString sStr2 = "Line must be equal.";
1003 sal_Int32 nValue = rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( suStr1.getStr(), suStr1.getLength(), sStr2.getStr(), sStr2.getLength());
1004 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1007 void ascii_shortenedCompareIgnoreAsciiCase_WithLength_003()
1009 rtl::OUString suStr1("Line must differ.");
1010 rtl::OString sStr2 = "Line must be differ and longer.";
1012 sal_Int32 nValue = rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( suStr1.getStr(), suStr1.getLength(), sStr2.getStr(), sStr2.getLength());
1013 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1016 // Change the following lines only, if you add, remove or rename
1017 // member functions of the current class,
1018 // because these macros are need by auto register mechanism.
1020 CPPUNIT_TEST_SUITE(ascii_shortenedCompareIgnoreAsciiCase_WithLength);
1021 CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_000);
1022 CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_1);
1023 CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_2);
1024 CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_001);
1025 CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_002);
1026 CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_003);
1027 CPPUNIT_TEST_SUITE_END();
1028 }; // class ascii_shortenedCompareIgnoreAsciiCase_WithLength
1030 class ascii_compareIgnoreAsciiCase_WithLength : public CppUnit::TestFixture
1032 public:
1034 void ascii_compareIgnoreAsciiCase_WithLength_000()
1036 rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( NULL, 0, NULL);
1037 // should not GPF
1040 void ascii_compareIgnoreAsciiCase_WithLength_000_1()
1042 rtl::OUString aStr1("Line must be equal.");
1043 rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( aStr1.getStr(), 0, NULL);
1044 // should not GPF
1046 void ascii_compareIgnoreAsciiCase_WithLength_000_2()
1048 rtl::OUString aStr1("Line must be equal.");
1049 rtl::OString sStr2 = "Line is shorter.";
1050 rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( aStr1.getStr(), sStr2.getLength(), sStr2.getStr());
1051 // should not GPF
1053 void ascii_compareIgnoreAsciiCase_WithLength_001()
1055 rtl::OUString suStr1;
1056 rtl::OString sStr2;
1058 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( suStr1, 0, sStr2.getStr());
1059 CPPUNIT_ASSERT_MESSAGE("compareIgnoreAsciiCase_WithLength failed, strings are equal.", nValue == 0);
1062 void ascii_compareIgnoreAsciiCase_WithLength_002()
1064 rtl::OUString suStr1("Line must be equal.");
1065 rtl::OString sStr2 = "Line must be equal.";
1067 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( suStr1.getStr(), suStr1.getLength(), sStr2.getStr());
1068 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1071 void ascii_compareIgnoreAsciiCase_WithLength_003()
1073 rtl::OUString suStr1("Line must differ.");
1074 rtl::OString sStr2 = "Line must be differ and longer.";
1076 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( suStr1.getStr(), suStr1.getLength(), sStr2.getStr());
1077 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1080 // Change the following lines only, if you add, remove or rename
1081 // member functions of the current class,
1082 // because these macros are need by auto register mechanism.
1084 CPPUNIT_TEST_SUITE(ascii_compareIgnoreAsciiCase_WithLength);
1085 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_000);
1086 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_000_1);
1087 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_000_2);
1088 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_001);
1089 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_002);
1090 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_003);
1091 CPPUNIT_TEST_SUITE_END();
1092 }; // class ascii_compareIgnoreAsciiCase_WithLength
1094 class ascii_compare : public CppUnit::TestFixture
1096 public:
1098 void ascii_compare_000()
1100 rtl_ustr_ascii_compare( NULL, NULL);
1101 // should not GPF
1104 void ascii_compare_000_1()
1106 rtl::OUString aStr1("Line must be equal.");
1107 rtl_ustr_ascii_compare( aStr1.getStr(), NULL);
1108 // should not GPF
1110 void ascii_compare_001()
1112 rtl::OUString suStr1;
1113 rtl::OString sStr2;
1115 sal_Int32 nValue = rtl_ustr_ascii_compare( suStr1, sStr2.getStr());
1116 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1119 void ascii_compare_002()
1121 rtl::OUString suStr1("Line must be equal.");
1122 rtl::OString sStr2 = "Line must be equal.";
1124 sal_Int32 nValue = rtl_ustr_ascii_compare( suStr1.getStr(), sStr2.getStr());
1125 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1128 void ascii_compare_003()
1130 rtl::OUString suStr1("Line must differ.");
1131 rtl::OString sStr2 = "Line foo bar, ok, differ.";
1133 sal_Int32 nValue = rtl_ustr_ascii_compare( suStr1.getStr(), sStr2.getStr());
1134 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1137 // Change the following lines only, if you add, remove or rename
1138 // member functions of the current class,
1139 // because these macros are need by auto register mechanism.
1141 CPPUNIT_TEST_SUITE(ascii_compare);
1142 CPPUNIT_TEST(ascii_compare_000);
1143 CPPUNIT_TEST(ascii_compare_000_1);
1144 CPPUNIT_TEST(ascii_compare_001);
1145 CPPUNIT_TEST(ascii_compare_002);
1146 CPPUNIT_TEST(ascii_compare_003);
1147 CPPUNIT_TEST_SUITE_END();
1148 }; // class ascii_compare
1150 class ascii_compareIgnoreAsciiCase : public CppUnit::TestFixture
1152 public:
1154 void ascii_compareIgnoreAsciiCase_000()
1156 rtl_ustr_ascii_compareIgnoreAsciiCase( NULL, NULL);
1157 // should not GPF
1160 void ascii_compareIgnoreAsciiCase_000_1()
1162 rtl::OUString aStr1("Line must be equal.");
1163 rtl_ustr_ascii_compareIgnoreAsciiCase( aStr1.getStr(), NULL);
1164 // should not GPF
1166 void ascii_compareIgnoreAsciiCase_001()
1168 rtl::OUString suStr1;
1169 rtl::OString sStr2;
1171 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1, sStr2.getStr());
1172 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1175 void ascii_compareIgnoreAsciiCase_002()
1177 rtl::OUString suStr1("Line must be equal.");
1178 rtl::OString sStr2 = "Line must be equal.";
1180 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1181 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1184 void ascii_compareIgnoreAsciiCase_002_1()
1186 rtl::OUString suStr1("Line must be equal, when ignore case.");
1187 rtl::OString sStr2 = "LINE MUST BE EQUAL, WHEN IGNORE CASE.";
1189 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1190 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
1193 void ascii_compareIgnoreAsciiCase_003()
1195 rtl::OUString suStr1("Line must differ.");
1196 rtl::OString sStr2 = "Line foo bar, ok, differ.";
1198 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1199 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1202 //! LLA: some more tests with some high level strings
1204 // void ascii_compareIgnoreAsciiCase_001()
1205 // {
1206 // rtl::OUString suStr1("change this to ascii upper case.");
1207 // rtl::OUString aShouldStr1("CHANGE THIS TO ASCII UPPER CASE.");
1209 // sal_uInt32 nLength = suStr1.getLength() * sizeof(sal_Unicode);
1210 // sal_Unicode* pStr = (sal_Unicode*) malloc(nLength + sizeof(sal_Unicode)); // length + null terminator
1211 // CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
1212 // memset(pStr, 0, nLength + sizeof(sal_Unicode));
1213 // memcpy(pStr, suStr1.getStr(), nLength);
1215 // rtl_ustr_ascii_compareIgnoreAsciiCase( pStr );
1216 // rtl::OUString suStr(pStr, suStr1.getLength());
1218 // CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
1219 // free(pStr);
1220 // }
1222 // Change the following lines only, if you add, remove or rename
1223 // member functions of the current class,
1224 // because these macros are need by auto register mechanism.
1226 CPPUNIT_TEST_SUITE(ascii_compareIgnoreAsciiCase);
1227 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_000);
1228 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_000_1);
1229 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_001);
1230 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_002);
1231 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_002_1);
1232 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_003);
1233 CPPUNIT_TEST_SUITE_END();
1234 }; // class ascii_compareIgnoreAsciiCase
1236 // sample out of inc/rtl/ustring.hxx
1237 // rtl_uString * pToken = NULL;
1238 // sal_Int32 nIndex = 0;
1239 // do
1240 // {
1241 // ...
1242 // nIndex = rtl_uString_getToken(&pToken, pStr, 0, ';', nIndex);
1243 // ...
1244 // }
1245 // while (nIndex >= 0);
1247 class getToken : public CppUnit::TestFixture
1249 public:
1251 void getToken_000()
1253 rtl_ustr_ascii_compareIgnoreAsciiCase( NULL, NULL);
1254 // should not GPF
1257 void ascii_compareIgnoreAsciiCase_000_1()
1259 rtl::OUString aStr1("Line must be equal.");
1260 rtl_ustr_ascii_compareIgnoreAsciiCase( aStr1.getStr(), NULL);
1261 // should not GPF
1263 void ascii_compareIgnoreAsciiCase_001()
1265 rtl::OUString suStr1;
1266 rtl::OString sStr2;
1268 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1, sStr2.getStr());
1269 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1272 void ascii_compareIgnoreAsciiCase_002()
1274 rtl::OUString suStr1("Line must be equal.");
1275 rtl::OString sStr2 = "Line must be equal.";
1277 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1278 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1281 void ascii_compareIgnoreAsciiCase_002_1()
1283 rtl::OUString suStr1("Line must be equal, when ignore case.");
1284 rtl::OString sStr2 = "LINE MUST BE EQUAL, WHEN IGNORE CASE.";
1286 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1287 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
1290 void ascii_compareIgnoreAsciiCase_003()
1292 rtl::OUString suStr1("Line must differ.");
1293 rtl::OString sStr2 = "Line foo bar, ok, differ.";
1295 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1296 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1299 //! LLA: some more tests with some high level strings
1301 // void ascii_compareIgnoreAsciiCase_001()
1302 // {
1303 // rtl::OUString suStr1("change this to ascii upper case.");
1304 // rtl::OUString aShouldStr1("CHANGE THIS TO ASCII UPPER CASE.");
1306 // sal_uInt32 nLength = suStr1.getLength() * sizeof(sal_Unicode);
1307 // sal_Unicode* pStr = (sal_Unicode*) malloc(nLength + sizeof(sal_Unicode)); // length + null terminator
1308 // CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
1309 // memset(pStr, 0, nLength + sizeof(sal_Unicode));
1310 // memcpy(pStr, suStr1.getStr(), nLength);
1312 // rtl_ustr_ascii_compareIgnoreAsciiCase( pStr );
1313 // rtl::OUString suStr(pStr, suStr1.getLength());
1315 // CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
1316 // free(pStr);
1317 // }
1319 // Change the following lines only, if you add, remove or rename
1320 // member functions of the current class,
1321 // because these macros are need by auto register mechanism.
1323 CPPUNIT_TEST_SUITE(ascii_compareIgnoreAsciiCase);
1324 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_000);
1325 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_000_1);
1326 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_001);
1327 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_002);
1328 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_002_1);
1329 CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_003);
1330 CPPUNIT_TEST_SUITE_END();
1331 }; // class ascii_compareIgnoreAsciiCase
1333 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::compare);
1334 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::compareIgnoreAsciiCase);
1336 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::ascii_compare_WithLength);
1338 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::shortenedCompareIgnoreAsciiCase_WithLength);
1339 // CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::hashCode);
1341 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::indexOfChar);
1342 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::lastIndexOfChar);
1343 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::indexOfStr);
1344 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::lastIndexOfStr);
1346 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::replaceChar);
1347 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::replaceChar_WithLength);
1349 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::toAsciiLowerCase);
1350 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::toAsciiLowerCase_WithLength);
1351 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::toAsciiUpperCase);
1352 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::toAsciiUpperCase_WithLength);
1354 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::trim_WithLength);
1355 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::valueOfChar);
1357 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::ascii_compare);
1358 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::ascii_compareIgnoreAsciiCase);
1359 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::ascii_compareIgnoreAsciiCase_WithLength);
1360 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_ustr::ascii_shortenedCompareIgnoreAsciiCase_WithLength);
1362 } // namespace rtl_ustr
1364 // this macro creates an empty function, which will called by the RegisterAllFunctions("")
1365 // to let the user the possibility to also register some functions by hand.
1366 CPPUNIT_PLUGIN_IMPLEMENT();
1368 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */