xref: /aoo4110/main/sal/qa/rtl/oustring/rtl_ustr.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski 
25*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
26*b1cdbd2cSJim Jagielski #include "precompiled_sal.hxx"
27*b1cdbd2cSJim Jagielski #include <testshl/simpleheader.hxx>
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski /** print a UNI_CODE file name.
30*b1cdbd2cSJim Jagielski */
printOUString(::rtl::OUString const & _suStr)31*b1cdbd2cSJim Jagielski inline void printOUString( ::rtl::OUString const & _suStr )
32*b1cdbd2cSJim Jagielski {
33*b1cdbd2cSJim Jagielski     rtl::OString aString;
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski     t_print( "OUString: " );
36*b1cdbd2cSJim Jagielski     aString = ::rtl::OUStringToOString( _suStr, RTL_TEXTENCODING_ASCII_US );
37*b1cdbd2cSJim Jagielski     t_print( "%s\n", aString.getStr( ) );
38*b1cdbd2cSJim Jagielski }
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski namespace rtl_ustr
42*b1cdbd2cSJim Jagielski {
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski     class compare : public CppUnit::TestFixture
45*b1cdbd2cSJim Jagielski     {
46*b1cdbd2cSJim Jagielski     public:
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski 
compare_000()49*b1cdbd2cSJim Jagielski         void compare_000()
50*b1cdbd2cSJim Jagielski             {
51*b1cdbd2cSJim Jagielski                 rtl_ustr_compare( NULL, NULL);
52*b1cdbd2cSJim Jagielski                 // should not GPF
53*b1cdbd2cSJim Jagielski             }
54*b1cdbd2cSJim Jagielski 
compare_000_1()55*b1cdbd2cSJim Jagielski         void compare_000_1()
56*b1cdbd2cSJim Jagielski             {
57*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
58*b1cdbd2cSJim Jagielski                 rtl_ustr_compare( aStr1.getStr(), NULL);
59*b1cdbd2cSJim Jagielski                 // should not GPF
60*b1cdbd2cSJim Jagielski             }
compare_001()61*b1cdbd2cSJim Jagielski         void compare_001()
62*b1cdbd2cSJim Jagielski             {
63*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1;
64*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2;
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_compare( aStr1.getStr(), aStr2.getStr());
67*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
68*b1cdbd2cSJim Jagielski             }
69*b1cdbd2cSJim Jagielski 
compare_002()70*b1cdbd2cSJim Jagielski         void compare_002()
71*b1cdbd2cSJim Jagielski             {
72*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
73*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2 = rtl::OUString::createFromAscii("Line must be equal.");
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_compare( aStr1.getStr(), aStr2.getStr());
76*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
77*b1cdbd2cSJim Jagielski             }
78*b1cdbd2cSJim Jagielski 
compare_003()79*b1cdbd2cSJim Jagielski         void compare_003()
80*b1cdbd2cSJim Jagielski             {
81*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must differ.");
82*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2 = rtl::OUString::createFromAscii("Line foo bar, ok, differ.");
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_compare( aStr1.getStr(), aStr2.getStr());
85*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
86*b1cdbd2cSJim Jagielski             }
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski     // Change the following lines only, if you add, remove or rename
89*b1cdbd2cSJim Jagielski     // member functions of the current class,
90*b1cdbd2cSJim Jagielski     // because these macros are need by auto register mechanism.
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski     CPPUNIT_TEST_SUITE(compare);
93*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_000);
94*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_000_1);
95*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_001);
96*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_002);
97*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_003);
98*b1cdbd2cSJim Jagielski     CPPUNIT_TEST_SUITE_END();
99*b1cdbd2cSJim Jagielski }; // class compare
100*b1cdbd2cSJim Jagielski 
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski     class compareIgnoreAsciiCase : public CppUnit::TestFixture
103*b1cdbd2cSJim Jagielski     {
104*b1cdbd2cSJim Jagielski     public:
105*b1cdbd2cSJim Jagielski 
compare_000()106*b1cdbd2cSJim Jagielski         void compare_000()
107*b1cdbd2cSJim Jagielski             {
108*b1cdbd2cSJim Jagielski                 rtl_ustr_compareIgnoreAsciiCase( NULL, NULL);
109*b1cdbd2cSJim Jagielski             }
110*b1cdbd2cSJim Jagielski 
compare_000_1()111*b1cdbd2cSJim Jagielski         void compare_000_1()
112*b1cdbd2cSJim Jagielski             {
113*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
114*b1cdbd2cSJim Jagielski                 rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), NULL);
115*b1cdbd2cSJim Jagielski             }
compare_001()116*b1cdbd2cSJim Jagielski         void compare_001()
117*b1cdbd2cSJim Jagielski             {
118*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1;
119*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2;
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
122*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
123*b1cdbd2cSJim Jagielski             }
124*b1cdbd2cSJim Jagielski 
compare_002()125*b1cdbd2cSJim Jagielski         void compare_002()
126*b1cdbd2cSJim Jagielski             {
127*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
128*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2 = rtl::OUString::createFromAscii("Line must be equal.");
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
131*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
132*b1cdbd2cSJim Jagielski             }
133*b1cdbd2cSJim Jagielski 
compare_002_1()134*b1cdbd2cSJim Jagielski         void compare_002_1()
135*b1cdbd2cSJim Jagielski             {
136*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
137*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2 = rtl::OUString::createFromAscii("LINE MUST BE EQUAL.");
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
140*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
141*b1cdbd2cSJim Jagielski             }
142*b1cdbd2cSJim Jagielski 
compare_003()143*b1cdbd2cSJim Jagielski         void compare_003()
144*b1cdbd2cSJim Jagielski             {
145*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must differ.");
146*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2 = rtl::OUString::createFromAscii("Line foo bar, ok, differ.");
147*b1cdbd2cSJim Jagielski 
148*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
149*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
150*b1cdbd2cSJim Jagielski             }
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski     // Change the following lines only, if you add, remove or rename
153*b1cdbd2cSJim Jagielski     // member functions of the current class,
154*b1cdbd2cSJim Jagielski     // because these macros are need by auto register mechanism.
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski     CPPUNIT_TEST_SUITE(compareIgnoreAsciiCase);
157*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_000);
158*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_000_1);
159*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_001);
160*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_002);
161*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_002_1);
162*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_003);
163*b1cdbd2cSJim Jagielski     CPPUNIT_TEST_SUITE_END();
164*b1cdbd2cSJim Jagielski     }; // class compareIgnoreAsciiCase
165*b1cdbd2cSJim Jagielski 
166*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski     class shortenedCompareIgnoreAsciiCase_WithLength : public CppUnit::TestFixture
169*b1cdbd2cSJim Jagielski     {
170*b1cdbd2cSJim Jagielski     public:
171*b1cdbd2cSJim Jagielski 
compare_000()172*b1cdbd2cSJim Jagielski         void compare_000()
173*b1cdbd2cSJim Jagielski             {
174*b1cdbd2cSJim Jagielski                 rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( NULL, 0, NULL, 0, 0);
175*b1cdbd2cSJim Jagielski             }
176*b1cdbd2cSJim Jagielski 
compare_000_1()177*b1cdbd2cSJim Jagielski         void compare_000_1()
178*b1cdbd2cSJim Jagielski             {
179*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
180*b1cdbd2cSJim Jagielski                 rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(), NULL, 0, 1);
181*b1cdbd2cSJim Jagielski             }
compare_001()182*b1cdbd2cSJim Jagielski         void compare_001()
183*b1cdbd2cSJim Jagielski             {
184*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1;
185*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2;
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(), aStr2.getStr(), aStr2.getLength(), aStr1.getLength());
188*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
189*b1cdbd2cSJim Jagielski             }
190*b1cdbd2cSJim Jagielski 
compare_002()191*b1cdbd2cSJim Jagielski         void compare_002()
192*b1cdbd2cSJim Jagielski             {
193*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
194*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2 = rtl::OUString::createFromAscii("Line must be equal.");
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
197*b1cdbd2cSJim Jagielski                                                                                        aStr2.getStr(), aStr2.getLength(),
198*b1cdbd2cSJim Jagielski                                                                                        aStr1.getLength());
199*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
200*b1cdbd2cSJim Jagielski             }
201*b1cdbd2cSJim Jagielski 
compare_002_1()202*b1cdbd2cSJim Jagielski         void compare_002_1()
203*b1cdbd2cSJim Jagielski             {
204*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
205*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2 = rtl::OUString::createFromAscii("LINE MUST BE EQUAL.");
206*b1cdbd2cSJim Jagielski 
207*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
208*b1cdbd2cSJim Jagielski                                                                                        aStr2.getStr(), aStr2.getLength(),
209*b1cdbd2cSJim Jagielski                                                                                        aStr1.getLength());
210*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
211*b1cdbd2cSJim Jagielski             }
212*b1cdbd2cSJim Jagielski 
compare_003()213*b1cdbd2cSJim Jagielski         void compare_003()
214*b1cdbd2cSJim Jagielski             {
215*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must differ.");
216*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2 = rtl::OUString::createFromAscii("Line foo bar, ok, differ.");
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
219*b1cdbd2cSJim Jagielski                                                                                        aStr2.getStr(), aStr2.getLength(),
220*b1cdbd2cSJim Jagielski                                                                                        5);
221*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal first 5 characters.", nValue == 0);
222*b1cdbd2cSJim Jagielski             }
223*b1cdbd2cSJim Jagielski 
compare_004()224*b1cdbd2cSJim Jagielski         void compare_004()
225*b1cdbd2cSJim Jagielski             {
226*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must differ.");
227*b1cdbd2cSJim Jagielski                 rtl::OUString aStr2 = rtl::OUString::createFromAscii("Line foo bar, ok, differ.");
228*b1cdbd2cSJim Jagielski 
229*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
230*b1cdbd2cSJim Jagielski                                                                                        aStr2.getStr(), aStr2.getLength(),
231*b1cdbd2cSJim Jagielski                                                                                        aStr1.getLength());
232*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
233*b1cdbd2cSJim Jagielski             }
234*b1cdbd2cSJim Jagielski 
235*b1cdbd2cSJim Jagielski     // Change the following lines only, if you add, remove or rename
236*b1cdbd2cSJim Jagielski     // member functions of the current class,
237*b1cdbd2cSJim Jagielski     // because these macros are need by auto register mechanism.
238*b1cdbd2cSJim Jagielski 
239*b1cdbd2cSJim Jagielski     CPPUNIT_TEST_SUITE(shortenedCompareIgnoreAsciiCase_WithLength);
240*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_000);
241*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_000_1);
242*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_001);
243*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_002);
244*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_002_1);
245*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_003);
246*b1cdbd2cSJim Jagielski     CPPUNIT_TEST(compare_004);
247*b1cdbd2cSJim Jagielski     CPPUNIT_TEST_SUITE_END();
248*b1cdbd2cSJim Jagielski }; // class compare
249*b1cdbd2cSJim Jagielski 
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski // // -----------------------------------------------------------------------------
252*b1cdbd2cSJim Jagielski //
253*b1cdbd2cSJim Jagielski //     class hashCode : public CppUnit::TestFixture
254*b1cdbd2cSJim Jagielski //     {
255*b1cdbd2cSJim Jagielski //     public:
256*b1cdbd2cSJim Jagielski //
257*b1cdbd2cSJim Jagielski //         void hashCode_000()
258*b1cdbd2cSJim Jagielski //             {
259*b1cdbd2cSJim Jagielski //                 sal_Int32 nHashCode = rtl_ustr_hashCode( NULL );
260*b1cdbd2cSJim Jagielski //                 volatile int dummy = 0;
261*b1cdbd2cSJim Jagielski //             }
262*b1cdbd2cSJim Jagielski //
263*b1cdbd2cSJim Jagielski //         void hashCode_001()
264*b1cdbd2cSJim Jagielski //             {
265*b1cdbd2cSJim Jagielski //                 rtl::OString aStr1 = "Line for a hashCode.";
266*b1cdbd2cSJim Jagielski //                 sal_Int32 nHashCode = rtl_ustr_hashCode( aStr1.getStr() );
267*b1cdbd2cSJim Jagielski //                 t_print("hashcode: %d\n", nHashCode);
268*b1cdbd2cSJim Jagielski //                 // CPPUNIT_ASSERT_MESSAGE("failed.", nValue == 0);
269*b1cdbd2cSJim Jagielski //             }
270*b1cdbd2cSJim Jagielski //
271*b1cdbd2cSJim Jagielski //         void hashCode_002()
272*b1cdbd2cSJim Jagielski //             {
273*b1cdbd2cSJim Jagielski //                 rtl::OString aStr1 = "Line for a hashCode.";
274*b1cdbd2cSJim Jagielski //                 sal_Int32 nHashCode1 = rtl_ustr_hashCode( aStr1.getStr() );
275*b1cdbd2cSJim Jagielski //
276*b1cdbd2cSJim Jagielski //                 rtl::OString aStr2 = "Line for a hashCode.";
277*b1cdbd2cSJim Jagielski //                 sal_Int32 nHashCode2 = rtl_ustr_hashCode( aStr2.getStr() );
278*b1cdbd2cSJim Jagielski //
279*b1cdbd2cSJim Jagielski //                 CPPUNIT_ASSERT_MESSAGE("hashcodes must be equal.", nHashCode1 == nHashCode2 );
280*b1cdbd2cSJim Jagielski //             }
281*b1cdbd2cSJim Jagielski //
282*b1cdbd2cSJim Jagielski //         void hashCode_003()
283*b1cdbd2cSJim Jagielski //             {
284*b1cdbd2cSJim Jagielski //                 rtl::OString aStr1 = "Line for a hashCode.";
285*b1cdbd2cSJim Jagielski //                 sal_Int32 nHashCode1 = rtl_ustr_hashCode( aStr1.getStr() );
286*b1cdbd2cSJim Jagielski //
287*b1cdbd2cSJim Jagielski //                 rtl::OString aStr2 = "Line for an other hashcode.";
288*b1cdbd2cSJim Jagielski //                 sal_Int32 nHashCode2 = rtl_ustr_hashCode( aStr2.getStr() );
289*b1cdbd2cSJim Jagielski //
290*b1cdbd2cSJim Jagielski //                 CPPUNIT_ASSERT_MESSAGE("hashcodes must differ.", nHashCode1 != nHashCode2 );
291*b1cdbd2cSJim Jagielski //             }
292*b1cdbd2cSJim Jagielski //
293*b1cdbd2cSJim Jagielski //         // Change the following lines only, if you add, remove or rename
294*b1cdbd2cSJim Jagielski //         // member functions of the current class,
295*b1cdbd2cSJim Jagielski //         // because these macros are need by auto register mechanism.
296*b1cdbd2cSJim Jagielski //
297*b1cdbd2cSJim Jagielski //         CPPUNIT_TEST_SUITE(hashCode);
298*b1cdbd2cSJim Jagielski //         CPPUNIT_TEST(hashCode_000);
299*b1cdbd2cSJim Jagielski //         CPPUNIT_TEST(hashCode_001);
300*b1cdbd2cSJim Jagielski //         CPPUNIT_TEST(hashCode_002);
301*b1cdbd2cSJim Jagielski //         CPPUNIT_TEST(hashCode_003);
302*b1cdbd2cSJim Jagielski //         CPPUNIT_TEST_SUITE_END();
303*b1cdbd2cSJim Jagielski //     }; // class compare
304*b1cdbd2cSJim Jagielski //
305*b1cdbd2cSJim Jagielski //
306*b1cdbd2cSJim Jagielski // // -----------------------------------------------------------------------------
307*b1cdbd2cSJim Jagielski //
308*b1cdbd2cSJim Jagielski     class indexOfChar : public CppUnit::TestFixture
309*b1cdbd2cSJim Jagielski     {
310*b1cdbd2cSJim Jagielski     public:
311*b1cdbd2cSJim Jagielski 
indexOfChar_000()312*b1cdbd2cSJim Jagielski         void indexOfChar_000()
313*b1cdbd2cSJim Jagielski             {
314*b1cdbd2cSJim Jagielski                 rtl_ustr_indexOfChar( NULL, 0 );
315*b1cdbd2cSJim Jagielski             }
316*b1cdbd2cSJim Jagielski 
indexOfChar_001()317*b1cdbd2cSJim Jagielski         void indexOfChar_001()
318*b1cdbd2cSJim Jagielski             {
319*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a indexOfChar.");
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski                 sal_Int32 nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'L' );
322*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 0);
323*b1cdbd2cSJim Jagielski 
324*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'i' );
325*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 1);
326*b1cdbd2cSJim Jagielski 
327*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'n' );
328*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 2);
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'e' );
331*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 3);
332*b1cdbd2cSJim Jagielski             }
333*b1cdbd2cSJim Jagielski 
indexOfChar_002()334*b1cdbd2cSJim Jagielski         void indexOfChar_002()
335*b1cdbd2cSJim Jagielski             {
336*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a indexOfChar.");
337*b1cdbd2cSJim Jagielski                 sal_Int32 nIndex = rtl_ustr_indexOfChar( aStr1.getStr(), 'y' );
338*b1cdbd2cSJim Jagielski 
339*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
340*b1cdbd2cSJim Jagielski             }
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
343*b1cdbd2cSJim Jagielski         // member functions of the current class,
344*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
345*b1cdbd2cSJim Jagielski 
346*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(indexOfChar);
347*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(indexOfChar_000);
348*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(indexOfChar_001);
349*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(indexOfChar_002);
350*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
351*b1cdbd2cSJim Jagielski     }; // class indexOfChar
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski // // -----------------------------------------------------------------------------
354*b1cdbd2cSJim Jagielski     class lastIndexOfChar : public CppUnit::TestFixture
355*b1cdbd2cSJim Jagielski     {
356*b1cdbd2cSJim Jagielski     public:
357*b1cdbd2cSJim Jagielski 
lastIndexOfChar_000()358*b1cdbd2cSJim Jagielski         void lastIndexOfChar_000()
359*b1cdbd2cSJim Jagielski             {
360*b1cdbd2cSJim Jagielski                 rtl_ustr_lastIndexOfChar( NULL, 0 );
361*b1cdbd2cSJim Jagielski             }
362*b1cdbd2cSJim Jagielski 
lastIndexOfChar_001()363*b1cdbd2cSJim Jagielski         void lastIndexOfChar_001()
364*b1cdbd2cSJim Jagielski             {
365*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a lastIndexOfChar.");
366*b1cdbd2cSJim Jagielski 
367*b1cdbd2cSJim Jagielski                 sal_Int32 nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'C' );
368*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 22);
369*b1cdbd2cSJim Jagielski 
370*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'h' );
371*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 23);
372*b1cdbd2cSJim Jagielski 
373*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'a' );
374*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 24);
375*b1cdbd2cSJim Jagielski 
376*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'r' );
377*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 25);
378*b1cdbd2cSJim Jagielski             }
379*b1cdbd2cSJim Jagielski 
lastIndexOfChar_002()380*b1cdbd2cSJim Jagielski         void lastIndexOfChar_002()
381*b1cdbd2cSJim Jagielski             {
382*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a lastIndexOfChar.");
383*b1cdbd2cSJim Jagielski                 sal_Int32 nIndex = rtl_ustr_lastIndexOfChar( aStr1.getStr(), 'y' );
384*b1cdbd2cSJim Jagielski 
385*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
386*b1cdbd2cSJim Jagielski             }
387*b1cdbd2cSJim Jagielski 
388*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
389*b1cdbd2cSJim Jagielski         // member functions of the current class,
390*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
391*b1cdbd2cSJim Jagielski 
392*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(lastIndexOfChar);
393*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(lastIndexOfChar_000);
394*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(lastIndexOfChar_001);
395*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(lastIndexOfChar_002);
396*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
397*b1cdbd2cSJim Jagielski     }; // class lastIndexOfChar
398*b1cdbd2cSJim Jagielski 
399*b1cdbd2cSJim Jagielski 
400*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
401*b1cdbd2cSJim Jagielski 
402*b1cdbd2cSJim Jagielski     class indexOfStr : public CppUnit::TestFixture
403*b1cdbd2cSJim Jagielski     {
404*b1cdbd2cSJim Jagielski     public:
405*b1cdbd2cSJim Jagielski 
indexOfStr_000()406*b1cdbd2cSJim Jagielski         void indexOfStr_000()
407*b1cdbd2cSJim Jagielski             {
408*b1cdbd2cSJim Jagielski                 rtl_ustr_indexOfStr( NULL, 0 );
409*b1cdbd2cSJim Jagielski             }
410*b1cdbd2cSJim Jagielski 
indexOfStr_000_1()411*b1cdbd2cSJim Jagielski         void indexOfStr_000_1()
412*b1cdbd2cSJim Jagielski             {
413*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a indexOfStr.");
414*b1cdbd2cSJim Jagielski                 rtl_ustr_indexOfStr( aStr1.getStr(), 0 );
415*b1cdbd2cSJim Jagielski             }
416*b1cdbd2cSJim Jagielski 
indexOfStr_001()417*b1cdbd2cSJim Jagielski         void indexOfStr_001()
418*b1cdbd2cSJim Jagielski             {
419*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a indexOfStr.");
420*b1cdbd2cSJim Jagielski 
421*b1cdbd2cSJim Jagielski                 rtl::OUString suSearch = rtl::OUString::createFromAscii("Line");
422*b1cdbd2cSJim Jagielski                 sal_Int32 nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
423*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 0);
424*b1cdbd2cSJim Jagielski 
425*b1cdbd2cSJim Jagielski                 /* rtl::OUString */ suSearch = rtl::OUString::createFromAscii("for");
426*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
427*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 5);
428*b1cdbd2cSJim Jagielski 
429*b1cdbd2cSJim Jagielski                 /* rtl::OUString */ suSearch = rtl::OUString::createFromAscii("a");
430*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
431*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 9);
432*b1cdbd2cSJim Jagielski 
433*b1cdbd2cSJim Jagielski                 /* rtl::OUString */ suSearch = rtl::OUString::createFromAscii("a index");
434*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
435*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex ==9);
436*b1cdbd2cSJim Jagielski             }
437*b1cdbd2cSJim Jagielski 
indexOfStr_002()438*b1cdbd2cSJim Jagielski         void indexOfStr_002()
439*b1cdbd2cSJim Jagielski             {
440*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a indexOfStr.");
441*b1cdbd2cSJim Jagielski                 rtl::OUString suSearch = rtl::OUString::createFromAscii("not exist");
442*b1cdbd2cSJim Jagielski                 sal_Int32 nIndex = rtl_ustr_indexOfStr( aStr1.getStr(), suSearch );
443*b1cdbd2cSJim Jagielski 
444*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
445*b1cdbd2cSJim Jagielski             }
446*b1cdbd2cSJim Jagielski 
447*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
448*b1cdbd2cSJim Jagielski         // member functions of the current class,
449*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
450*b1cdbd2cSJim Jagielski 
451*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(indexOfStr);
452*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(indexOfStr_000);
453*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(indexOfStr_001);
454*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(indexOfStr_002);
455*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
456*b1cdbd2cSJim Jagielski     }; // class compare
457*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
458*b1cdbd2cSJim Jagielski 
459*b1cdbd2cSJim Jagielski 
460*b1cdbd2cSJim Jagielski     class lastIndexOfStr : public CppUnit::TestFixture
461*b1cdbd2cSJim Jagielski     {
462*b1cdbd2cSJim Jagielski     public:
463*b1cdbd2cSJim Jagielski 
lastIndexOfStr_000()464*b1cdbd2cSJim Jagielski         void lastIndexOfStr_000()
465*b1cdbd2cSJim Jagielski             {
466*b1cdbd2cSJim Jagielski                 rtl_ustr_lastIndexOfStr( NULL, NULL );
467*b1cdbd2cSJim Jagielski             }
468*b1cdbd2cSJim Jagielski 
lastIndexOfStr_000_1()469*b1cdbd2cSJim Jagielski         void lastIndexOfStr_000_1()
470*b1cdbd2cSJim Jagielski             {
471*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a lastIndexOfStr.");
472*b1cdbd2cSJim Jagielski                 rtl_ustr_lastIndexOfStr( aStr1.getStr(), NULL );
473*b1cdbd2cSJim Jagielski             }
474*b1cdbd2cSJim Jagielski 
lastIndexOfStr_001()475*b1cdbd2cSJim Jagielski         void lastIndexOfStr_001()
476*b1cdbd2cSJim Jagielski             {
477*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a lastIndexOfStr.");
478*b1cdbd2cSJim Jagielski                 rtl::OUString aSearchStr = rtl::OUString::createFromAscii("Index");
479*b1cdbd2cSJim Jagielski 
480*b1cdbd2cSJim Jagielski                 sal_Int32 nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
481*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 15);
482*b1cdbd2cSJim Jagielski 
483*b1cdbd2cSJim Jagielski                 /* rtl::OString */ aSearchStr = rtl::OUString::createFromAscii("Line");
484*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
485*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 0);
486*b1cdbd2cSJim Jagielski 
487*b1cdbd2cSJim Jagielski                 /* rtl::OString */ aSearchStr = rtl::OUString::createFromAscii("");
488*b1cdbd2cSJim Jagielski                 /* sal_Int32 */ nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
489*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1);
490*b1cdbd2cSJim Jagielski             }
491*b1cdbd2cSJim Jagielski 
lastIndexOfStr_002()492*b1cdbd2cSJim Jagielski         void lastIndexOfStr_002()
493*b1cdbd2cSJim Jagielski             {
494*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a lastIndexOfStr.");
495*b1cdbd2cSJim Jagielski                 rtl::OUString aSearchStr = rtl::OUString::createFromAscii("foo");
496*b1cdbd2cSJim Jagielski                 sal_Int32 nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
497*b1cdbd2cSJim Jagielski 
498*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
499*b1cdbd2cSJim Jagielski             }
500*b1cdbd2cSJim Jagielski 
lastIndexOfStr_003()501*b1cdbd2cSJim Jagielski         void lastIndexOfStr_003()
502*b1cdbd2cSJim Jagielski             {
503*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line for a lastIndexOfStr.");
504*b1cdbd2cSJim Jagielski                 rtl::OUString aSearchStr = rtl::OUString::createFromAscii("O");
505*b1cdbd2cSJim Jagielski                 sal_Int32 nIndex = rtl_ustr_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
506*b1cdbd2cSJim Jagielski 
507*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 20 );
508*b1cdbd2cSJim Jagielski             }
509*b1cdbd2cSJim Jagielski 
510*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
511*b1cdbd2cSJim Jagielski         // member functions of the current class,
512*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
513*b1cdbd2cSJim Jagielski 
514*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(lastIndexOfStr);
515*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(lastIndexOfStr_000);
516*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(lastIndexOfStr_001);
517*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(lastIndexOfStr_002);
518*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(lastIndexOfStr_003);
519*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
520*b1cdbd2cSJim Jagielski     }; // class lastIndexOfStr
521*b1cdbd2cSJim Jagielski 
522*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
523*b1cdbd2cSJim Jagielski 
524*b1cdbd2cSJim Jagielski     class replaceChar : public CppUnit::TestFixture
525*b1cdbd2cSJim Jagielski     {
526*b1cdbd2cSJim Jagielski     public:
527*b1cdbd2cSJim Jagielski 
replaceChar_000()528*b1cdbd2cSJim Jagielski         void replaceChar_000()
529*b1cdbd2cSJim Jagielski             {
530*b1cdbd2cSJim Jagielski                 rtl_ustr_replaceChar( NULL, 0, 0 );
531*b1cdbd2cSJim Jagielski             }
532*b1cdbd2cSJim Jagielski 
replaceChar_001()533*b1cdbd2cSJim Jagielski         void replaceChar_001()
534*b1cdbd2cSJim Jagielski             {
535*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("replace char.");
536*b1cdbd2cSJim Jagielski                 rtl::OUString aShouldStr1 = rtl::OUString::createFromAscii("ruplacu char.");
537*b1cdbd2cSJim Jagielski 
538*b1cdbd2cSJim Jagielski                 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
539*b1cdbd2cSJim Jagielski                 sal_Unicode* pStr = (sal_Unicode*) malloc( nLength + sizeof(sal_Unicode)); // length + 1 (null terminator)
540*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
541*b1cdbd2cSJim Jagielski                 memset(pStr, 0, nLength + sizeof(sal_Unicode));
542*b1cdbd2cSJim Jagielski                 memcpy(pStr, aStr1.getStr(), nLength);
543*b1cdbd2cSJim Jagielski 
544*b1cdbd2cSJim Jagielski                 rtl_ustr_replaceChar( pStr, 'e', 'u' );
545*b1cdbd2cSJim Jagielski                 rtl::OUString suStr(pStr, aStr1.getLength());
546*b1cdbd2cSJim Jagielski 
547*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("replace failed", aShouldStr1.equals(suStr) == sal_True);
548*b1cdbd2cSJim Jagielski                 free(pStr);
549*b1cdbd2cSJim Jagielski             }
550*b1cdbd2cSJim Jagielski 
551*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
552*b1cdbd2cSJim Jagielski         // member functions of the current class,
553*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
554*b1cdbd2cSJim Jagielski 
555*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(replaceChar);
556*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(replaceChar_000);
557*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(replaceChar_001);
558*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
559*b1cdbd2cSJim Jagielski     }; // class replaceChar
560*b1cdbd2cSJim Jagielski 
561*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
562*b1cdbd2cSJim Jagielski 
563*b1cdbd2cSJim Jagielski     class replaceChar_WithLength : public CppUnit::TestFixture
564*b1cdbd2cSJim Jagielski     {
565*b1cdbd2cSJim Jagielski     public:
566*b1cdbd2cSJim Jagielski 
replaceChar_WithLength_000()567*b1cdbd2cSJim Jagielski         void replaceChar_WithLength_000()
568*b1cdbd2cSJim Jagielski             {
569*b1cdbd2cSJim Jagielski                 rtl_ustr_replaceChar_WithLength( NULL, 0, 0, 0 );
570*b1cdbd2cSJim Jagielski             }
571*b1cdbd2cSJim Jagielski 
replaceChar_WithLength_000_1()572*b1cdbd2cSJim Jagielski         void replaceChar_WithLength_000_1()
573*b1cdbd2cSJim Jagielski             {
574*b1cdbd2cSJim Jagielski                 rtl_ustr_replaceChar_WithLength( NULL, 1, 0, 0 );
575*b1cdbd2cSJim Jagielski             }
replaceChar_WithLength_001()576*b1cdbd2cSJim Jagielski         void replaceChar_WithLength_001()
577*b1cdbd2cSJim Jagielski             {
578*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("replace char.");
579*b1cdbd2cSJim Jagielski                 rtl::OUString aShouldStr1 = rtl::OUString::createFromAscii("ruplace char.");
580*b1cdbd2cSJim Jagielski 
581*b1cdbd2cSJim Jagielski                 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
582*b1cdbd2cSJim Jagielski                 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength);
583*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
584*b1cdbd2cSJim Jagielski                 memcpy(pStr, aStr1.getStr(), nLength);
585*b1cdbd2cSJim Jagielski 
586*b1cdbd2cSJim Jagielski                 rtl_ustr_replaceChar_WithLength( pStr, 6, 'e', 'u' );
587*b1cdbd2cSJim Jagielski                 rtl::OUString suStr(pStr, aStr1.getLength());
588*b1cdbd2cSJim Jagielski 
589*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("replace failed", aShouldStr1.equals(suStr) == sal_True);
590*b1cdbd2cSJim Jagielski                 free(pStr);
591*b1cdbd2cSJim Jagielski             }
592*b1cdbd2cSJim Jagielski 
replaceChar_WithLength_002()593*b1cdbd2cSJim Jagielski         void replaceChar_WithLength_002()
594*b1cdbd2cSJim Jagielski             {
595*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1       = rtl::OUString::createFromAscii("eeeeeeeeeeeee");
596*b1cdbd2cSJim Jagielski                 rtl::OUString aShouldStr1 = rtl::OUString::createFromAscii("uuuuuueeeeeee");
597*b1cdbd2cSJim Jagielski 
598*b1cdbd2cSJim Jagielski                 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
599*b1cdbd2cSJim Jagielski                 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength);                 // no null terminator is need
600*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
601*b1cdbd2cSJim Jagielski                 memcpy(pStr, aStr1.getStr(), nLength);
602*b1cdbd2cSJim Jagielski 
603*b1cdbd2cSJim Jagielski                 rtl_ustr_replaceChar_WithLength( pStr, 6, 'e', 'u' );
604*b1cdbd2cSJim Jagielski                 rtl::OUString suStr(pStr, aStr1.getLength());
605*b1cdbd2cSJim Jagielski 
606*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("replace failed", aShouldStr1.equals(suStr) == sal_True);
607*b1cdbd2cSJim Jagielski                 free(pStr);
608*b1cdbd2cSJim Jagielski             }
609*b1cdbd2cSJim Jagielski 
610*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
611*b1cdbd2cSJim Jagielski         // member functions of the current class,
612*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
613*b1cdbd2cSJim Jagielski 
614*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(replaceChar_WithLength);
615*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(replaceChar_WithLength_000);
616*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(replaceChar_WithLength_000_1);
617*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(replaceChar_WithLength_001);
618*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(replaceChar_WithLength_002);
619*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
620*b1cdbd2cSJim Jagielski     }; // class replaceChar
621*b1cdbd2cSJim Jagielski 
622*b1cdbd2cSJim Jagielski 
623*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
624*b1cdbd2cSJim Jagielski 
625*b1cdbd2cSJim Jagielski     class toAsciiLowerCase : public CppUnit::TestFixture
626*b1cdbd2cSJim Jagielski     {
627*b1cdbd2cSJim Jagielski     public:
628*b1cdbd2cSJim Jagielski 
toAsciiLowerCase_000()629*b1cdbd2cSJim Jagielski         void toAsciiLowerCase_000()
630*b1cdbd2cSJim Jagielski             {
631*b1cdbd2cSJim Jagielski                 rtl_ustr_toAsciiLowerCase( NULL );
632*b1cdbd2cSJim Jagielski             }
633*b1cdbd2cSJim Jagielski 
toAsciiLowerCase_001()634*b1cdbd2cSJim Jagielski         void toAsciiLowerCase_001()
635*b1cdbd2cSJim Jagielski             {
636*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("CHANGE THIS TO ASCII LOWER CASE.");
637*b1cdbd2cSJim Jagielski                 rtl::OUString aShouldStr1 = rtl::OUString::createFromAscii("change this to ascii lower case.");
638*b1cdbd2cSJim Jagielski 
639*b1cdbd2cSJim Jagielski                 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
640*b1cdbd2cSJim Jagielski                 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength + sizeof(sal_Unicode) );  // we need to add '\0' so one more
641*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
642*b1cdbd2cSJim Jagielski                 memset(pStr, 0, nLength + sizeof(sal_Unicode));                             // empty the sal_Unicode array
643*b1cdbd2cSJim Jagielski                 memcpy(pStr, aStr1.getStr(), nLength);
644*b1cdbd2cSJim Jagielski 
645*b1cdbd2cSJim Jagielski                 rtl_ustr_toAsciiLowerCase( pStr );
646*b1cdbd2cSJim Jagielski                 rtl::OUString suStr(pStr, aStr1.getLength());
647*b1cdbd2cSJim Jagielski 
648*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
649*b1cdbd2cSJim Jagielski                 free(pStr);
650*b1cdbd2cSJim Jagielski             }
651*b1cdbd2cSJim Jagielski 
652*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
653*b1cdbd2cSJim Jagielski         // member functions of the current class,
654*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
655*b1cdbd2cSJim Jagielski 
656*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(toAsciiLowerCase);
657*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(toAsciiLowerCase_000);
658*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(toAsciiLowerCase_001);
659*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
660*b1cdbd2cSJim Jagielski     }; // class replaceChar
661*b1cdbd2cSJim Jagielski 
662*b1cdbd2cSJim Jagielski 
663*b1cdbd2cSJim Jagielski     class toAsciiLowerCase_WithLength : public CppUnit::TestFixture
664*b1cdbd2cSJim Jagielski     {
665*b1cdbd2cSJim Jagielski     public:
666*b1cdbd2cSJim Jagielski 
toAsciiLowerCase_WithLength_000()667*b1cdbd2cSJim Jagielski         void toAsciiLowerCase_WithLength_000()
668*b1cdbd2cSJim Jagielski             {
669*b1cdbd2cSJim Jagielski                 rtl_ustr_toAsciiLowerCase_WithLength( NULL, 0 );
670*b1cdbd2cSJim Jagielski             }
671*b1cdbd2cSJim Jagielski 
toAsciiLowerCase_WithLength_001()672*b1cdbd2cSJim Jagielski         void toAsciiLowerCase_WithLength_001()
673*b1cdbd2cSJim Jagielski             {
674*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("CHANGE THIS TO ASCII LOWER CASE.");
675*b1cdbd2cSJim Jagielski                 rtl::OUString aShouldStr1 = rtl::OUString::createFromAscii("change thiS TO ASCII LOWER CASE.");
676*b1cdbd2cSJim Jagielski 
677*b1cdbd2cSJim Jagielski                 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
678*b1cdbd2cSJim Jagielski                 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength);
679*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
680*b1cdbd2cSJim Jagielski                 memcpy(pStr, aStr1.getStr(), nLength);
681*b1cdbd2cSJim Jagielski 
682*b1cdbd2cSJim Jagielski                 rtl_ustr_toAsciiLowerCase_WithLength( pStr, 10 );
683*b1cdbd2cSJim Jagielski 
684*b1cdbd2cSJim Jagielski                 rtl::OUString suStr(pStr, aStr1.getLength());
685*b1cdbd2cSJim Jagielski                 sal_Bool bResult = aShouldStr1.equals(suStr);
686*b1cdbd2cSJim Jagielski 
687*b1cdbd2cSJim Jagielski                 printOUString(suStr);
688*b1cdbd2cSJim Jagielski                 t_print("Result length: %d\n", suStr.getLength() );
689*b1cdbd2cSJim Jagielski                 t_print("Result: %d\n", bResult);
690*b1cdbd2cSJim Jagielski 
691*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("failed", bResult == sal_True);
692*b1cdbd2cSJim Jagielski                 free(pStr);
693*b1cdbd2cSJim Jagielski             }
694*b1cdbd2cSJim Jagielski 
695*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
696*b1cdbd2cSJim Jagielski         // member functions of the current class,
697*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
698*b1cdbd2cSJim Jagielski 
699*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(toAsciiLowerCase_WithLength);
700*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(toAsciiLowerCase_WithLength_000);
701*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(toAsciiLowerCase_WithLength_001);
702*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
703*b1cdbd2cSJim Jagielski     }; // class replaceChar
704*b1cdbd2cSJim Jagielski 
705*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
706*b1cdbd2cSJim Jagielski 
707*b1cdbd2cSJim Jagielski     class toAsciiUpperCase : public CppUnit::TestFixture
708*b1cdbd2cSJim Jagielski     {
709*b1cdbd2cSJim Jagielski     public:
710*b1cdbd2cSJim Jagielski 
toAsciiUpperCase_000()711*b1cdbd2cSJim Jagielski         void toAsciiUpperCase_000()
712*b1cdbd2cSJim Jagielski             {
713*b1cdbd2cSJim Jagielski                 rtl_ustr_toAsciiUpperCase( NULL );
714*b1cdbd2cSJim Jagielski             }
715*b1cdbd2cSJim Jagielski 
toAsciiUpperCase_001()716*b1cdbd2cSJim Jagielski         void toAsciiUpperCase_001()
717*b1cdbd2cSJim Jagielski             {
718*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("change this to ascii upper case.");
719*b1cdbd2cSJim Jagielski                 rtl::OUString aShouldStr1 = rtl::OUString::createFromAscii("CHANGE THIS TO ASCII UPPER CASE.");
720*b1cdbd2cSJim Jagielski 
721*b1cdbd2cSJim Jagielski                 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
722*b1cdbd2cSJim Jagielski                 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength + sizeof(sal_Unicode)); // length + null terminator
723*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
724*b1cdbd2cSJim Jagielski                 memset(pStr, 0, nLength + sizeof(sal_Unicode));
725*b1cdbd2cSJim Jagielski                 memcpy(pStr, aStr1.getStr(), nLength);
726*b1cdbd2cSJim Jagielski 
727*b1cdbd2cSJim Jagielski                 rtl_ustr_toAsciiUpperCase( pStr );
728*b1cdbd2cSJim Jagielski                 rtl::OUString suStr(pStr, aStr1.getLength());
729*b1cdbd2cSJim Jagielski 
730*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
731*b1cdbd2cSJim Jagielski                 free(pStr);
732*b1cdbd2cSJim Jagielski             }
733*b1cdbd2cSJim Jagielski 
734*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
735*b1cdbd2cSJim Jagielski         // member functions of the current class,
736*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
737*b1cdbd2cSJim Jagielski 
738*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(toAsciiUpperCase);
739*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(toAsciiUpperCase_000);
740*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(toAsciiUpperCase_001);
741*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
742*b1cdbd2cSJim Jagielski     }; // class replaceChar
743*b1cdbd2cSJim Jagielski 
744*b1cdbd2cSJim Jagielski 
745*b1cdbd2cSJim Jagielski     class toAsciiUpperCase_WithLength : public CppUnit::TestFixture
746*b1cdbd2cSJim Jagielski     {
747*b1cdbd2cSJim Jagielski     public:
748*b1cdbd2cSJim Jagielski 
toAsciiUpperCase_WithLength_000()749*b1cdbd2cSJim Jagielski         void toAsciiUpperCase_WithLength_000()
750*b1cdbd2cSJim Jagielski             {
751*b1cdbd2cSJim Jagielski                 rtl_ustr_toAsciiUpperCase_WithLength( NULL, 0 );
752*b1cdbd2cSJim Jagielski             }
753*b1cdbd2cSJim Jagielski 
toAsciiUpperCase_WithLength_001()754*b1cdbd2cSJim Jagielski         void toAsciiUpperCase_WithLength_001()
755*b1cdbd2cSJim Jagielski             {
756*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("change this to ascii lower case.");
757*b1cdbd2cSJim Jagielski                 rtl::OUString aShouldStr1 = rtl::OUString::createFromAscii("CHANGE THIs to ascii lower case.");
758*b1cdbd2cSJim Jagielski 
759*b1cdbd2cSJim Jagielski                 sal_uInt32 nLength = aStr1.getLength() * sizeof(sal_Unicode);
760*b1cdbd2cSJim Jagielski                 sal_Unicode* pStr = (sal_Unicode*) malloc(nLength);
761*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
762*b1cdbd2cSJim Jagielski 
763*b1cdbd2cSJim Jagielski                 memcpy(pStr, aStr1.getStr(), nLength);
764*b1cdbd2cSJim Jagielski                 rtl_ustr_toAsciiUpperCase_WithLength( pStr, 10 );
765*b1cdbd2cSJim Jagielski                 rtl::OUString suStr(pStr, aStr1.getLength());
766*b1cdbd2cSJim Jagielski 
767*b1cdbd2cSJim Jagielski                 // t_print("Uppercase with length: '%s'\n", aStr1.getStr());
768*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
769*b1cdbd2cSJim Jagielski                 free(pStr);
770*b1cdbd2cSJim Jagielski             }
771*b1cdbd2cSJim Jagielski 
772*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
773*b1cdbd2cSJim Jagielski         // member functions of the current class,
774*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
775*b1cdbd2cSJim Jagielski 
776*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(toAsciiUpperCase_WithLength);
777*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(toAsciiUpperCase_WithLength_000);
778*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(toAsciiUpperCase_WithLength_001);
779*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
780*b1cdbd2cSJim Jagielski     }; // class replaceChar
781*b1cdbd2cSJim Jagielski 
782*b1cdbd2cSJim Jagielski 
783*b1cdbd2cSJim Jagielski     // -----------------------------------------------------------------------------
784*b1cdbd2cSJim Jagielski 
785*b1cdbd2cSJim Jagielski     class trim_WithLength : public CppUnit::TestFixture
786*b1cdbd2cSJim Jagielski     {
787*b1cdbd2cSJim Jagielski       public:
trim_WithLength_000()788*b1cdbd2cSJim Jagielski         void trim_WithLength_000()
789*b1cdbd2cSJim Jagielski         {
790*b1cdbd2cSJim Jagielski             rtl_ustr_trim_WithLength(NULL, 0);
791*b1cdbd2cSJim Jagielski             // should not GPF
792*b1cdbd2cSJim Jagielski         }
793*b1cdbd2cSJim Jagielski 
trim_WithLength_000_1()794*b1cdbd2cSJim Jagielski         void trim_WithLength_000_1()
795*b1cdbd2cSJim Jagielski         {
796*b1cdbd2cSJim Jagielski             rtl::OUString suStr = rtl::OUString::createFromAscii("  trim this");
797*b1cdbd2cSJim Jagielski 
798*b1cdbd2cSJim Jagielski             sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
799*b1cdbd2cSJim Jagielski             sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
800*b1cdbd2cSJim Jagielski             memcpy(pStr, suStr.getStr(), nLength);
801*b1cdbd2cSJim Jagielski 
802*b1cdbd2cSJim Jagielski             rtl_ustr_trim_WithLength( pStr, 0 );
803*b1cdbd2cSJim Jagielski             free(pStr);
804*b1cdbd2cSJim Jagielski         }
805*b1cdbd2cSJim Jagielski 
trim_WithLength_001()806*b1cdbd2cSJim Jagielski         void trim_WithLength_001()
807*b1cdbd2cSJim Jagielski         {
808*b1cdbd2cSJim Jagielski             rtl::OUString suStr = rtl::OUString::createFromAscii("  trim this");
809*b1cdbd2cSJim Jagielski             sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
810*b1cdbd2cSJim Jagielski             sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
811*b1cdbd2cSJim Jagielski             memcpy(pStr, suStr.getStr(), nLength);
812*b1cdbd2cSJim Jagielski 
813*b1cdbd2cSJim Jagielski             rtl_ustr_trim_WithLength( pStr, 2 );
814*b1cdbd2cSJim Jagielski 
815*b1cdbd2cSJim Jagielski             CPPUNIT_ASSERT_MESSAGE("string should be empty", rtl::OUString(pStr).getLength() == 0);
816*b1cdbd2cSJim Jagielski             free(pStr);
817*b1cdbd2cSJim Jagielski         }
818*b1cdbd2cSJim Jagielski 
819*b1cdbd2cSJim Jagielski 
trim_WithLength_002()820*b1cdbd2cSJim Jagielski         void trim_WithLength_002()
821*b1cdbd2cSJim Jagielski         {
822*b1cdbd2cSJim Jagielski             rtl::OUString suStr = rtl::OUString::createFromAscii("trim this");
823*b1cdbd2cSJim Jagielski 
824*b1cdbd2cSJim Jagielski             sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
825*b1cdbd2cSJim Jagielski             sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
826*b1cdbd2cSJim Jagielski             memcpy(pStr, suStr.getStr(), nLength);
827*b1cdbd2cSJim Jagielski 
828*b1cdbd2cSJim Jagielski             rtl_ustr_trim_WithLength( pStr, 5 );
829*b1cdbd2cSJim Jagielski 
830*b1cdbd2cSJim Jagielski             CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", rtl::OUString(pStr).getLength() == 4);
831*b1cdbd2cSJim Jagielski             free(pStr);
832*b1cdbd2cSJim Jagielski         }
833*b1cdbd2cSJim Jagielski 
834*b1cdbd2cSJim Jagielski 
trim_WithLength_003()835*b1cdbd2cSJim Jagielski         void trim_WithLength_003()
836*b1cdbd2cSJim Jagielski         {
837*b1cdbd2cSJim Jagielski             rtl::OUString suStr = rtl::OUString::createFromAscii("     trim   this");
838*b1cdbd2cSJim Jagielski 
839*b1cdbd2cSJim Jagielski             sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
840*b1cdbd2cSJim Jagielski             sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
841*b1cdbd2cSJim Jagielski             memcpy(pStr, suStr.getStr(), nLength);
842*b1cdbd2cSJim Jagielski 
843*b1cdbd2cSJim Jagielski             rtl_ustr_trim_WithLength( pStr, 11 );
844*b1cdbd2cSJim Jagielski 
845*b1cdbd2cSJim Jagielski             CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", rtl::OUString(pStr).getLength() == 4);
846*b1cdbd2cSJim Jagielski             free(pStr);
847*b1cdbd2cSJim Jagielski         }
848*b1cdbd2cSJim Jagielski 
trim_WithLength_004()849*b1cdbd2cSJim Jagielski         void trim_WithLength_004()
850*b1cdbd2cSJim Jagielski         {
851*b1cdbd2cSJim Jagielski             rtl::OUString suStr = rtl::OUString::createFromAscii("\r\n\t \n\r    trim  \n this");
852*b1cdbd2cSJim Jagielski 
853*b1cdbd2cSJim Jagielski             sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
854*b1cdbd2cSJim Jagielski             sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
855*b1cdbd2cSJim Jagielski             memcpy(pStr, suStr.getStr(), nLength);
856*b1cdbd2cSJim Jagielski 
857*b1cdbd2cSJim Jagielski             rtl_ustr_trim_WithLength( pStr, 17 );
858*b1cdbd2cSJim Jagielski 
859*b1cdbd2cSJim Jagielski             CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", rtl::OUString(pStr).getLength() == 4);
860*b1cdbd2cSJim Jagielski             free(pStr);
861*b1cdbd2cSJim Jagielski         }
862*b1cdbd2cSJim Jagielski 
trim_WithLength_005()863*b1cdbd2cSJim Jagielski         void trim_WithLength_005()
864*b1cdbd2cSJim Jagielski         {
865*b1cdbd2cSJim Jagielski             rtl::OUString suStr = rtl::OUString::createFromAscii("\r\n\t \n\r    trim \t this \n\r\t\t     ");
866*b1cdbd2cSJim Jagielski 
867*b1cdbd2cSJim Jagielski             sal_uInt32 nLength = suStr.getLength() * sizeof(sal_Unicode);
868*b1cdbd2cSJim Jagielski             sal_Unicode *pStr = (sal_Unicode*)malloc(nLength);
869*b1cdbd2cSJim Jagielski             memcpy(pStr, suStr.getStr(), nLength);
870*b1cdbd2cSJim Jagielski 
871*b1cdbd2cSJim Jagielski             rtl_ustr_trim_WithLength( pStr, suStr.getLength() );
872*b1cdbd2cSJim Jagielski 
873*b1cdbd2cSJim Jagielski             CPPUNIT_ASSERT_MESSAGE("string should contain 'trim \\t this'", rtl::OUString(pStr).getLength() == 11);
874*b1cdbd2cSJim Jagielski             free(pStr);
875*b1cdbd2cSJim Jagielski         }
876*b1cdbd2cSJim Jagielski 
877*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
878*b1cdbd2cSJim Jagielski         // member functions of the current class,
879*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
880*b1cdbd2cSJim Jagielski 
881*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(trim_WithLength);
882*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(trim_WithLength_000);
883*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(trim_WithLength_000_1);
884*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(trim_WithLength_001);
885*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(trim_WithLength_002);
886*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(trim_WithLength_003);
887*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(trim_WithLength_004);
888*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(trim_WithLength_005);
889*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
890*b1cdbd2cSJim Jagielski     };
891*b1cdbd2cSJim Jagielski 
892*b1cdbd2cSJim Jagielski     // -----------------------------------------------------------------------------
893*b1cdbd2cSJim Jagielski 
894*b1cdbd2cSJim Jagielski     class valueOfChar : public CppUnit::TestFixture
895*b1cdbd2cSJim Jagielski     {
896*b1cdbd2cSJim Jagielski       public:
valueOfChar_000()897*b1cdbd2cSJim Jagielski         void valueOfChar_000()
898*b1cdbd2cSJim Jagielski             {
899*b1cdbd2cSJim Jagielski                 rtl_ustr_valueOfChar(NULL, 0);
900*b1cdbd2cSJim Jagielski                 // should not GPF
901*b1cdbd2cSJim Jagielski             }
valueOfChar_001()902*b1cdbd2cSJim Jagielski         void valueOfChar_001()
903*b1cdbd2cSJim Jagielski             {
904*b1cdbd2cSJim Jagielski                 sal_Unicode *pStr = (sal_Unicode*)malloc(RTL_USTR_MAX_VALUEOFCHAR);
905*b1cdbd2cSJim Jagielski                 if (pStr)
906*b1cdbd2cSJim Jagielski                 {
907*b1cdbd2cSJim Jagielski                     rtl_ustr_valueOfChar(pStr, 'A');
908*b1cdbd2cSJim Jagielski 
909*b1cdbd2cSJim Jagielski                     CPPUNIT_ASSERT_MESSAGE("string should contain 'A'", pStr[0] == L'A');
910*b1cdbd2cSJim Jagielski                     free(pStr);
911*b1cdbd2cSJim Jagielski                 }
912*b1cdbd2cSJim Jagielski             }
913*b1cdbd2cSJim Jagielski 
914*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
915*b1cdbd2cSJim Jagielski         // member functions of the current class,
916*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
917*b1cdbd2cSJim Jagielski 
918*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(valueOfChar);
919*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(valueOfChar_000);
920*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(valueOfChar_001);
921*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
922*b1cdbd2cSJim Jagielski     };
923*b1cdbd2cSJim Jagielski 
924*b1cdbd2cSJim Jagielski 
925*b1cdbd2cSJim Jagielski 
926*b1cdbd2cSJim Jagielski 
927*b1cdbd2cSJim Jagielski     class ascii_compare_WithLength : public CppUnit::TestFixture
928*b1cdbd2cSJim Jagielski     {
929*b1cdbd2cSJim Jagielski     public:
zero_length()930*b1cdbd2cSJim Jagielski 		void zero_length()
931*b1cdbd2cSJim Jagielski         {
932*b1cdbd2cSJim Jagielski 			sal_Unicode pUnicode[] = {0xffff, 0xffff};
933*b1cdbd2cSJim Jagielski 			char const * pAscii = "reference";
934*b1cdbd2cSJim Jagielski 
935*b1cdbd2cSJim Jagielski 			sal_Int32 value = rtl_ustr_ascii_compare_WithLength(pUnicode, 0, pAscii);
936*b1cdbd2cSJim Jagielski 			CPPUNIT_ASSERT_MESSAGE("ref string is empty, compare failed, needs to be <0.", value < 0);
937*b1cdbd2cSJim Jagielski 		}
938*b1cdbd2cSJim Jagielski 
equal_ascii_shorter()939*b1cdbd2cSJim Jagielski         void equal_ascii_shorter()
940*b1cdbd2cSJim Jagielski 		{
941*b1cdbd2cSJim Jagielski 			rtl::OUString refStr(RTL_CONSTASCII_USTRINGPARAM("referenceString"));
942*b1cdbd2cSJim Jagielski 			char const * pAscii = "reference";
943*b1cdbd2cSJim Jagielski 
944*b1cdbd2cSJim Jagielski 			sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
945*b1cdbd2cSJim Jagielski 			CPPUNIT_ASSERT_MESSAGE("ref string is bigger, compare failed, needs to be >0.", value > 0);
946*b1cdbd2cSJim Jagielski 		}
947*b1cdbd2cSJim Jagielski 
equal_ascii_shorter_asciiLength()948*b1cdbd2cSJim Jagielski         void equal_ascii_shorter_asciiLength()
949*b1cdbd2cSJim Jagielski 		{
950*b1cdbd2cSJim Jagielski 			rtl::OUString refStr(RTL_CONSTASCII_USTRINGPARAM("referenceString"));
951*b1cdbd2cSJim Jagielski 			char const * pAscii = "reference";
952*b1cdbd2cSJim Jagielski 
953*b1cdbd2cSJim Jagielski 			sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, rtl_str_getLength(pAscii), pAscii);
954*b1cdbd2cSJim Jagielski 			CPPUNIT_ASSERT_MESSAGE("ref string is bigger despite ascii length, compare failed, needs to be == 0.", value == 0);
955*b1cdbd2cSJim Jagielski 		}
956*b1cdbd2cSJim Jagielski 
equal_ref_shorter()957*b1cdbd2cSJim Jagielski         void equal_ref_shorter()
958*b1cdbd2cSJim Jagielski 		{
959*b1cdbd2cSJim Jagielski 			rtl::OUString refStr(RTL_CONSTASCII_USTRINGPARAM("reference"));
960*b1cdbd2cSJim Jagielski 			char const * pAscii = "referenceString";
961*b1cdbd2cSJim Jagielski 
962*b1cdbd2cSJim Jagielski 			sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
963*b1cdbd2cSJim Jagielski 			CPPUNIT_ASSERT_MESSAGE("ascii string is bigger, but only compared to ref length, needs to be 0.", value < 0);
964*b1cdbd2cSJim Jagielski 		}
965*b1cdbd2cSJim Jagielski 
equal()966*b1cdbd2cSJim Jagielski         void equal()
967*b1cdbd2cSJim Jagielski 		{
968*b1cdbd2cSJim Jagielski 			rtl::OUString refStr(RTL_CONSTASCII_USTRINGPARAM("reference"));
969*b1cdbd2cSJim Jagielski 			char const * pAscii = "reference";
970*b1cdbd2cSJim Jagielski 
971*b1cdbd2cSJim Jagielski 			sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
972*b1cdbd2cSJim Jagielski 			CPPUNIT_ASSERT_MESSAGE("strings are equal, compare failed, needs to be 0.", value == 0);
973*b1cdbd2cSJim Jagielski 		}
974*b1cdbd2cSJim Jagielski 
unequal_reference_bigger()975*b1cdbd2cSJim Jagielski         void unequal_reference_bigger()
976*b1cdbd2cSJim Jagielski        {
977*b1cdbd2cSJim Jagielski 			rtl::OUString refStr(RTL_CONSTASCII_USTRINGPARAM("defghi"));
978*b1cdbd2cSJim Jagielski 			char const * pAscii = "abc";
979*b1cdbd2cSJim Jagielski 
980*b1cdbd2cSJim Jagielski 			sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
981*b1cdbd2cSJim Jagielski 			CPPUNIT_ASSERT_MESSAGE("strings are unequal and ref is bigger, needs to be >0.", value > 0);
982*b1cdbd2cSJim Jagielski 		}
983*b1cdbd2cSJim Jagielski 
unequal_ascii_bigger()984*b1cdbd2cSJim Jagielski         void unequal_ascii_bigger()
985*b1cdbd2cSJim Jagielski 		{
986*b1cdbd2cSJim Jagielski 			rtl::OUString refStr(RTL_CONSTASCII_USTRINGPARAM("abc"));
987*b1cdbd2cSJim Jagielski 			char const * pAscii = "defghi";
988*b1cdbd2cSJim Jagielski 
989*b1cdbd2cSJim Jagielski 			sal_Int32 value = rtl_ustr_ascii_compare_WithLength(refStr.pData->buffer, refStr.pData->length, pAscii);
990*b1cdbd2cSJim Jagielski 
991*b1cdbd2cSJim Jagielski 			CPPUNIT_ASSERT_MESSAGE("strings are unequal and ascii is bigger, needs to be <0.", value < 0);
992*b1cdbd2cSJim Jagielski 		}
993*b1cdbd2cSJim Jagielski 
994*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(ascii_compare_WithLength);
995*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(zero_length);
996*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(equal_ascii_shorter);
997*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(equal_ascii_shorter_asciiLength);
998*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(equal_ref_shorter);
999*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(equal);
1000*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(unequal_reference_bigger);
1001*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(unequal_ascii_bigger);
1002*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
1003*b1cdbd2cSJim Jagielski 	};
1004*b1cdbd2cSJim Jagielski 
1005*b1cdbd2cSJim Jagielski 
1006*b1cdbd2cSJim Jagielski 
1007*b1cdbd2cSJim Jagielski 
1008*b1cdbd2cSJim Jagielski     class ascii_shortenedCompareIgnoreAsciiCase_WithLength : public CppUnit::TestFixture
1009*b1cdbd2cSJim Jagielski     {
1010*b1cdbd2cSJim Jagielski     public:
1011*b1cdbd2cSJim Jagielski 
ascii_shortenedCompareIgnoreAsciiCase_WithLength_000()1012*b1cdbd2cSJim Jagielski         void ascii_shortenedCompareIgnoreAsciiCase_WithLength_000()
1013*b1cdbd2cSJim Jagielski             {
1014*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( NULL, 0, NULL, 0);
1015*b1cdbd2cSJim Jagielski                 // should not GPF
1016*b1cdbd2cSJim Jagielski             }
1017*b1cdbd2cSJim Jagielski 
ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_1()1018*b1cdbd2cSJim Jagielski         void ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_1()
1019*b1cdbd2cSJim Jagielski             {
1020*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1021*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(), NULL, 0);
1022*b1cdbd2cSJim Jagielski                 // should not GPF
1023*b1cdbd2cSJim Jagielski             }
ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_2()1024*b1cdbd2cSJim Jagielski         void ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_2()
1025*b1cdbd2cSJim Jagielski             {
1026*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1027*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                 "Line is shorter.";
1028*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), sStr2.getLength(), sStr2.getStr(), 0);
1029*b1cdbd2cSJim Jagielski                 // should not GPF
1030*b1cdbd2cSJim Jagielski             }
ascii_shortenedCompareIgnoreAsciiCase_WithLength_001()1031*b1cdbd2cSJim Jagielski         void ascii_shortenedCompareIgnoreAsciiCase_WithLength_001()
1032*b1cdbd2cSJim Jagielski             {
1033*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1;
1034*b1cdbd2cSJim Jagielski                 rtl::OString sStr2;
1035*b1cdbd2cSJim Jagielski 
1036*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( suStr1, 0, sStr2.getStr(), 0);
1037*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1038*b1cdbd2cSJim Jagielski             }
1039*b1cdbd2cSJim Jagielski 
ascii_shortenedCompareIgnoreAsciiCase_WithLength_002()1040*b1cdbd2cSJim Jagielski         void ascii_shortenedCompareIgnoreAsciiCase_WithLength_002()
1041*b1cdbd2cSJim Jagielski             {
1042*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1043*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                  "Line must be equal.";
1044*b1cdbd2cSJim Jagielski 
1045*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( suStr1.getStr(), suStr1.getLength(), sStr2.getStr(), sStr2.getLength());
1046*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1047*b1cdbd2cSJim Jagielski             }
1048*b1cdbd2cSJim Jagielski 
ascii_shortenedCompareIgnoreAsciiCase_WithLength_003()1049*b1cdbd2cSJim Jagielski         void ascii_shortenedCompareIgnoreAsciiCase_WithLength_003()
1050*b1cdbd2cSJim Jagielski             {
1051*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must differ.");
1052*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                  "Line must be differ and longer.";
1053*b1cdbd2cSJim Jagielski 
1054*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( suStr1.getStr(), suStr1.getLength(), sStr2.getStr(), sStr2.getLength());
1055*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1056*b1cdbd2cSJim Jagielski             }
1057*b1cdbd2cSJim Jagielski 
1058*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
1059*b1cdbd2cSJim Jagielski         // member functions of the current class,
1060*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
1061*b1cdbd2cSJim Jagielski 
1062*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(ascii_shortenedCompareIgnoreAsciiCase_WithLength);
1063*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_000);
1064*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_1);
1065*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_000_2);
1066*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_001);
1067*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_002);
1068*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_shortenedCompareIgnoreAsciiCase_WithLength_003);
1069*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
1070*b1cdbd2cSJim Jagielski     }; // class ascii_shortenedCompareIgnoreAsciiCase_WithLength
1071*b1cdbd2cSJim Jagielski 
1072*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
1073*b1cdbd2cSJim Jagielski 
1074*b1cdbd2cSJim Jagielski     class ascii_compareIgnoreAsciiCase_WithLength : public CppUnit::TestFixture
1075*b1cdbd2cSJim Jagielski     {
1076*b1cdbd2cSJim Jagielski     public:
1077*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_WithLength_000()1078*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_WithLength_000()
1079*b1cdbd2cSJim Jagielski             {
1080*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( NULL, 0, NULL);
1081*b1cdbd2cSJim Jagielski                 // should not GPF
1082*b1cdbd2cSJim Jagielski             }
1083*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_WithLength_000_1()1084*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_WithLength_000_1()
1085*b1cdbd2cSJim Jagielski             {
1086*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1087*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( aStr1.getStr(), 0, NULL);
1088*b1cdbd2cSJim Jagielski                 // should not GPF
1089*b1cdbd2cSJim Jagielski             }
ascii_compareIgnoreAsciiCase_WithLength_000_2()1090*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_WithLength_000_2()
1091*b1cdbd2cSJim Jagielski             {
1092*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1093*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                 "Line is shorter.";
1094*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( aStr1.getStr(), sStr2.getLength(), sStr2.getStr());
1095*b1cdbd2cSJim Jagielski                 // should not GPF
1096*b1cdbd2cSJim Jagielski             }
ascii_compareIgnoreAsciiCase_WithLength_001()1097*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_WithLength_001()
1098*b1cdbd2cSJim Jagielski             {
1099*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1;
1100*b1cdbd2cSJim Jagielski                 rtl::OString sStr2;
1101*b1cdbd2cSJim Jagielski 
1102*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( suStr1, 0, sStr2.getStr());
1103*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compareIgnoreAsciiCase_WithLength failed, strings are equal.", nValue == 0);
1104*b1cdbd2cSJim Jagielski             }
1105*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_WithLength_002()1106*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_WithLength_002()
1107*b1cdbd2cSJim Jagielski             {
1108*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1109*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                  "Line must be equal.";
1110*b1cdbd2cSJim Jagielski 
1111*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( suStr1.getStr(), suStr1.getLength(), sStr2.getStr());
1112*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1113*b1cdbd2cSJim Jagielski             }
1114*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_WithLength_003()1115*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_WithLength_003()
1116*b1cdbd2cSJim Jagielski             {
1117*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must differ.");
1118*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                  "Line must be differ and longer.";
1119*b1cdbd2cSJim Jagielski 
1120*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( suStr1.getStr(), suStr1.getLength(), sStr2.getStr());
1121*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1122*b1cdbd2cSJim Jagielski             }
1123*b1cdbd2cSJim Jagielski 
1124*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
1125*b1cdbd2cSJim Jagielski         // member functions of the current class,
1126*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
1127*b1cdbd2cSJim Jagielski 
1128*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(ascii_compareIgnoreAsciiCase_WithLength);
1129*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_000);
1130*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_000_1);
1131*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_000_2);
1132*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_001);
1133*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_002);
1134*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_WithLength_003);
1135*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
1136*b1cdbd2cSJim Jagielski     }; // class ascii_compareIgnoreAsciiCase_WithLength
1137*b1cdbd2cSJim Jagielski 
1138*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
1139*b1cdbd2cSJim Jagielski 
1140*b1cdbd2cSJim Jagielski     class ascii_compare : public CppUnit::TestFixture
1141*b1cdbd2cSJim Jagielski     {
1142*b1cdbd2cSJim Jagielski     public:
1143*b1cdbd2cSJim Jagielski 
ascii_compare_000()1144*b1cdbd2cSJim Jagielski         void ascii_compare_000()
1145*b1cdbd2cSJim Jagielski             {
1146*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_compare( NULL, NULL);
1147*b1cdbd2cSJim Jagielski                 // should not GPF
1148*b1cdbd2cSJim Jagielski             }
1149*b1cdbd2cSJim Jagielski 
ascii_compare_000_1()1150*b1cdbd2cSJim Jagielski         void ascii_compare_000_1()
1151*b1cdbd2cSJim Jagielski             {
1152*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1153*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_compare( aStr1.getStr(), NULL);
1154*b1cdbd2cSJim Jagielski                 // should not GPF
1155*b1cdbd2cSJim Jagielski             }
ascii_compare_001()1156*b1cdbd2cSJim Jagielski         void ascii_compare_001()
1157*b1cdbd2cSJim Jagielski             {
1158*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1;
1159*b1cdbd2cSJim Jagielski                 rtl::OString sStr2;
1160*b1cdbd2cSJim Jagielski 
1161*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compare( suStr1, sStr2.getStr());
1162*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1163*b1cdbd2cSJim Jagielski             }
1164*b1cdbd2cSJim Jagielski 
ascii_compare_002()1165*b1cdbd2cSJim Jagielski         void ascii_compare_002()
1166*b1cdbd2cSJim Jagielski             {
1167*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1168*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                  "Line must be equal.";
1169*b1cdbd2cSJim Jagielski 
1170*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compare( suStr1.getStr(), sStr2.getStr());
1171*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1172*b1cdbd2cSJim Jagielski             }
1173*b1cdbd2cSJim Jagielski 
ascii_compare_003()1174*b1cdbd2cSJim Jagielski         void ascii_compare_003()
1175*b1cdbd2cSJim Jagielski             {
1176*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must differ.");
1177*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 = "Line foo bar, ok, differ.";
1178*b1cdbd2cSJim Jagielski 
1179*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compare( suStr1.getStr(), sStr2.getStr());
1180*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1181*b1cdbd2cSJim Jagielski             }
1182*b1cdbd2cSJim Jagielski 
1183*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
1184*b1cdbd2cSJim Jagielski         // member functions of the current class,
1185*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
1186*b1cdbd2cSJim Jagielski 
1187*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(ascii_compare);
1188*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compare_000);
1189*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compare_000_1);
1190*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compare_001);
1191*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compare_002);
1192*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compare_003);
1193*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
1194*b1cdbd2cSJim Jagielski     }; // class ascii_compare
1195*b1cdbd2cSJim Jagielski 
1196*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
1197*b1cdbd2cSJim Jagielski 
1198*b1cdbd2cSJim Jagielski     class ascii_compareIgnoreAsciiCase : public CppUnit::TestFixture
1199*b1cdbd2cSJim Jagielski     {
1200*b1cdbd2cSJim Jagielski     public:
1201*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_000()1202*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_000()
1203*b1cdbd2cSJim Jagielski             {
1204*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_compareIgnoreAsciiCase( NULL, NULL);
1205*b1cdbd2cSJim Jagielski                 // should not GPF
1206*b1cdbd2cSJim Jagielski             }
1207*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_000_1()1208*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_000_1()
1209*b1cdbd2cSJim Jagielski             {
1210*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1211*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_compareIgnoreAsciiCase( aStr1.getStr(), NULL);
1212*b1cdbd2cSJim Jagielski                 // should not GPF
1213*b1cdbd2cSJim Jagielski             }
ascii_compareIgnoreAsciiCase_001()1214*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_001()
1215*b1cdbd2cSJim Jagielski             {
1216*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1;
1217*b1cdbd2cSJim Jagielski                 rtl::OString sStr2;
1218*b1cdbd2cSJim Jagielski 
1219*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1, sStr2.getStr());
1220*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1221*b1cdbd2cSJim Jagielski             }
1222*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_002()1223*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_002()
1224*b1cdbd2cSJim Jagielski             {
1225*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1226*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                  "Line must be equal.";
1227*b1cdbd2cSJim Jagielski 
1228*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1229*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1230*b1cdbd2cSJim Jagielski             }
1231*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_002_1()1232*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_002_1()
1233*b1cdbd2cSJim Jagielski             {
1234*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must be equal, when ignore case.");
1235*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                 "LINE MUST BE EQUAL, WHEN IGNORE CASE.";
1236*b1cdbd2cSJim Jagielski 
1237*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1238*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
1239*b1cdbd2cSJim Jagielski             }
1240*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_003()1241*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_003()
1242*b1cdbd2cSJim Jagielski             {
1243*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must differ.");
1244*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 = "Line foo bar, ok, differ.";
1245*b1cdbd2cSJim Jagielski 
1246*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1247*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1248*b1cdbd2cSJim Jagielski             }
1249*b1cdbd2cSJim Jagielski 
1250*b1cdbd2cSJim Jagielski         //! LLA: some more tests with some high level strings
1251*b1cdbd2cSJim Jagielski 
1252*b1cdbd2cSJim Jagielski         // void ascii_compareIgnoreAsciiCase_001()
1253*b1cdbd2cSJim Jagielski         //     {
1254*b1cdbd2cSJim Jagielski         //         rtl::OUString suStr1 = rtl::OUString::createFromAscii("change this to ascii upper case.");
1255*b1cdbd2cSJim Jagielski         //         rtl::OUString aShouldStr1 = rtl::OUString::createFromAscii("CHANGE THIS TO ASCII UPPER CASE.");
1256*b1cdbd2cSJim Jagielski         //
1257*b1cdbd2cSJim Jagielski         //         sal_uInt32 nLength = suStr1.getLength() * sizeof(sal_Unicode);
1258*b1cdbd2cSJim Jagielski         //         sal_Unicode* pStr = (sal_Unicode*) malloc(nLength + sizeof(sal_Unicode)); // length + null terminator
1259*b1cdbd2cSJim Jagielski         //         CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
1260*b1cdbd2cSJim Jagielski         //         memset(pStr, 0, nLength + sizeof(sal_Unicode));
1261*b1cdbd2cSJim Jagielski         //         memcpy(pStr, suStr1.getStr(), nLength);
1262*b1cdbd2cSJim Jagielski         //
1263*b1cdbd2cSJim Jagielski         //         rtl_ustr_ascii_compareIgnoreAsciiCase( pStr );
1264*b1cdbd2cSJim Jagielski         //         rtl::OUString suStr(pStr, suStr1.getLength());
1265*b1cdbd2cSJim Jagielski         //
1266*b1cdbd2cSJim Jagielski         //         CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
1267*b1cdbd2cSJim Jagielski         //         free(pStr);
1268*b1cdbd2cSJim Jagielski         //     }
1269*b1cdbd2cSJim Jagielski 
1270*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
1271*b1cdbd2cSJim Jagielski         // member functions of the current class,
1272*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
1273*b1cdbd2cSJim Jagielski 
1274*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(ascii_compareIgnoreAsciiCase);
1275*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_000);
1276*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_000_1);
1277*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_001);
1278*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_002);
1279*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_002_1);
1280*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_003);
1281*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
1282*b1cdbd2cSJim Jagielski     }; // class ascii_compareIgnoreAsciiCase
1283*b1cdbd2cSJim Jagielski 
1284*b1cdbd2cSJim Jagielski 
1285*b1cdbd2cSJim Jagielski     // sample out of inc/rtl/ustring.hxx
1286*b1cdbd2cSJim Jagielski     // rtl_uString * pToken = NULL;
1287*b1cdbd2cSJim Jagielski     // sal_Int32 nIndex = 0;
1288*b1cdbd2cSJim Jagielski     // do
1289*b1cdbd2cSJim Jagielski     // {
1290*b1cdbd2cSJim Jagielski     //       ...
1291*b1cdbd2cSJim Jagielski     //       nIndex = rtl_uString_getToken(&pToken, pStr, 0, ';', nIndex);
1292*b1cdbd2cSJim Jagielski     //       ...
1293*b1cdbd2cSJim Jagielski     // }
1294*b1cdbd2cSJim Jagielski     // while (nIndex >= 0);
1295*b1cdbd2cSJim Jagielski 
1296*b1cdbd2cSJim Jagielski     class getToken : public CppUnit::TestFixture
1297*b1cdbd2cSJim Jagielski     {
1298*b1cdbd2cSJim Jagielski     public:
1299*b1cdbd2cSJim Jagielski 
getToken_000()1300*b1cdbd2cSJim Jagielski         void getToken_000()
1301*b1cdbd2cSJim Jagielski             {
1302*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_compareIgnoreAsciiCase( NULL, NULL);
1303*b1cdbd2cSJim Jagielski                 // should not GPF
1304*b1cdbd2cSJim Jagielski             }
1305*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_000_1()1306*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_000_1()
1307*b1cdbd2cSJim Jagielski             {
1308*b1cdbd2cSJim Jagielski                 rtl::OUString aStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1309*b1cdbd2cSJim Jagielski                 rtl_ustr_ascii_compareIgnoreAsciiCase( aStr1.getStr(), NULL);
1310*b1cdbd2cSJim Jagielski                 // should not GPF
1311*b1cdbd2cSJim Jagielski             }
ascii_compareIgnoreAsciiCase_001()1312*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_001()
1313*b1cdbd2cSJim Jagielski             {
1314*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1;
1315*b1cdbd2cSJim Jagielski                 rtl::OString sStr2;
1316*b1cdbd2cSJim Jagielski 
1317*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1, sStr2.getStr());
1318*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1319*b1cdbd2cSJim Jagielski             }
1320*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_002()1321*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_002()
1322*b1cdbd2cSJim Jagielski             {
1323*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must be equal.");
1324*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                  "Line must be equal.";
1325*b1cdbd2cSJim Jagielski 
1326*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1327*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
1328*b1cdbd2cSJim Jagielski             }
1329*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_002_1()1330*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_002_1()
1331*b1cdbd2cSJim Jagielski             {
1332*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must be equal, when ignore case.");
1333*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 =                                 "LINE MUST BE EQUAL, WHEN IGNORE CASE.";
1334*b1cdbd2cSJim Jagielski 
1335*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1336*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
1337*b1cdbd2cSJim Jagielski             }
1338*b1cdbd2cSJim Jagielski 
ascii_compareIgnoreAsciiCase_003()1339*b1cdbd2cSJim Jagielski         void ascii_compareIgnoreAsciiCase_003()
1340*b1cdbd2cSJim Jagielski             {
1341*b1cdbd2cSJim Jagielski                 rtl::OUString suStr1 = rtl::OUString::createFromAscii("Line must differ.");
1342*b1cdbd2cSJim Jagielski                 rtl::OString sStr2 = "Line foo bar, ok, differ.";
1343*b1cdbd2cSJim Jagielski 
1344*b1cdbd2cSJim Jagielski                 sal_Int32 nValue = rtl_ustr_ascii_compareIgnoreAsciiCase( suStr1.getStr(), sStr2.getStr());
1345*b1cdbd2cSJim Jagielski                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
1346*b1cdbd2cSJim Jagielski             }
1347*b1cdbd2cSJim Jagielski 
1348*b1cdbd2cSJim Jagielski         //! LLA: some more tests with some high level strings
1349*b1cdbd2cSJim Jagielski 
1350*b1cdbd2cSJim Jagielski         // void ascii_compareIgnoreAsciiCase_001()
1351*b1cdbd2cSJim Jagielski         //     {
1352*b1cdbd2cSJim Jagielski         //         rtl::OUString suStr1 = rtl::OUString::createFromAscii("change this to ascii upper case.");
1353*b1cdbd2cSJim Jagielski         //         rtl::OUString aShouldStr1 = rtl::OUString::createFromAscii("CHANGE THIS TO ASCII UPPER CASE.");
1354*b1cdbd2cSJim Jagielski         //
1355*b1cdbd2cSJim Jagielski         //         sal_uInt32 nLength = suStr1.getLength() * sizeof(sal_Unicode);
1356*b1cdbd2cSJim Jagielski         //         sal_Unicode* pStr = (sal_Unicode*) malloc(nLength + sizeof(sal_Unicode)); // length + null terminator
1357*b1cdbd2cSJim Jagielski         //         CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
1358*b1cdbd2cSJim Jagielski         //         memset(pStr, 0, nLength + sizeof(sal_Unicode));
1359*b1cdbd2cSJim Jagielski         //         memcpy(pStr, suStr1.getStr(), nLength);
1360*b1cdbd2cSJim Jagielski         //
1361*b1cdbd2cSJim Jagielski         //         rtl_ustr_ascii_compareIgnoreAsciiCase( pStr );
1362*b1cdbd2cSJim Jagielski         //         rtl::OUString suStr(pStr, suStr1.getLength());
1363*b1cdbd2cSJim Jagielski         //
1364*b1cdbd2cSJim Jagielski         //         CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(suStr) == sal_True);
1365*b1cdbd2cSJim Jagielski         //         free(pStr);
1366*b1cdbd2cSJim Jagielski         //     }
1367*b1cdbd2cSJim Jagielski 
1368*b1cdbd2cSJim Jagielski         // Change the following lines only, if you add, remove or rename
1369*b1cdbd2cSJim Jagielski         // member functions of the current class,
1370*b1cdbd2cSJim Jagielski         // because these macros are need by auto register mechanism.
1371*b1cdbd2cSJim Jagielski 
1372*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE(ascii_compareIgnoreAsciiCase);
1373*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_000);
1374*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_000_1);
1375*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_001);
1376*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_002);
1377*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_002_1);
1378*b1cdbd2cSJim Jagielski         CPPUNIT_TEST(ascii_compareIgnoreAsciiCase_003);
1379*b1cdbd2cSJim Jagielski         CPPUNIT_TEST_SUITE_END();
1380*b1cdbd2cSJim Jagielski     }; // class ascii_compareIgnoreAsciiCase
1381*b1cdbd2cSJim Jagielski 
1382*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
1383*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::compare, "rtl_ustr");
1384*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::compareIgnoreAsciiCase, "rtl_ustr");
1385*b1cdbd2cSJim Jagielski 
1386*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::ascii_compare_WithLength, "rtl_ustr");
1387*b1cdbd2cSJim Jagielski 
1388*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::shortenedCompareIgnoreAsciiCase_WithLength, "rtl_ustr");
1389*b1cdbd2cSJim Jagielski // CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::hashCode, "rtl_ustr");
1390*b1cdbd2cSJim Jagielski 
1391*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::indexOfChar, "rtl_ustr");
1392*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::lastIndexOfChar, "rtl_ustr");
1393*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::indexOfStr, "rtl_ustr");
1394*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::lastIndexOfStr, "rtl_ustr");
1395*b1cdbd2cSJim Jagielski 
1396*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::replaceChar, "rtl_ustr");
1397*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::replaceChar_WithLength, "rtl_ustr");
1398*b1cdbd2cSJim Jagielski 
1399*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::toAsciiLowerCase, "rtl_ustr");
1400*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::toAsciiLowerCase_WithLength, "rtl_ustr");
1401*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::toAsciiUpperCase, "rtl_ustr");
1402*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::toAsciiUpperCase_WithLength, "rtl_ustr");
1403*b1cdbd2cSJim Jagielski 
1404*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::trim_WithLength, "rtl_ustr");
1405*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::valueOfChar, "rtl_ustr");
1406*b1cdbd2cSJim Jagielski 
1407*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::ascii_compare, "rtl_ustr");
1408*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::ascii_compareIgnoreAsciiCase, "rtl_ustr");
1409*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::ascii_compareIgnoreAsciiCase_WithLength, "rtl_ustr");
1410*b1cdbd2cSJim Jagielski CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_ustr::ascii_shortenedCompareIgnoreAsciiCase_WithLength, "rtl_ustr");
1411*b1cdbd2cSJim Jagielski 
1412*b1cdbd2cSJim Jagielski } // namespace rtl_ustr
1413*b1cdbd2cSJim Jagielski 
1414*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
1415*b1cdbd2cSJim Jagielski 
1416*b1cdbd2cSJim Jagielski // this macro creates an empty function, which will called by the RegisterAllFunctions()
1417*b1cdbd2cSJim Jagielski // to let the user the possibility to also register some functions by hand.
1418*b1cdbd2cSJim Jagielski NOADDITIONAL;
1419*b1cdbd2cSJim Jagielski 
1420*b1cdbd2cSJim Jagielski 
1421