xref: /AOO41X/main/sal/qa/rtl/ostring/rtl_str.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir 
29*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
30*cdf0e10cSrcweir #include "precompiled_sal.hxx"
31*cdf0e10cSrcweir #include <testshl/simpleheader.hxx>
32*cdf0e10cSrcweir 
33*cdf0e10cSrcweir namespace rtl_str
34*cdf0e10cSrcweir {
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir     class compare : public CppUnit::TestFixture
37*cdf0e10cSrcweir     {
38*cdf0e10cSrcweir     public:
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir         void compare_000()
41*cdf0e10cSrcweir             {
42*cdf0e10cSrcweir                 rtl_str_compare( NULL, NULL);
43*cdf0e10cSrcweir             }
44*cdf0e10cSrcweir 
45*cdf0e10cSrcweir         void compare_000_1()
46*cdf0e10cSrcweir             {
47*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must be equal.";
48*cdf0e10cSrcweir                 rtl_str_compare( aStr1.getStr(), NULL);
49*cdf0e10cSrcweir             }
50*cdf0e10cSrcweir         void compare_001()
51*cdf0e10cSrcweir             {
52*cdf0e10cSrcweir                 rtl::OString aStr1 = "";
53*cdf0e10cSrcweir                 rtl::OString aStr2 = "";
54*cdf0e10cSrcweir 
55*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_compare( aStr1.getStr(), aStr2.getStr());
56*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
57*cdf0e10cSrcweir             }
58*cdf0e10cSrcweir 
59*cdf0e10cSrcweir         void compare_002()
60*cdf0e10cSrcweir             {
61*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must be equal.";
62*cdf0e10cSrcweir                 rtl::OString aStr2 = "Line must be equal.";
63*cdf0e10cSrcweir 
64*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_compare( aStr1.getStr(), aStr2.getStr());
65*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
66*cdf0e10cSrcweir             }
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir         void compare_003()
69*cdf0e10cSrcweir             {
70*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must differ.";
71*cdf0e10cSrcweir                 rtl::OString aStr2 = "Line foo bar, ok, differ.";
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_compare( aStr1.getStr(), aStr2.getStr());
74*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
75*cdf0e10cSrcweir             }
76*cdf0e10cSrcweir 
77*cdf0e10cSrcweir     // Change the following lines only, if you add, remove or rename
78*cdf0e10cSrcweir     // member functions of the current class,
79*cdf0e10cSrcweir     // because these macros are need by auto register mechanism.
80*cdf0e10cSrcweir 
81*cdf0e10cSrcweir     CPPUNIT_TEST_SUITE(compare);
82*cdf0e10cSrcweir     CPPUNIT_TEST(compare_000);
83*cdf0e10cSrcweir     CPPUNIT_TEST(compare_000_1);
84*cdf0e10cSrcweir     CPPUNIT_TEST(compare_001);
85*cdf0e10cSrcweir     CPPUNIT_TEST(compare_002);
86*cdf0e10cSrcweir     CPPUNIT_TEST(compare_003);
87*cdf0e10cSrcweir     CPPUNIT_TEST_SUITE_END();
88*cdf0e10cSrcweir }; // class compare
89*cdf0e10cSrcweir 
90*cdf0e10cSrcweir 
91*cdf0e10cSrcweir     class compareIgnoreAsciiCase : public CppUnit::TestFixture
92*cdf0e10cSrcweir     {
93*cdf0e10cSrcweir     public:
94*cdf0e10cSrcweir 
95*cdf0e10cSrcweir         void compare_000()
96*cdf0e10cSrcweir             {
97*cdf0e10cSrcweir                 rtl_str_compareIgnoreAsciiCase( NULL, NULL);
98*cdf0e10cSrcweir             }
99*cdf0e10cSrcweir 
100*cdf0e10cSrcweir         void compare_000_1()
101*cdf0e10cSrcweir             {
102*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must be equal.";
103*cdf0e10cSrcweir                 rtl_str_compareIgnoreAsciiCase( aStr1.getStr(), NULL);
104*cdf0e10cSrcweir             }
105*cdf0e10cSrcweir         void compare_001()
106*cdf0e10cSrcweir             {
107*cdf0e10cSrcweir                 rtl::OString aStr1 = "";
108*cdf0e10cSrcweir                 rtl::OString aStr2 = "";
109*cdf0e10cSrcweir 
110*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
111*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
112*cdf0e10cSrcweir             }
113*cdf0e10cSrcweir 
114*cdf0e10cSrcweir         void compare_002()
115*cdf0e10cSrcweir             {
116*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must be equal.";
117*cdf0e10cSrcweir                 rtl::OString aStr2 = "Line must be equal.";
118*cdf0e10cSrcweir 
119*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
120*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
121*cdf0e10cSrcweir             }
122*cdf0e10cSrcweir 
123*cdf0e10cSrcweir         void compare_002_1()
124*cdf0e10cSrcweir             {
125*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must be equal.";
126*cdf0e10cSrcweir                 rtl::OString aStr2 = "LINE MUST BE EQUAL.";
127*cdf0e10cSrcweir 
128*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
129*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
130*cdf0e10cSrcweir             }
131*cdf0e10cSrcweir 
132*cdf0e10cSrcweir         void compare_003()
133*cdf0e10cSrcweir             {
134*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must differ.";
135*cdf0e10cSrcweir                 rtl::OString aStr2 = "Line foo bar, ok, differ.";
136*cdf0e10cSrcweir 
137*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_compareIgnoreAsciiCase( aStr1.getStr(), aStr2.getStr());
138*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
139*cdf0e10cSrcweir             }
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir     // Change the following lines only, if you add, remove or rename
142*cdf0e10cSrcweir     // member functions of the current class,
143*cdf0e10cSrcweir     // because these macros are need by auto register mechanism.
144*cdf0e10cSrcweir 
145*cdf0e10cSrcweir     CPPUNIT_TEST_SUITE(compareIgnoreAsciiCase);
146*cdf0e10cSrcweir     CPPUNIT_TEST(compare_000);
147*cdf0e10cSrcweir     CPPUNIT_TEST(compare_000_1);
148*cdf0e10cSrcweir     CPPUNIT_TEST(compare_001);
149*cdf0e10cSrcweir     CPPUNIT_TEST(compare_002);
150*cdf0e10cSrcweir     CPPUNIT_TEST(compare_002_1);
151*cdf0e10cSrcweir     CPPUNIT_TEST(compare_003);
152*cdf0e10cSrcweir     CPPUNIT_TEST_SUITE_END();
153*cdf0e10cSrcweir     }; // class compareIgnoreAsciiCase
154*cdf0e10cSrcweir 
155*cdf0e10cSrcweir // -----------------------------------------------------------------------------
156*cdf0e10cSrcweir 
157*cdf0e10cSrcweir     class shortenedCompareIgnoreAsciiCase_WithLength : public CppUnit::TestFixture
158*cdf0e10cSrcweir     {
159*cdf0e10cSrcweir     public:
160*cdf0e10cSrcweir 
161*cdf0e10cSrcweir         void compare_000()
162*cdf0e10cSrcweir             {
163*cdf0e10cSrcweir                 rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( NULL, 0, NULL, 0, 0);
164*cdf0e10cSrcweir             }
165*cdf0e10cSrcweir 
166*cdf0e10cSrcweir         void compare_000_1()
167*cdf0e10cSrcweir             {
168*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must be equal.";
169*cdf0e10cSrcweir                 rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(), NULL, 0, 1);
170*cdf0e10cSrcweir             }
171*cdf0e10cSrcweir         void compare_001()
172*cdf0e10cSrcweir             {
173*cdf0e10cSrcweir                 rtl::OString aStr1 = "";
174*cdf0e10cSrcweir                 rtl::OString aStr2 = "";
175*cdf0e10cSrcweir 
176*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(), aStr2.getStr(), aStr2.getLength(), aStr1.getLength());
177*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
178*cdf0e10cSrcweir             }
179*cdf0e10cSrcweir 
180*cdf0e10cSrcweir         void compare_002()
181*cdf0e10cSrcweir             {
182*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must be equal.";
183*cdf0e10cSrcweir                 rtl::OString aStr2 = "Line must be equal.";
184*cdf0e10cSrcweir 
185*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
186*cdf0e10cSrcweir                                                                                        aStr2.getStr(), aStr2.getLength(),
187*cdf0e10cSrcweir                                                                                        aStr1.getLength());
188*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal.", nValue == 0);
189*cdf0e10cSrcweir             }
190*cdf0e10cSrcweir 
191*cdf0e10cSrcweir         void compare_002_1()
192*cdf0e10cSrcweir             {
193*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must be equal.";
194*cdf0e10cSrcweir                 rtl::OString aStr2 = "LINE MUST BE EQUAL.";
195*cdf0e10cSrcweir 
196*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
197*cdf0e10cSrcweir                                                                                        aStr2.getStr(), aStr2.getLength(),
198*cdf0e10cSrcweir                                                                                        aStr1.getLength());
199*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal (if case insensitve).", nValue == 0);
200*cdf0e10cSrcweir             }
201*cdf0e10cSrcweir 
202*cdf0e10cSrcweir         void compare_003()
203*cdf0e10cSrcweir             {
204*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must differ.";
205*cdf0e10cSrcweir                 rtl::OString aStr2 = "Line foo bar, ok, differ.";
206*cdf0e10cSrcweir 
207*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
208*cdf0e10cSrcweir                                                                                        aStr2.getStr(), aStr2.getLength(),
209*cdf0e10cSrcweir                                                                                        5);
210*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings are equal first 5 characters.", nValue == 0);
211*cdf0e10cSrcweir             }
212*cdf0e10cSrcweir 
213*cdf0e10cSrcweir         void compare_004()
214*cdf0e10cSrcweir             {
215*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line must differ.";
216*cdf0e10cSrcweir                 rtl::OString aStr2 = "Line foo bar, ok, differ.";
217*cdf0e10cSrcweir 
218*cdf0e10cSrcweir                 sal_Int32 nValue = rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( aStr1.getStr(), aStr1.getLength(),
219*cdf0e10cSrcweir                                                                                        aStr2.getStr(), aStr2.getLength(),
220*cdf0e10cSrcweir                                                                                        aStr1.getLength());
221*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("compare failed, strings differ.", nValue != 0);
222*cdf0e10cSrcweir             }
223*cdf0e10cSrcweir 
224*cdf0e10cSrcweir     // Change the following lines only, if you add, remove or rename
225*cdf0e10cSrcweir     // member functions of the current class,
226*cdf0e10cSrcweir     // because these macros are need by auto register mechanism.
227*cdf0e10cSrcweir 
228*cdf0e10cSrcweir     CPPUNIT_TEST_SUITE(shortenedCompareIgnoreAsciiCase_WithLength);
229*cdf0e10cSrcweir     CPPUNIT_TEST(compare_000);
230*cdf0e10cSrcweir     CPPUNIT_TEST(compare_000_1);
231*cdf0e10cSrcweir     CPPUNIT_TEST(compare_001);
232*cdf0e10cSrcweir     CPPUNIT_TEST(compare_002);
233*cdf0e10cSrcweir     CPPUNIT_TEST(compare_002_1);
234*cdf0e10cSrcweir     CPPUNIT_TEST(compare_003);
235*cdf0e10cSrcweir     CPPUNIT_TEST(compare_004);
236*cdf0e10cSrcweir     CPPUNIT_TEST_SUITE_END();
237*cdf0e10cSrcweir }; // class compare
238*cdf0e10cSrcweir 
239*cdf0e10cSrcweir 
240*cdf0e10cSrcweir // -----------------------------------------------------------------------------
241*cdf0e10cSrcweir 
242*cdf0e10cSrcweir     class hashCode : public CppUnit::TestFixture
243*cdf0e10cSrcweir     {
244*cdf0e10cSrcweir     public:
245*cdf0e10cSrcweir 
246*cdf0e10cSrcweir         void hashCode_000()
247*cdf0e10cSrcweir             {
248*cdf0e10cSrcweir                 rtl_str_hashCode( NULL );
249*cdf0e10cSrcweir             }
250*cdf0e10cSrcweir 
251*cdf0e10cSrcweir         void hashCode_001()
252*cdf0e10cSrcweir             {
253*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a hashCode.";
254*cdf0e10cSrcweir                 sal_Int32 nHashCode = rtl_str_hashCode( aStr1.getStr() );
255*cdf0e10cSrcweir                 t_print("hashcode: %d\n", nHashCode);
256*cdf0e10cSrcweir                 // CPPUNIT_ASSERT_MESSAGE("failed.", nValue == 0);
257*cdf0e10cSrcweir             }
258*cdf0e10cSrcweir 
259*cdf0e10cSrcweir         void hashCode_002()
260*cdf0e10cSrcweir             {
261*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a hashCode.";
262*cdf0e10cSrcweir                 sal_Int32 nHashCode1 = rtl_str_hashCode( aStr1.getStr() );
263*cdf0e10cSrcweir 
264*cdf0e10cSrcweir                 rtl::OString aStr2 = "Line for a hashCode.";
265*cdf0e10cSrcweir                 sal_Int32 nHashCode2 = rtl_str_hashCode( aStr2.getStr() );
266*cdf0e10cSrcweir 
267*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("hashcodes must be equal.", nHashCode1 == nHashCode2 );
268*cdf0e10cSrcweir             }
269*cdf0e10cSrcweir 
270*cdf0e10cSrcweir         void hashCode_003()
271*cdf0e10cSrcweir             {
272*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a hashCode.";
273*cdf0e10cSrcweir                 sal_Int32 nHashCode1 = rtl_str_hashCode( aStr1.getStr() );
274*cdf0e10cSrcweir 
275*cdf0e10cSrcweir                 rtl::OString aStr2 = "Line for an other hashcode.";
276*cdf0e10cSrcweir                 sal_Int32 nHashCode2 = rtl_str_hashCode( aStr2.getStr() );
277*cdf0e10cSrcweir 
278*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("hashcodes must differ.", nHashCode1 != nHashCode2 );
279*cdf0e10cSrcweir             }
280*cdf0e10cSrcweir 
281*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
282*cdf0e10cSrcweir         // member functions of the current class,
283*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
284*cdf0e10cSrcweir 
285*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(hashCode);
286*cdf0e10cSrcweir         CPPUNIT_TEST(hashCode_000);
287*cdf0e10cSrcweir         CPPUNIT_TEST(hashCode_001);
288*cdf0e10cSrcweir         CPPUNIT_TEST(hashCode_002);
289*cdf0e10cSrcweir         CPPUNIT_TEST(hashCode_003);
290*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
291*cdf0e10cSrcweir     }; // class compare
292*cdf0e10cSrcweir 
293*cdf0e10cSrcweir 
294*cdf0e10cSrcweir // -----------------------------------------------------------------------------
295*cdf0e10cSrcweir 
296*cdf0e10cSrcweir     class indexOfChar : public CppUnit::TestFixture
297*cdf0e10cSrcweir     {
298*cdf0e10cSrcweir     public:
299*cdf0e10cSrcweir 
300*cdf0e10cSrcweir         void indexOfChar_000()
301*cdf0e10cSrcweir             {
302*cdf0e10cSrcweir                 rtl_str_indexOfChar( NULL, 0 );
303*cdf0e10cSrcweir             }
304*cdf0e10cSrcweir 
305*cdf0e10cSrcweir         void indexOfChar_001()
306*cdf0e10cSrcweir             {
307*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a indexOfChar.";
308*cdf0e10cSrcweir 
309*cdf0e10cSrcweir                 sal_Int32 nIndex = rtl_str_indexOfChar( aStr1.getStr(), 'L' );
310*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 0);
311*cdf0e10cSrcweir 
312*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_indexOfChar( aStr1.getStr(), 'i' );
313*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 1);
314*cdf0e10cSrcweir 
315*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_indexOfChar( aStr1.getStr(), 'n' );
316*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 2);
317*cdf0e10cSrcweir 
318*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_indexOfChar( aStr1.getStr(), 'e' );
319*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 3);
320*cdf0e10cSrcweir             }
321*cdf0e10cSrcweir 
322*cdf0e10cSrcweir         void indexOfChar_002()
323*cdf0e10cSrcweir             {
324*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a indexOfChar.";
325*cdf0e10cSrcweir                 sal_Int32 nIndex = rtl_str_indexOfChar( aStr1.getStr(), 'y' );
326*cdf0e10cSrcweir 
327*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
328*cdf0e10cSrcweir             }
329*cdf0e10cSrcweir 
330*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
331*cdf0e10cSrcweir         // member functions of the current class,
332*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
333*cdf0e10cSrcweir 
334*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(indexOfChar);
335*cdf0e10cSrcweir         CPPUNIT_TEST(indexOfChar_000);
336*cdf0e10cSrcweir         CPPUNIT_TEST(indexOfChar_001);
337*cdf0e10cSrcweir         CPPUNIT_TEST(indexOfChar_002);
338*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
339*cdf0e10cSrcweir     }; // class compare
340*cdf0e10cSrcweir 
341*cdf0e10cSrcweir // -----------------------------------------------------------------------------
342*cdf0e10cSrcweir     class lastIndexOfChar : public CppUnit::TestFixture
343*cdf0e10cSrcweir     {
344*cdf0e10cSrcweir     public:
345*cdf0e10cSrcweir 
346*cdf0e10cSrcweir         void lastIndexOfChar_000()
347*cdf0e10cSrcweir             {
348*cdf0e10cSrcweir                 rtl_str_lastIndexOfChar( NULL, 0 );
349*cdf0e10cSrcweir             }
350*cdf0e10cSrcweir 
351*cdf0e10cSrcweir         void lastIndexOfChar_001()
352*cdf0e10cSrcweir             {
353*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a lastIndexOfChar.";
354*cdf0e10cSrcweir 
355*cdf0e10cSrcweir                 sal_Int32 nIndex = rtl_str_lastIndexOfChar( aStr1.getStr(), 'C' );
356*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 22);
357*cdf0e10cSrcweir 
358*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_lastIndexOfChar( aStr1.getStr(), 'h' );
359*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 23);
360*cdf0e10cSrcweir 
361*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_lastIndexOfChar( aStr1.getStr(), 'a' );
362*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 24);
363*cdf0e10cSrcweir 
364*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_lastIndexOfChar( aStr1.getStr(), 'r' );
365*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 25);
366*cdf0e10cSrcweir             }
367*cdf0e10cSrcweir 
368*cdf0e10cSrcweir         void lastIndexOfChar_002()
369*cdf0e10cSrcweir             {
370*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a lastIndexOfChar.";
371*cdf0e10cSrcweir                 sal_Int32 nIndex = rtl_str_lastIndexOfChar( aStr1.getStr(), 'y' );
372*cdf0e10cSrcweir 
373*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
374*cdf0e10cSrcweir             }
375*cdf0e10cSrcweir 
376*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
377*cdf0e10cSrcweir         // member functions of the current class,
378*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
379*cdf0e10cSrcweir 
380*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(lastIndexOfChar);
381*cdf0e10cSrcweir         CPPUNIT_TEST(lastIndexOfChar_000);
382*cdf0e10cSrcweir         CPPUNIT_TEST(lastIndexOfChar_001);
383*cdf0e10cSrcweir         CPPUNIT_TEST(lastIndexOfChar_002);
384*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
385*cdf0e10cSrcweir     }; // class lastIndexOfChar
386*cdf0e10cSrcweir 
387*cdf0e10cSrcweir 
388*cdf0e10cSrcweir // -----------------------------------------------------------------------------
389*cdf0e10cSrcweir 
390*cdf0e10cSrcweir     class indexOfStr : public CppUnit::TestFixture
391*cdf0e10cSrcweir     {
392*cdf0e10cSrcweir     public:
393*cdf0e10cSrcweir 
394*cdf0e10cSrcweir         void indexOfStr_000()
395*cdf0e10cSrcweir             {
396*cdf0e10cSrcweir                 rtl_str_indexOfStr( NULL, 0 );
397*cdf0e10cSrcweir             }
398*cdf0e10cSrcweir 
399*cdf0e10cSrcweir         void indexOfStr_000_1()
400*cdf0e10cSrcweir             {
401*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a indexOfStr.";
402*cdf0e10cSrcweir                 rtl_str_indexOfStr( aStr1.getStr(), 0 );
403*cdf0e10cSrcweir             }
404*cdf0e10cSrcweir 
405*cdf0e10cSrcweir         void indexOfStr_001()
406*cdf0e10cSrcweir             {
407*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a indexOfStr.";
408*cdf0e10cSrcweir 
409*cdf0e10cSrcweir                 sal_Int32 nIndex = rtl_str_indexOfStr( aStr1.getStr(), "Line" );
410*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 0);
411*cdf0e10cSrcweir 
412*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_indexOfStr( aStr1.getStr(), "for" );
413*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 5);
414*cdf0e10cSrcweir 
415*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_indexOfStr( aStr1.getStr(), "a" );
416*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 9);
417*cdf0e10cSrcweir 
418*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_indexOfStr( aStr1.getStr(), "a index" );
419*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex ==9);
420*cdf0e10cSrcweir             }
421*cdf0e10cSrcweir 
422*cdf0e10cSrcweir         void indexOfStr_002()
423*cdf0e10cSrcweir             {
424*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a indexOfStr.";
425*cdf0e10cSrcweir                 sal_Int32 nIndex = rtl_str_indexOfStr( aStr1.getStr(), "not exist" );
426*cdf0e10cSrcweir 
427*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
428*cdf0e10cSrcweir             }
429*cdf0e10cSrcweir 
430*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
431*cdf0e10cSrcweir         // member functions of the current class,
432*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
433*cdf0e10cSrcweir 
434*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(indexOfStr);
435*cdf0e10cSrcweir         CPPUNIT_TEST(indexOfStr_000);
436*cdf0e10cSrcweir         CPPUNIT_TEST(indexOfStr_001);
437*cdf0e10cSrcweir         CPPUNIT_TEST(indexOfStr_002);
438*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
439*cdf0e10cSrcweir     }; // class compare
440*cdf0e10cSrcweir // -----------------------------------------------------------------------------
441*cdf0e10cSrcweir 
442*cdf0e10cSrcweir 
443*cdf0e10cSrcweir     class lastIndexOfStr : public CppUnit::TestFixture
444*cdf0e10cSrcweir     {
445*cdf0e10cSrcweir     public:
446*cdf0e10cSrcweir 
447*cdf0e10cSrcweir         void lastIndexOfStr_000()
448*cdf0e10cSrcweir             {
449*cdf0e10cSrcweir                 rtl_str_lastIndexOfStr( NULL, NULL );
450*cdf0e10cSrcweir             }
451*cdf0e10cSrcweir 
452*cdf0e10cSrcweir         void lastIndexOfStr_000_1()
453*cdf0e10cSrcweir             {
454*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a lastIndexOfStr.";
455*cdf0e10cSrcweir                 rtl_str_lastIndexOfStr( aStr1.getStr(), NULL );
456*cdf0e10cSrcweir             }
457*cdf0e10cSrcweir 
458*cdf0e10cSrcweir         void lastIndexOfStr_001()
459*cdf0e10cSrcweir             {
460*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a lastIndexOfStr.";
461*cdf0e10cSrcweir                 rtl::OString aSearchStr = "Index";
462*cdf0e10cSrcweir 
463*cdf0e10cSrcweir                 sal_Int32 nIndex = rtl_str_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
464*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 15);
465*cdf0e10cSrcweir 
466*cdf0e10cSrcweir                 /* rtl::OString */ aSearchStr = "Line";
467*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
468*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 0);
469*cdf0e10cSrcweir 
470*cdf0e10cSrcweir                 /* rtl::OString */ aSearchStr = "";
471*cdf0e10cSrcweir                 /* sal_Int32 */ nIndex = rtl_str_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
472*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1);
473*cdf0e10cSrcweir             }
474*cdf0e10cSrcweir 
475*cdf0e10cSrcweir         void lastIndexOfStr_002()
476*cdf0e10cSrcweir             {
477*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a lastIndexOfStr.";
478*cdf0e10cSrcweir                 rtl::OString aSearchStr = "foo";
479*cdf0e10cSrcweir                 sal_Int32 nIndex = rtl_str_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
480*cdf0e10cSrcweir 
481*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == -1 );
482*cdf0e10cSrcweir             }
483*cdf0e10cSrcweir 
484*cdf0e10cSrcweir         void lastIndexOfStr_003()
485*cdf0e10cSrcweir             {
486*cdf0e10cSrcweir                 rtl::OString aStr1 = "Line for a lastIndexOfStr.";
487*cdf0e10cSrcweir                 rtl::OString aSearchStr = "O";
488*cdf0e10cSrcweir                 sal_Int32 nIndex = rtl_str_lastIndexOfStr( aStr1.getStr(), aSearchStr.getStr() );
489*cdf0e10cSrcweir 
490*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("index is wrong.", nIndex == 20 );
491*cdf0e10cSrcweir             }
492*cdf0e10cSrcweir 
493*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
494*cdf0e10cSrcweir         // member functions of the current class,
495*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
496*cdf0e10cSrcweir 
497*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(lastIndexOfStr);
498*cdf0e10cSrcweir         CPPUNIT_TEST(lastIndexOfStr_000);
499*cdf0e10cSrcweir         CPPUNIT_TEST(lastIndexOfStr_001);
500*cdf0e10cSrcweir         CPPUNIT_TEST(lastIndexOfStr_002);
501*cdf0e10cSrcweir         CPPUNIT_TEST(lastIndexOfStr_003);
502*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
503*cdf0e10cSrcweir     }; // class lastIndexOfStr
504*cdf0e10cSrcweir 
505*cdf0e10cSrcweir // -----------------------------------------------------------------------------
506*cdf0e10cSrcweir 
507*cdf0e10cSrcweir     class replaceChar : public CppUnit::TestFixture
508*cdf0e10cSrcweir     {
509*cdf0e10cSrcweir     public:
510*cdf0e10cSrcweir 
511*cdf0e10cSrcweir         void replaceChar_000()
512*cdf0e10cSrcweir             {
513*cdf0e10cSrcweir                 rtl_str_replaceChar( NULL, 0, 0 );
514*cdf0e10cSrcweir             }
515*cdf0e10cSrcweir 
516*cdf0e10cSrcweir         void replaceChar_001()
517*cdf0e10cSrcweir             {
518*cdf0e10cSrcweir                 rtl::OString aStr1 = "replace char.";
519*cdf0e10cSrcweir                 rtl::OString aShouldStr1 = "ruplacu char.";
520*cdf0e10cSrcweir 
521*cdf0e10cSrcweir                 sal_Char* pStr = (sal_Char*) malloc(aStr1.getLength() + 1);
522*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
523*cdf0e10cSrcweir                 strcpy(pStr, aStr1.getStr());
524*cdf0e10cSrcweir 
525*cdf0e10cSrcweir                 rtl_str_replaceChar( pStr, 'e', 'u' );
526*cdf0e10cSrcweir 
527*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("replace failed", aShouldStr1.equals(rtl::OString(pStr)) == sal_True);
528*cdf0e10cSrcweir                 free(pStr);
529*cdf0e10cSrcweir             }
530*cdf0e10cSrcweir 
531*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
532*cdf0e10cSrcweir         // member functions of the current class,
533*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
534*cdf0e10cSrcweir 
535*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(replaceChar);
536*cdf0e10cSrcweir         CPPUNIT_TEST(replaceChar_000);
537*cdf0e10cSrcweir         CPPUNIT_TEST(replaceChar_001);
538*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
539*cdf0e10cSrcweir     }; // class replaceChar
540*cdf0e10cSrcweir 
541*cdf0e10cSrcweir // -----------------------------------------------------------------------------
542*cdf0e10cSrcweir 
543*cdf0e10cSrcweir     class replaceChar_WithLength : public CppUnit::TestFixture
544*cdf0e10cSrcweir     {
545*cdf0e10cSrcweir     public:
546*cdf0e10cSrcweir 
547*cdf0e10cSrcweir         void replaceChar_WithLength_000()
548*cdf0e10cSrcweir             {
549*cdf0e10cSrcweir                 rtl_str_replaceChar_WithLength( NULL, 0, 0, 0 );
550*cdf0e10cSrcweir             }
551*cdf0e10cSrcweir 
552*cdf0e10cSrcweir         void replaceChar_WithLength_000_1()
553*cdf0e10cSrcweir             {
554*cdf0e10cSrcweir                 rtl_str_replaceChar_WithLength( NULL, 1, 0, 0 );
555*cdf0e10cSrcweir             }
556*cdf0e10cSrcweir         void replaceChar_WithLength_001()
557*cdf0e10cSrcweir             {
558*cdf0e10cSrcweir                 rtl::OString aStr1 = "replace char.";
559*cdf0e10cSrcweir                 rtl::OString aShouldStr1 = "ruplace char.";
560*cdf0e10cSrcweir 
561*cdf0e10cSrcweir                 sal_Char* pStr = (sal_Char*) malloc(aStr1.getLength() + 1);
562*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
563*cdf0e10cSrcweir                 strcpy(pStr, aStr1.getStr());
564*cdf0e10cSrcweir 
565*cdf0e10cSrcweir                 rtl_str_replaceChar_WithLength( pStr, 6, 'e', 'u' );
566*cdf0e10cSrcweir 
567*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("replace failed", aShouldStr1.equals(rtl::OString(pStr)) == sal_True);
568*cdf0e10cSrcweir                 free(pStr);
569*cdf0e10cSrcweir             }
570*cdf0e10cSrcweir 
571*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
572*cdf0e10cSrcweir         // member functions of the current class,
573*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
574*cdf0e10cSrcweir 
575*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(replaceChar_WithLength);
576*cdf0e10cSrcweir         CPPUNIT_TEST(replaceChar_WithLength_000);
577*cdf0e10cSrcweir         CPPUNIT_TEST(replaceChar_WithLength_000_1);
578*cdf0e10cSrcweir         CPPUNIT_TEST(replaceChar_WithLength_001);
579*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
580*cdf0e10cSrcweir     }; // class replaceChar
581*cdf0e10cSrcweir 
582*cdf0e10cSrcweir 
583*cdf0e10cSrcweir // -----------------------------------------------------------------------------
584*cdf0e10cSrcweir 
585*cdf0e10cSrcweir     class toAsciiLowerCase : public CppUnit::TestFixture
586*cdf0e10cSrcweir     {
587*cdf0e10cSrcweir     public:
588*cdf0e10cSrcweir 
589*cdf0e10cSrcweir         void toAsciiLowerCase_000()
590*cdf0e10cSrcweir             {
591*cdf0e10cSrcweir                 rtl_str_toAsciiLowerCase( NULL );
592*cdf0e10cSrcweir             }
593*cdf0e10cSrcweir 
594*cdf0e10cSrcweir         void toAsciiLowerCase_001()
595*cdf0e10cSrcweir             {
596*cdf0e10cSrcweir                 rtl::OString aStr1 = "CHANGE THIS TO ASCII LOWER CASE.";
597*cdf0e10cSrcweir                 rtl::OString aShouldStr1 = "change this to ascii lower case.";
598*cdf0e10cSrcweir 
599*cdf0e10cSrcweir                 sal_Char* pStr = (sal_Char*) malloc(aStr1.getLength() + 1);
600*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
601*cdf0e10cSrcweir                 strcpy(pStr, aStr1.getStr());
602*cdf0e10cSrcweir 
603*cdf0e10cSrcweir                 rtl_str_toAsciiLowerCase( pStr );
604*cdf0e10cSrcweir 
605*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(rtl::OString(pStr)) == sal_True);
606*cdf0e10cSrcweir                 free(pStr);
607*cdf0e10cSrcweir             }
608*cdf0e10cSrcweir 
609*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
610*cdf0e10cSrcweir         // member functions of the current class,
611*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
612*cdf0e10cSrcweir 
613*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(toAsciiLowerCase);
614*cdf0e10cSrcweir         CPPUNIT_TEST(toAsciiLowerCase_000);
615*cdf0e10cSrcweir         CPPUNIT_TEST(toAsciiLowerCase_001);
616*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
617*cdf0e10cSrcweir     }; // class replaceChar
618*cdf0e10cSrcweir 
619*cdf0e10cSrcweir 
620*cdf0e10cSrcweir     class toAsciiLowerCase_WithLength : public CppUnit::TestFixture
621*cdf0e10cSrcweir     {
622*cdf0e10cSrcweir     public:
623*cdf0e10cSrcweir 
624*cdf0e10cSrcweir         void toAsciiLowerCase_WithLength_000()
625*cdf0e10cSrcweir             {
626*cdf0e10cSrcweir                 rtl_str_toAsciiLowerCase_WithLength( NULL, 0 );
627*cdf0e10cSrcweir             }
628*cdf0e10cSrcweir 
629*cdf0e10cSrcweir         void toAsciiLowerCase_WithLength_001()
630*cdf0e10cSrcweir             {
631*cdf0e10cSrcweir                 rtl::OString aStr1 = "CHANGE THIS TO ASCII LOWER CASE.";
632*cdf0e10cSrcweir                 rtl::OString aShouldStr1 = "change thiS TO ASCII LOWER CASE.";
633*cdf0e10cSrcweir 
634*cdf0e10cSrcweir                 sal_Char* pStr = (sal_Char*) malloc(aStr1.getLength() + 1);
635*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
636*cdf0e10cSrcweir                 strcpy(pStr, aStr1.getStr());
637*cdf0e10cSrcweir 
638*cdf0e10cSrcweir                 rtl_str_toAsciiLowerCase_WithLength( pStr, 10 );
639*cdf0e10cSrcweir 
640*cdf0e10cSrcweir                 t_print("Lowercase with length: '%s'\n", pStr);
641*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(rtl::OString(pStr)) == sal_True);
642*cdf0e10cSrcweir                 free(pStr);
643*cdf0e10cSrcweir             }
644*cdf0e10cSrcweir 
645*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
646*cdf0e10cSrcweir         // member functions of the current class,
647*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
648*cdf0e10cSrcweir 
649*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(toAsciiLowerCase_WithLength);
650*cdf0e10cSrcweir         CPPUNIT_TEST(toAsciiLowerCase_WithLength_000);
651*cdf0e10cSrcweir         CPPUNIT_TEST(toAsciiLowerCase_WithLength_001);
652*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
653*cdf0e10cSrcweir     }; // class replaceChar
654*cdf0e10cSrcweir 
655*cdf0e10cSrcweir // -----------------------------------------------------------------------------
656*cdf0e10cSrcweir 
657*cdf0e10cSrcweir     class toAsciiUpperCase : public CppUnit::TestFixture
658*cdf0e10cSrcweir     {
659*cdf0e10cSrcweir     public:
660*cdf0e10cSrcweir 
661*cdf0e10cSrcweir         void toAsciiUpperCase_000()
662*cdf0e10cSrcweir             {
663*cdf0e10cSrcweir                 rtl_str_toAsciiUpperCase( NULL );
664*cdf0e10cSrcweir             }
665*cdf0e10cSrcweir 
666*cdf0e10cSrcweir         void toAsciiUpperCase_001()
667*cdf0e10cSrcweir             {
668*cdf0e10cSrcweir                 rtl::OString aStr1 = "change this to ascii upper case.";
669*cdf0e10cSrcweir                 rtl::OString aShouldStr1 = "CHANGE THIS TO ASCII UPPER CASE.";
670*cdf0e10cSrcweir 
671*cdf0e10cSrcweir                 sal_Char* pStr = (sal_Char*) malloc(aStr1.getLength() + 1);
672*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
673*cdf0e10cSrcweir                 strcpy(pStr, aStr1.getStr());
674*cdf0e10cSrcweir 
675*cdf0e10cSrcweir                 rtl_str_toAsciiUpperCase( pStr );
676*cdf0e10cSrcweir 
677*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(rtl::OString(pStr)) == sal_True);
678*cdf0e10cSrcweir                 free(pStr);
679*cdf0e10cSrcweir             }
680*cdf0e10cSrcweir 
681*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
682*cdf0e10cSrcweir         // member functions of the current class,
683*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
684*cdf0e10cSrcweir 
685*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(toAsciiUpperCase);
686*cdf0e10cSrcweir         CPPUNIT_TEST(toAsciiUpperCase_000);
687*cdf0e10cSrcweir         CPPUNIT_TEST(toAsciiUpperCase_001);
688*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
689*cdf0e10cSrcweir     }; // class replaceChar
690*cdf0e10cSrcweir 
691*cdf0e10cSrcweir 
692*cdf0e10cSrcweir     class toAsciiUpperCase_WithLength : public CppUnit::TestFixture
693*cdf0e10cSrcweir     {
694*cdf0e10cSrcweir     public:
695*cdf0e10cSrcweir 
696*cdf0e10cSrcweir         void toAsciiUpperCase_WithLength_000()
697*cdf0e10cSrcweir             {
698*cdf0e10cSrcweir                 rtl_str_toAsciiUpperCase_WithLength( NULL, 0 );
699*cdf0e10cSrcweir             }
700*cdf0e10cSrcweir 
701*cdf0e10cSrcweir         void toAsciiUpperCase_WithLength_001()
702*cdf0e10cSrcweir             {
703*cdf0e10cSrcweir                 rtl::OString aStr1 = "change this to ascii lower case.";
704*cdf0e10cSrcweir                 rtl::OString aShouldStr1 = "CHANGE THIs to ascii lower case.";
705*cdf0e10cSrcweir 
706*cdf0e10cSrcweir                 sal_Char* pStr = (sal_Char*) malloc(aStr1.getLength() + 1);
707*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("can't get memory for test", pStr != NULL);
708*cdf0e10cSrcweir 
709*cdf0e10cSrcweir                 strcpy(pStr, aStr1.getStr());
710*cdf0e10cSrcweir                 rtl_str_toAsciiUpperCase_WithLength( pStr, 10 );
711*cdf0e10cSrcweir 
712*cdf0e10cSrcweir                 t_print("Uppercase with length: '%s'\n", aStr1.getStr());
713*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("failed", aShouldStr1.equals(rtl::OString(pStr)) == sal_True);
714*cdf0e10cSrcweir                 free(pStr);
715*cdf0e10cSrcweir             }
716*cdf0e10cSrcweir 
717*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
718*cdf0e10cSrcweir         // member functions of the current class,
719*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
720*cdf0e10cSrcweir 
721*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(toAsciiUpperCase_WithLength);
722*cdf0e10cSrcweir         CPPUNIT_TEST(toAsciiUpperCase_WithLength_000);
723*cdf0e10cSrcweir         CPPUNIT_TEST(toAsciiUpperCase_WithLength_001);
724*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
725*cdf0e10cSrcweir     }; // class replaceChar
726*cdf0e10cSrcweir 
727*cdf0e10cSrcweir 
728*cdf0e10cSrcweir     // -----------------------------------------------------------------------------
729*cdf0e10cSrcweir 
730*cdf0e10cSrcweir     class trim_WithLength : public CppUnit::TestFixture
731*cdf0e10cSrcweir     {
732*cdf0e10cSrcweir       public:
733*cdf0e10cSrcweir         void trim_WithLength_000()
734*cdf0e10cSrcweir         {
735*cdf0e10cSrcweir             rtl_str_trim_WithLength(NULL, 0);
736*cdf0e10cSrcweir             // should not GPF
737*cdf0e10cSrcweir         }
738*cdf0e10cSrcweir 
739*cdf0e10cSrcweir         void trim_WithLength_000_1()
740*cdf0e10cSrcweir         {
741*cdf0e10cSrcweir             char pStr[] = { "  trim this" };
742*cdf0e10cSrcweir             rtl_str_trim_WithLength( pStr, 0 );
743*cdf0e10cSrcweir         }
744*cdf0e10cSrcweir 
745*cdf0e10cSrcweir         void trim_WithLength_001()
746*cdf0e10cSrcweir         {
747*cdf0e10cSrcweir             char const *pStr = "  trim this";
748*cdf0e10cSrcweir             sal_Char *pStr2 = (sal_Char*)malloc(strlen(pStr) + 1);
749*cdf0e10cSrcweir             if (pStr2)
750*cdf0e10cSrcweir             {
751*cdf0e10cSrcweir                 strcpy(pStr2, pStr);
752*cdf0e10cSrcweir                 rtl_str_trim_WithLength( pStr2, 2 );
753*cdf0e10cSrcweir 
754*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("string should be empty", strlen(pStr2) == 0);
755*cdf0e10cSrcweir                 free(pStr2);
756*cdf0e10cSrcweir             }
757*cdf0e10cSrcweir         }
758*cdf0e10cSrcweir 
759*cdf0e10cSrcweir         void trim_WithLength_002()
760*cdf0e10cSrcweir         {
761*cdf0e10cSrcweir             char const *pStr = "trim this";
762*cdf0e10cSrcweir             sal_Char *pStr2 = (sal_Char*)malloc(strlen(pStr) + 1);
763*cdf0e10cSrcweir             if (pStr2)
764*cdf0e10cSrcweir             {
765*cdf0e10cSrcweir                 strcpy(pStr2, pStr);
766*cdf0e10cSrcweir                 rtl_str_trim_WithLength( pStr2, 5 );
767*cdf0e10cSrcweir 
768*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", strlen(pStr2) == 4);
769*cdf0e10cSrcweir                 free(pStr2);
770*cdf0e10cSrcweir             }
771*cdf0e10cSrcweir         }
772*cdf0e10cSrcweir 
773*cdf0e10cSrcweir         void trim_WithLength_003()
774*cdf0e10cSrcweir         {
775*cdf0e10cSrcweir             char const *pStr = "     trim   this";
776*cdf0e10cSrcweir             sal_Char *pStr2 = (sal_Char*)malloc(strlen(pStr) + 1);
777*cdf0e10cSrcweir             if (pStr2)
778*cdf0e10cSrcweir             {
779*cdf0e10cSrcweir                 strcpy(pStr2, pStr);
780*cdf0e10cSrcweir                 rtl_str_trim_WithLength( pStr2, 11 );
781*cdf0e10cSrcweir 
782*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", strlen(pStr2) == 4);
783*cdf0e10cSrcweir                 free(pStr2);
784*cdf0e10cSrcweir             }
785*cdf0e10cSrcweir         }
786*cdf0e10cSrcweir 
787*cdf0e10cSrcweir         void trim_WithLength_004()
788*cdf0e10cSrcweir         {
789*cdf0e10cSrcweir             char const *pStr = "\r\n\t \n\r    trim  \n this";
790*cdf0e10cSrcweir             sal_Char *pStr2 = (sal_Char*)malloc(strlen(pStr) + 1);
791*cdf0e10cSrcweir             if (pStr2)
792*cdf0e10cSrcweir             {
793*cdf0e10cSrcweir                 strcpy(pStr2, pStr);
794*cdf0e10cSrcweir                 rtl_str_trim_WithLength( pStr2, 17 );
795*cdf0e10cSrcweir 
796*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", strlen(pStr2) == 4);
797*cdf0e10cSrcweir                 free(pStr2);
798*cdf0e10cSrcweir             }
799*cdf0e10cSrcweir         }
800*cdf0e10cSrcweir 
801*cdf0e10cSrcweir         void trim_WithLength_005()
802*cdf0e10cSrcweir         {
803*cdf0e10cSrcweir             char const *pStr = "\r\n\t \n\r    trim \t this \n\r\t\t     ";
804*cdf0e10cSrcweir             sal_Char *pStr2 = (sal_Char*)malloc(strlen(pStr) + 1);
805*cdf0e10cSrcweir             if (pStr2)
806*cdf0e10cSrcweir             {
807*cdf0e10cSrcweir                 strcpy(pStr2, pStr);
808*cdf0e10cSrcweir                 rtl_str_trim_WithLength( pStr2, strlen(pStr2) );
809*cdf0e10cSrcweir 
810*cdf0e10cSrcweir                 CPPUNIT_ASSERT_MESSAGE("string should contain 'trim'", strlen(pStr2) == 11);
811*cdf0e10cSrcweir                 free(pStr2);
812*cdf0e10cSrcweir             }
813*cdf0e10cSrcweir         }
814*cdf0e10cSrcweir 
815*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
816*cdf0e10cSrcweir         // member functions of the current class,
817*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
818*cdf0e10cSrcweir 
819*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(trim_WithLength);
820*cdf0e10cSrcweir         CPPUNIT_TEST(trim_WithLength_000);
821*cdf0e10cSrcweir         CPPUNIT_TEST(trim_WithLength_000_1);
822*cdf0e10cSrcweir         CPPUNIT_TEST(trim_WithLength_001);
823*cdf0e10cSrcweir         CPPUNIT_TEST(trim_WithLength_002);
824*cdf0e10cSrcweir         CPPUNIT_TEST(trim_WithLength_003);
825*cdf0e10cSrcweir         CPPUNIT_TEST(trim_WithLength_004);
826*cdf0e10cSrcweir         CPPUNIT_TEST(trim_WithLength_005);
827*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
828*cdf0e10cSrcweir     };
829*cdf0e10cSrcweir 
830*cdf0e10cSrcweir     // -----------------------------------------------------------------------------
831*cdf0e10cSrcweir 
832*cdf0e10cSrcweir     class valueOfChar : public CppUnit::TestFixture
833*cdf0e10cSrcweir     {
834*cdf0e10cSrcweir       public:
835*cdf0e10cSrcweir         void valueOfChar_000()
836*cdf0e10cSrcweir             {
837*cdf0e10cSrcweir                 rtl_str_valueOfChar(NULL, 0);
838*cdf0e10cSrcweir                 // should not GPF
839*cdf0e10cSrcweir             }
840*cdf0e10cSrcweir         void valueOfChar_001()
841*cdf0e10cSrcweir             {
842*cdf0e10cSrcweir                 sal_Char *pStr = (sal_Char*)malloc(RTL_STR_MAX_VALUEOFCHAR);
843*cdf0e10cSrcweir                 if (pStr)
844*cdf0e10cSrcweir                 {
845*cdf0e10cSrcweir                     rtl_str_valueOfChar(pStr, 'A');
846*cdf0e10cSrcweir 
847*cdf0e10cSrcweir                     CPPUNIT_ASSERT_MESSAGE("string should contain 'A'", pStr[0] == 'A');
848*cdf0e10cSrcweir                     free(pStr);
849*cdf0e10cSrcweir                 }
850*cdf0e10cSrcweir             }
851*cdf0e10cSrcweir 
852*cdf0e10cSrcweir         // Change the following lines only, if you add, remove or rename
853*cdf0e10cSrcweir         // member functions of the current class,
854*cdf0e10cSrcweir         // because these macros are need by auto register mechanism.
855*cdf0e10cSrcweir 
856*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE(valueOfChar);
857*cdf0e10cSrcweir         CPPUNIT_TEST(valueOfChar_000);
858*cdf0e10cSrcweir         CPPUNIT_TEST(valueOfChar_001);
859*cdf0e10cSrcweir         CPPUNIT_TEST_SUITE_END();
860*cdf0e10cSrcweir     };
861*cdf0e10cSrcweir 
862*cdf0e10cSrcweir // -----------------------------------------------------------------------------
863*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::compare, "rtl_str");
864*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::compareIgnoreAsciiCase, "rtl_str");
865*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::shortenedCompareIgnoreAsciiCase_WithLength, "rtl_str");
866*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::hashCode, "rtl_str");
867*cdf0e10cSrcweir 
868*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::indexOfChar, "rtl_str");
869*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::lastIndexOfChar, "rtl_str");
870*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::indexOfStr, "rtl_str");
871*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::lastIndexOfStr, "rtl_str");
872*cdf0e10cSrcweir 
873*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::replaceChar, "rtl_str");
874*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::replaceChar_WithLength, "rtl_str");
875*cdf0e10cSrcweir 
876*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::toAsciiLowerCase, "rtl_str");
877*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::toAsciiLowerCase_WithLength, "rtl_str");
878*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::toAsciiUpperCase, "rtl_str");
879*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::toAsciiUpperCase_WithLength, "rtl_str");
880*cdf0e10cSrcweir 
881*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::trim_WithLength, "rtl_str");
882*cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_str::valueOfChar, "rtl_str");
883*cdf0e10cSrcweir 
884*cdf0e10cSrcweir } // namespace rtl_str
885*cdf0e10cSrcweir 
886*cdf0e10cSrcweir // -----------------------------------------------------------------------------
887*cdf0e10cSrcweir 
888*cdf0e10cSrcweir // this macro creates an empty function, which will called by the RegisterAllFunctions()
889*cdf0e10cSrcweir // to let the user the possibility to also register some functions by hand.
890*cdf0e10cSrcweir NOADDITIONAL;
891