xref: /aoo41x/main/sal/qa/rtl/ostring/rtl_OString2.cxx (revision 87d2adbc)
1*87d2adbcSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*87d2adbcSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*87d2adbcSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*87d2adbcSAndrew Rist  * distributed with this work for additional information
6*87d2adbcSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*87d2adbcSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*87d2adbcSAndrew Rist  * "License"); you may not use this file except in compliance
9*87d2adbcSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*87d2adbcSAndrew Rist  *
11*87d2adbcSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*87d2adbcSAndrew Rist  *
13*87d2adbcSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*87d2adbcSAndrew Rist  * software distributed under the License is distributed on an
15*87d2adbcSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*87d2adbcSAndrew Rist  * KIND, either express or implied.  See the License for the
17*87d2adbcSAndrew Rist  * specific language governing permissions and limitations
18*87d2adbcSAndrew Rist  * under the License.
19*87d2adbcSAndrew Rist  *
20*87d2adbcSAndrew Rist  *************************************************************/
21*87d2adbcSAndrew Rist 
22*87d2adbcSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir 
25cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
26cdf0e10cSrcweir #include "precompiled_sal.hxx"
27cdf0e10cSrcweir // autogenerated file with codegen.pl
28cdf0e10cSrcweir // There exist some more test code in sal/qa/rtl_strings/rtl_OString.cxx
29cdf0e10cSrcweir 
30cdf0e10cSrcweir #include <testshl/simpleheader.hxx>
31cdf0e10cSrcweir #include "valueequal.hxx"
32cdf0e10cSrcweir 
33cdf0e10cSrcweir namespace rtl_OString
34cdf0e10cSrcweir {
35cdf0e10cSrcweir 
36cdf0e10cSrcweir class valueOf : public CppUnit::TestFixture
37cdf0e10cSrcweir {
valueOf_float_test_impl(float _nValue)38cdf0e10cSrcweir     void valueOf_float_test_impl(float _nValue)
39cdf0e10cSrcweir         {
40cdf0e10cSrcweir             rtl::OString sValue;
41cdf0e10cSrcweir             sValue = rtl::OString::valueOf( _nValue );
42cdf0e10cSrcweir             t_print(T_VERBOSE, "nFloat := %.9f  sValue := %s\n", _nValue, sValue.getStr());
43cdf0e10cSrcweir 
44cdf0e10cSrcweir             float nValueATOF = static_cast<float>(atof( sValue.getStr() ));
45cdf0e10cSrcweir 
46cdf0e10cSrcweir             bool bEqualResult = is_float_equal(_nValue, nValueATOF);
47cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Values are not equal.", bEqualResult == true);
48cdf0e10cSrcweir         }
49cdf0e10cSrcweir 
valueOf_float_test(float _nValue)50cdf0e10cSrcweir     void valueOf_float_test(float _nValue)
51cdf0e10cSrcweir         {
52cdf0e10cSrcweir             valueOf_float_test_impl(_nValue);
53cdf0e10cSrcweir 
54cdf0e10cSrcweir             // test also the negative part.
55cdf0e10cSrcweir             float nNegativeValue = -_nValue;
56cdf0e10cSrcweir             valueOf_float_test_impl(nNegativeValue);
57cdf0e10cSrcweir         }
58cdf0e10cSrcweir 
59cdf0e10cSrcweir public:
60cdf0e10cSrcweir     // initialise your test code values here.
setUp()61cdf0e10cSrcweir     void setUp()
62cdf0e10cSrcweir     {
63cdf0e10cSrcweir     }
64cdf0e10cSrcweir 
tearDown()65cdf0e10cSrcweir     void tearDown()
66cdf0e10cSrcweir     {
67cdf0e10cSrcweir     }
68cdf0e10cSrcweir 
69cdf0e10cSrcweir     // insert your test code here.
valueOf_float_test_001()70cdf0e10cSrcweir     void valueOf_float_test_001()
71cdf0e10cSrcweir     {
72cdf0e10cSrcweir         // this is demonstration code
73cdf0e10cSrcweir         // CPPUNIT_ASSERT_MESSAGE("a message", 1 == 1);
74cdf0e10cSrcweir         float nValue = 3.0f;
75cdf0e10cSrcweir         valueOf_float_test(nValue);
76cdf0e10cSrcweir     }
77cdf0e10cSrcweir 
valueOf_float_test_002()78cdf0e10cSrcweir     void valueOf_float_test_002()
79cdf0e10cSrcweir     {
80cdf0e10cSrcweir         float nValue = 3.5f;
81cdf0e10cSrcweir         valueOf_float_test(nValue);
82cdf0e10cSrcweir     }
83cdf0e10cSrcweir 
valueOf_float_test_003()84cdf0e10cSrcweir     void valueOf_float_test_003()
85cdf0e10cSrcweir     {
86cdf0e10cSrcweir         float nValue = 3.0625f;
87cdf0e10cSrcweir         valueOf_float_test(nValue);
88cdf0e10cSrcweir     }
89cdf0e10cSrcweir 
valueOf_float_test_004()90cdf0e10cSrcweir     void valueOf_float_test_004()
91cdf0e10cSrcweir     {
92cdf0e10cSrcweir         float nValue = 3.502525f;
93cdf0e10cSrcweir         valueOf_float_test(nValue);
94cdf0e10cSrcweir     }
95cdf0e10cSrcweir 
valueOf_float_test_005()96cdf0e10cSrcweir     void valueOf_float_test_005()
97cdf0e10cSrcweir     {
98cdf0e10cSrcweir         float nValue = 3.141592f;
99cdf0e10cSrcweir         valueOf_float_test(nValue);
100cdf0e10cSrcweir     }
101cdf0e10cSrcweir 
valueOf_float_test_006()102cdf0e10cSrcweir     void valueOf_float_test_006()
103cdf0e10cSrcweir     {
104cdf0e10cSrcweir         float nValue = 3.5025255f;
105cdf0e10cSrcweir         valueOf_float_test(nValue);
106cdf0e10cSrcweir     }
107cdf0e10cSrcweir 
valueOf_float_test_007()108cdf0e10cSrcweir     void valueOf_float_test_007()
109cdf0e10cSrcweir     {
110cdf0e10cSrcweir         float nValue = 3.0039062f;
111cdf0e10cSrcweir         valueOf_float_test(nValue);
112cdf0e10cSrcweir     }
113cdf0e10cSrcweir 
114cdf0e10cSrcweir private:
115cdf0e10cSrcweir 
valueOf_double_test_impl(double _nValue)116cdf0e10cSrcweir     void valueOf_double_test_impl(double _nValue)
117cdf0e10cSrcweir         {
118cdf0e10cSrcweir             rtl::OString sValue;
119cdf0e10cSrcweir             sValue = rtl::OString::valueOf( _nValue );
120cdf0e10cSrcweir             t_print(T_VERBOSE, "nDouble := %.20f  sValue := %s\n", _nValue, sValue.getStr());
121cdf0e10cSrcweir 
122cdf0e10cSrcweir             double nValueATOF = atof( sValue.getStr() );
123cdf0e10cSrcweir 
124cdf0e10cSrcweir             bool bEqualResult = is_double_equal(_nValue, nValueATOF);
125cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Values are not equal.", bEqualResult == true);
126cdf0e10cSrcweir         }
127cdf0e10cSrcweir 
valueOf_double_test(double _nValue)128cdf0e10cSrcweir     void valueOf_double_test(double _nValue)
129cdf0e10cSrcweir         {
130cdf0e10cSrcweir             valueOf_double_test_impl(_nValue);
131cdf0e10cSrcweir 
132cdf0e10cSrcweir             // test also the negative part.
133cdf0e10cSrcweir             double nNegativeValue = -_nValue;
134cdf0e10cSrcweir             valueOf_double_test_impl(nNegativeValue);
135cdf0e10cSrcweir         }
136cdf0e10cSrcweir public:
137cdf0e10cSrcweir 
138cdf0e10cSrcweir     // valueOf double
valueOf_double_test_001()139cdf0e10cSrcweir     void valueOf_double_test_001()
140cdf0e10cSrcweir         {
141cdf0e10cSrcweir             double nValue = 3.0;
142cdf0e10cSrcweir             valueOf_double_test(nValue);
143cdf0e10cSrcweir         }
valueOf_double_test_002()144cdf0e10cSrcweir     void valueOf_double_test_002()
145cdf0e10cSrcweir         {
146cdf0e10cSrcweir             double nValue = 3.5;
147cdf0e10cSrcweir             valueOf_double_test(nValue);
148cdf0e10cSrcweir         }
valueOf_double_test_003()149cdf0e10cSrcweir     void valueOf_double_test_003()
150cdf0e10cSrcweir         {
151cdf0e10cSrcweir             double nValue = 3.0625;
152cdf0e10cSrcweir             valueOf_double_test(nValue);
153cdf0e10cSrcweir         }
valueOf_double_test_004()154cdf0e10cSrcweir     void valueOf_double_test_004()
155cdf0e10cSrcweir         {
156cdf0e10cSrcweir             double nValue = 3.1415926535;
157cdf0e10cSrcweir             valueOf_double_test(nValue);
158cdf0e10cSrcweir         }
valueOf_double_test_005()159cdf0e10cSrcweir     void valueOf_double_test_005()
160cdf0e10cSrcweir         {
161cdf0e10cSrcweir             double nValue = 3.141592653589793;
162cdf0e10cSrcweir             valueOf_double_test(nValue);
163cdf0e10cSrcweir         }
valueOf_double_test_006()164cdf0e10cSrcweir     void valueOf_double_test_006()
165cdf0e10cSrcweir         {
166cdf0e10cSrcweir             double nValue = 3.1415926535897932;
167cdf0e10cSrcweir             valueOf_double_test(nValue);
168cdf0e10cSrcweir         }
valueOf_double_test_007()169cdf0e10cSrcweir     void valueOf_double_test_007()
170cdf0e10cSrcweir         {
171cdf0e10cSrcweir             double nValue = 3.14159265358979323;
172cdf0e10cSrcweir             valueOf_double_test(nValue);
173cdf0e10cSrcweir         }
valueOf_double_test_008()174cdf0e10cSrcweir     void valueOf_double_test_008()
175cdf0e10cSrcweir         {
176cdf0e10cSrcweir             double nValue = 3.141592653589793238462643;
177cdf0e10cSrcweir             valueOf_double_test(nValue);
178cdf0e10cSrcweir         }
179cdf0e10cSrcweir 
180cdf0e10cSrcweir 
181cdf0e10cSrcweir     // Change the following lines only, if you add, remove or rename
182cdf0e10cSrcweir     // member functions of the current class,
183cdf0e10cSrcweir     // because these macros are need by auto register mechanism.
184cdf0e10cSrcweir 
185cdf0e10cSrcweir     CPPUNIT_TEST_SUITE(valueOf);
186cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_float_test_001);
187cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_float_test_002);
188cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_float_test_003);
189cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_float_test_004);
190cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_float_test_005);
191cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_float_test_006);
192cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_float_test_007);
193cdf0e10cSrcweir 
194cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_double_test_001);
195cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_double_test_002);
196cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_double_test_003);
197cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_double_test_004);
198cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_double_test_005);
199cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_double_test_006);
200cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_double_test_007);
201cdf0e10cSrcweir     CPPUNIT_TEST(valueOf_double_test_008);
202cdf0e10cSrcweir     CPPUNIT_TEST_SUITE_END();
203cdf0e10cSrcweir }; // class valueOf
204cdf0e10cSrcweir 
205cdf0e10cSrcweir // -----------------------------------------------------------------------------
206cdf0e10cSrcweir // - toDouble (tests)
207cdf0e10cSrcweir // -----------------------------------------------------------------------------
208cdf0e10cSrcweir class toDouble : public CppUnit::TestFixture
209cdf0e10cSrcweir {
210cdf0e10cSrcweir 
211cdf0e10cSrcweir public:
212cdf0e10cSrcweir 
toDouble()213cdf0e10cSrcweir     toDouble()
214cdf0e10cSrcweir         {
215cdf0e10cSrcweir             // testPrecision a;
216cdf0e10cSrcweir         }
217cdf0e10cSrcweir 
218cdf0e10cSrcweir 
219cdf0e10cSrcweir 
220cdf0e10cSrcweir     // initialise your test code values here.
setUp()221cdf0e10cSrcweir     void setUp()
222cdf0e10cSrcweir         {
223cdf0e10cSrcweir         }
224cdf0e10cSrcweir 
tearDown()225cdf0e10cSrcweir     void tearDown()
226cdf0e10cSrcweir         {
227cdf0e10cSrcweir         }
228cdf0e10cSrcweir 
toDouble_test_impl(rtl::OString const & _sValue)229cdf0e10cSrcweir     void toDouble_test_impl(rtl::OString const& _sValue)
230cdf0e10cSrcweir         {
231cdf0e10cSrcweir             double nValueATOF = atof( _sValue.getStr() );
232cdf0e10cSrcweir 
233cdf0e10cSrcweir             // rtl::OUString suValue = rtl::OUString::createFromAscii( _sValue.getStr() );
234cdf0e10cSrcweir             double nValueToDouble = _sValue.toDouble();
235cdf0e10cSrcweir 
236cdf0e10cSrcweir             bool bEqualResult = is_double_equal(nValueToDouble, nValueATOF);
237cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Values are not equal.", bEqualResult == true);
238cdf0e10cSrcweir         }
239cdf0e10cSrcweir 
toDouble_test(rtl::OString const & _sValue)240cdf0e10cSrcweir     void toDouble_test(rtl::OString const& _sValue)
241cdf0e10cSrcweir         {
242cdf0e10cSrcweir             toDouble_test_impl(_sValue);
243cdf0e10cSrcweir 
244cdf0e10cSrcweir             // test also the negativ part.
245cdf0e10cSrcweir             rtl::OString sNegativValue("-");
246cdf0e10cSrcweir             sNegativValue += _sValue;
247cdf0e10cSrcweir             toDouble_test_impl(sNegativValue);
248cdf0e10cSrcweir         }
249cdf0e10cSrcweir 
250cdf0e10cSrcweir     // insert your test code here.
toDouble_selftest()251cdf0e10cSrcweir     void toDouble_selftest()
252cdf0e10cSrcweir         {
253cdf0e10cSrcweir             t_print("Start selftest:\n");
254cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.01) == false);
255cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.001) == false);
256cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.0001) == false);
257cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.00001) == false);
258cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.000001) == false);
259cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.0000001) == false);
260cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.00000001) == false);
261cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.000000001) == false);
262cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.0000000001) == false);
263cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.00000000001) == false);
264cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.000000000001) == false);
265cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.0000000000001) == false);
266cdf0e10cSrcweir             // we check til 14 values after comma
267cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.00000000000001) == true);
268cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.000000000000001) == true);
269cdf0e10cSrcweir             CPPUNIT_ASSERT (is_double_equal(1.0, 1.0000000000000001) == true);
270cdf0e10cSrcweir             t_print("Selftest done.\n");
271cdf0e10cSrcweir         }
272cdf0e10cSrcweir 
toDouble_test_3()273cdf0e10cSrcweir     void toDouble_test_3()
274cdf0e10cSrcweir         {
275cdf0e10cSrcweir             rtl::OString sValue("3");
276cdf0e10cSrcweir             toDouble_test(sValue);
277cdf0e10cSrcweir         }
toDouble_test_3_5()278cdf0e10cSrcweir     void toDouble_test_3_5()
279cdf0e10cSrcweir         {
280cdf0e10cSrcweir             rtl::OString sValue("3.5");
281cdf0e10cSrcweir             toDouble_test(sValue);
282cdf0e10cSrcweir         }
toDouble_test_3_0625()283cdf0e10cSrcweir     void toDouble_test_3_0625()
284cdf0e10cSrcweir         {
285cdf0e10cSrcweir             rtl::OString sValue("3.0625");
286cdf0e10cSrcweir             toDouble_test(sValue);
287cdf0e10cSrcweir         }
toDouble_test_pi()288cdf0e10cSrcweir     void toDouble_test_pi()
289cdf0e10cSrcweir         {
290cdf0e10cSrcweir             // value from http://www.angio.net/pi/digits/50.txt
291cdf0e10cSrcweir             rtl::OString sValue("3.141592653589793238462643383279502884197169399375");
292cdf0e10cSrcweir             toDouble_test(sValue);
293cdf0e10cSrcweir         }
294cdf0e10cSrcweir 
toDouble_test_1()295cdf0e10cSrcweir     void toDouble_test_1()
296cdf0e10cSrcweir         {
297cdf0e10cSrcweir             rtl::OString sValue("1");
298cdf0e10cSrcweir             toDouble_test(sValue);
299cdf0e10cSrcweir         }
toDouble_test_10()300cdf0e10cSrcweir     void toDouble_test_10()
301cdf0e10cSrcweir         {
302cdf0e10cSrcweir             rtl::OString sValue("10");
303cdf0e10cSrcweir             toDouble_test(sValue);
304cdf0e10cSrcweir         }
toDouble_test_100()305cdf0e10cSrcweir     void toDouble_test_100()
306cdf0e10cSrcweir         {
307cdf0e10cSrcweir             rtl::OString sValue("100");
308cdf0e10cSrcweir             toDouble_test(sValue);
309cdf0e10cSrcweir         }
toDouble_test_1000()310cdf0e10cSrcweir     void toDouble_test_1000()
311cdf0e10cSrcweir         {
312cdf0e10cSrcweir             rtl::OString sValue("1000");
313cdf0e10cSrcweir             toDouble_test(sValue);
314cdf0e10cSrcweir         }
toDouble_test_10000()315cdf0e10cSrcweir     void toDouble_test_10000()
316cdf0e10cSrcweir         {
317cdf0e10cSrcweir             rtl::OString sValue("10000");
318cdf0e10cSrcweir             toDouble_test(sValue);
319cdf0e10cSrcweir         }
toDouble_test_1e99()320cdf0e10cSrcweir     void toDouble_test_1e99()
321cdf0e10cSrcweir         {
322cdf0e10cSrcweir             rtl::OString sValue("1e99");
323cdf0e10cSrcweir             toDouble_test(sValue);
324cdf0e10cSrcweir         }
toDouble_test_1e_n99()325cdf0e10cSrcweir     void toDouble_test_1e_n99()
326cdf0e10cSrcweir         {
327cdf0e10cSrcweir             rtl::OString sValue("1e-99");
328cdf0e10cSrcweir             toDouble_test(sValue);
329cdf0e10cSrcweir         }
toDouble_test_1e308()330cdf0e10cSrcweir     void toDouble_test_1e308()
331cdf0e10cSrcweir         {
332cdf0e10cSrcweir             rtl::OString sValue("1e308");
333cdf0e10cSrcweir             toDouble_test(sValue);
334cdf0e10cSrcweir         }
335cdf0e10cSrcweir 
336cdf0e10cSrcweir     // Change the following lines only, if you add, remove or rename
337cdf0e10cSrcweir     // member functions of the current class,
338cdf0e10cSrcweir     // because these macros are need by auto register mechanism.
339cdf0e10cSrcweir 
340cdf0e10cSrcweir     CPPUNIT_TEST_SUITE(toDouble);
341cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_selftest);
342cdf0e10cSrcweir 
343cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_3);
344cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_3_5);
345cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_3_0625);
346cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_pi);
347cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_1);
348cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_10);
349cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_100);
350cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_1000);
351cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_10000);
352cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_1e99);
353cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_1e_n99);
354cdf0e10cSrcweir     CPPUNIT_TEST(toDouble_test_1e308);
355cdf0e10cSrcweir     CPPUNIT_TEST_SUITE_END();
356cdf0e10cSrcweir }; // class toDouble
357cdf0e10cSrcweir 
358cdf0e10cSrcweir // -----------------------------------------------------------------------------
359cdf0e10cSrcweir // - getToken (tests)
360cdf0e10cSrcweir // -----------------------------------------------------------------------------
361cdf0e10cSrcweir class getToken : public CppUnit::TestFixture
362cdf0e10cSrcweir {
363cdf0e10cSrcweir 
364cdf0e10cSrcweir public:
365cdf0e10cSrcweir 
366cdf0e10cSrcweir     // initialise your test code values here.
setUp()367cdf0e10cSrcweir     void setUp()
368cdf0e10cSrcweir         {
369cdf0e10cSrcweir         }
370cdf0e10cSrcweir 
tearDown()371cdf0e10cSrcweir     void tearDown()
372cdf0e10cSrcweir         {
373cdf0e10cSrcweir         }
374cdf0e10cSrcweir 
375cdf0e10cSrcweir     // -----------------------------------------------------------------------------
376cdf0e10cSrcweir 
getToken_000()377cdf0e10cSrcweir     void getToken_000()
378cdf0e10cSrcweir         {
379cdf0e10cSrcweir             rtl::OString sTokenStr;
380cdf0e10cSrcweir 
381cdf0e10cSrcweir             sal_Int32 nIndex = 0;
382cdf0e10cSrcweir             do
383cdf0e10cSrcweir             {
384cdf0e10cSrcweir                 rtl::OString sToken = sTokenStr.getToken( 0, ';', nIndex );
385cdf0e10cSrcweir             }
386cdf0e10cSrcweir             while ( nIndex >= 0 );
387cdf0e10cSrcweir             // t_print("Index %d\n", nIndex);
388cdf0e10cSrcweir             // should not GPF
389cdf0e10cSrcweir         }
390cdf0e10cSrcweir 
getToken_001()391cdf0e10cSrcweir     void getToken_001()
392cdf0e10cSrcweir         {
393cdf0e10cSrcweir             rtl::OString sTokenStr = "a;b";
394cdf0e10cSrcweir 
395cdf0e10cSrcweir             sal_Int32 nIndex = 0;
396cdf0e10cSrcweir 
397cdf0e10cSrcweir             rtl::OString sToken = sTokenStr.getToken( 0, ';', nIndex );
398cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be a 'a'", sToken.equals("a") == sal_True);
399cdf0e10cSrcweir 
400cdf0e10cSrcweir             /* rtl::OString */ sToken = sTokenStr.getToken( 0, ';', nIndex );
401cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be a 'b'", sToken.equals("b") == sal_True);
402cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("index should be negative", nIndex == -1);
403cdf0e10cSrcweir         }
404cdf0e10cSrcweir 
getToken_002()405cdf0e10cSrcweir     void getToken_002()
406cdf0e10cSrcweir         {
407cdf0e10cSrcweir             rtl::OString sTokenStr = "a;b.c";
408cdf0e10cSrcweir 
409cdf0e10cSrcweir             sal_Int32 nIndex = 0;
410cdf0e10cSrcweir 
411cdf0e10cSrcweir             rtl::OString sToken = sTokenStr.getToken( 0, ';', nIndex );
412cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be a 'a'", sToken.equals("a") == sal_True);
413cdf0e10cSrcweir 
414cdf0e10cSrcweir             /* rtl::OString */ sToken = sTokenStr.getToken( 0, '.', nIndex );
415cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be a 'b'", sToken.equals("b") == sal_True);
416cdf0e10cSrcweir 
417cdf0e10cSrcweir             /* rtl::OString */ sToken = sTokenStr.getToken( 0, '.', nIndex );
418cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be a 'c'", sToken.equals("c") == sal_True);
419cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("index should be negative", nIndex == -1);
420cdf0e10cSrcweir         }
421cdf0e10cSrcweir 
getToken_003()422cdf0e10cSrcweir     void getToken_003()
423cdf0e10cSrcweir         {
424cdf0e10cSrcweir             rtl::OString sTokenStr = "a;;b";
425cdf0e10cSrcweir 
426cdf0e10cSrcweir             sal_Int32 nIndex = 0;
427cdf0e10cSrcweir 
428cdf0e10cSrcweir             rtl::OString sToken = sTokenStr.getToken( 0, ';', nIndex );
429cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be a 'a'", sToken.equals("a") == sal_True);
430cdf0e10cSrcweir 
431cdf0e10cSrcweir             /* rtl::OString */ sToken = sTokenStr.getToken( 0, ';', nIndex );
432cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be empty", sToken.getLength() == 0);
433cdf0e10cSrcweir 
434cdf0e10cSrcweir             /* rtl::OString */ sToken = sTokenStr.getToken( 0, ';', nIndex );
435cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be a 'b'", sToken.equals("b") == sal_True);
436cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("index should be negative", nIndex == -1);
437cdf0e10cSrcweir         }
438cdf0e10cSrcweir 
getToken_004()439cdf0e10cSrcweir     void getToken_004()
440cdf0e10cSrcweir         {
441cdf0e10cSrcweir             rtl::OString sTokenStr = "longer.then.ever.";
442cdf0e10cSrcweir 
443cdf0e10cSrcweir             sal_Int32 nIndex = 0;
444cdf0e10cSrcweir 
445cdf0e10cSrcweir             rtl::OString sToken = sTokenStr.getToken( 0, '.', nIndex );
446cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be 'longer'", sToken.equals("longer") == sal_True);
447cdf0e10cSrcweir 
448cdf0e10cSrcweir             /* rtl::OString */ sToken = sTokenStr.getToken( 0, '.', nIndex );
449cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be 'then'", sToken.equals("then") == sal_True);
450cdf0e10cSrcweir 
451cdf0e10cSrcweir             /* rtl::OString */ sToken = sTokenStr.getToken( 0, '.', nIndex );
452cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be 'ever'", sToken.equals("ever") == sal_True);
453cdf0e10cSrcweir 
454cdf0e10cSrcweir             /* rtl::OString */ sToken = sTokenStr.getToken( 0, '.', nIndex );
455cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("Token should be empty", sToken.getLength() == 0);
456cdf0e10cSrcweir 
457cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("index should be negative", nIndex == -1);
458cdf0e10cSrcweir         }
459cdf0e10cSrcweir 
460cdf0e10cSrcweir 
461cdf0e10cSrcweir     CPPUNIT_TEST_SUITE(getToken);
462cdf0e10cSrcweir     CPPUNIT_TEST(getToken_000);
463cdf0e10cSrcweir     CPPUNIT_TEST(getToken_001);
464cdf0e10cSrcweir     CPPUNIT_TEST(getToken_002);
465cdf0e10cSrcweir     CPPUNIT_TEST(getToken_003);
466cdf0e10cSrcweir     CPPUNIT_TEST(getToken_004);
467cdf0e10cSrcweir     CPPUNIT_TEST_SUITE_END();
468cdf0e10cSrcweir }; // class getToken
469cdf0e10cSrcweir 
470cdf0e10cSrcweir // -----------------------------------------------------------------------------
471cdf0e10cSrcweir // testing the method replaceAt( sal_Int32 index, sal_Int32 count,
472cdf0e10cSrcweir // const OString& newStr )
473cdf0e10cSrcweir // -----------------------------------------------------------------------------
474cdf0e10cSrcweir 
475cdf0e10cSrcweir // Developer note: Mindy Liu, 2004-04-23
476cdf0e10cSrcweir // stollen from sal/qa/rtl_strings/rtl_OString.cxx
477cdf0e10cSrcweir 
478cdf0e10cSrcweir class replaceAt : public CppUnit::TestFixture
479cdf0e10cSrcweir {
480cdf0e10cSrcweir 
481cdf0e10cSrcweir public:
482cdf0e10cSrcweir     // initialise your test code values here.
setUp()483cdf0e10cSrcweir     void setUp()
484cdf0e10cSrcweir         {
485cdf0e10cSrcweir         }
486cdf0e10cSrcweir 
tearDown()487cdf0e10cSrcweir     void tearDown()
488cdf0e10cSrcweir         {
489cdf0e10cSrcweir         }
check_replaceAt(const rtl::OString * expVal,const rtl::OString * input,const rtl::OString * newStr,sal_Int32 index,sal_Int32 count)490cdf0e10cSrcweir     sal_Bool check_replaceAt( const rtl::OString* expVal, const rtl::OString* input,
491cdf0e10cSrcweir         const rtl::OString* newStr, sal_Int32  index, sal_Int32 count)
492cdf0e10cSrcweir     {
493cdf0e10cSrcweir     	 ::rtl::OString aStr1;
494cdf0e10cSrcweir         aStr1= input->replaceAt( index, count, *newStr );
495cdf0e10cSrcweir 
496cdf0e10cSrcweir         t_print("the result OString is %s#\n", aStr1.getStr() );
497cdf0e10cSrcweir 
498cdf0e10cSrcweir         sal_Bool bRes = ( expVal->compareTo(aStr1) == 0 );
499cdf0e10cSrcweir         return bRes;
500cdf0e10cSrcweir     }
501cdf0e10cSrcweir     // -----------------------------------------------------------------------------
502cdf0e10cSrcweir 
replaceAt_001()503cdf0e10cSrcweir    void replaceAt_001()
504cdf0e10cSrcweir         {
505cdf0e10cSrcweir 	    sal_Bool bRes = check_replaceAt(new rtl::OString("Java@Sun"),
506cdf0e10cSrcweir 			new rtl::OString("Sun java"), new rtl::OString("Java@Sun"), 0, 8 );
507cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("string differs, replace whole string", bRes == sal_True);
508cdf0e10cSrcweir         }
509cdf0e10cSrcweir 
replaceAt_002()510cdf0e10cSrcweir     void replaceAt_002()
511cdf0e10cSrcweir         {
512cdf0e10cSrcweir             sal_Bool bRes = check_replaceAt(new rtl::OString("Sun Java desktop system"),
513cdf0e10cSrcweir 			new rtl::OString("Sun "), new rtl::OString("Java desktop system"), 10, 8 );
514cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("index > length of input string", bRes == sal_True);
515cdf0e10cSrcweir         }
516cdf0e10cSrcweir 
replaceAt_003()517cdf0e10cSrcweir     void replaceAt_003()
518cdf0e10cSrcweir         {
519cdf0e10cSrcweir             sal_Bool bRes = check_replaceAt(new rtl::OString("SuJava desktop system"),
520cdf0e10cSrcweir 			new rtl::OString("Sun "), new rtl::OString("Java desktop system"), 2, 64 );
521cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("larger count", bRes == sal_True);
522cdf0e10cSrcweir         }
523cdf0e10cSrcweir 
replaceAt_004()524cdf0e10cSrcweir     void replaceAt_004()
525cdf0e10cSrcweir         {
526cdf0e10cSrcweir 
527cdf0e10cSrcweir             sal_Bool bRes = check_replaceAt(new rtl::OString("Java desktop system"),
528cdf0e10cSrcweir 			new rtl::OString("Sun "), new rtl::OString("Java desktop system"), -4, 8 );
529cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("navigate index", bRes == sal_True);
530cdf0e10cSrcweir         }
replaceAt_005()531cdf0e10cSrcweir     void replaceAt_005()
532cdf0e10cSrcweir         {
533cdf0e10cSrcweir 
534cdf0e10cSrcweir             sal_Bool bRes = check_replaceAt(new rtl::OString("Sun Jesktop System"),
535cdf0e10cSrcweir 			new rtl::OString("Sun Java Desktop System"), new rtl::OString(""), 5, 5 );
536cdf0e10cSrcweir             CPPUNIT_ASSERT_MESSAGE("replace with null string", bRes == sal_True);
537cdf0e10cSrcweir         }
538cdf0e10cSrcweir 
539cdf0e10cSrcweir 
540cdf0e10cSrcweir     CPPUNIT_TEST_SUITE(replaceAt);
541cdf0e10cSrcweir     CPPUNIT_TEST(replaceAt_001);
542cdf0e10cSrcweir     CPPUNIT_TEST(replaceAt_002);
543cdf0e10cSrcweir     CPPUNIT_TEST(replaceAt_003);
544cdf0e10cSrcweir     CPPUNIT_TEST(replaceAt_004);
545cdf0e10cSrcweir     CPPUNIT_TEST(replaceAt_005);
546cdf0e10cSrcweir     CPPUNIT_TEST_SUITE_END();
547cdf0e10cSrcweir }; // class replaceAt
548cdf0e10cSrcweir 
549cdf0e10cSrcweir 
550cdf0e10cSrcweir // -----------------------------------------------------------------------------
551cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_OString::valueOf, "rtl_OString");
552cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_OString::toDouble, "rtl_OString");
553cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_OString::getToken, "rtl_OString");
554cdf0e10cSrcweir CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(rtl_OString::replaceAt, "rtl_OString");
555cdf0e10cSrcweir 
556cdf0e10cSrcweir } // namespace rtl_OString
557cdf0e10cSrcweir 
558cdf0e10cSrcweir 
559cdf0e10cSrcweir // -----------------------------------------------------------------------------
560cdf0e10cSrcweir 
561cdf0e10cSrcweir // this macro creates an empty function, which will called by the RegisterAllFunctions()
562cdf0e10cSrcweir // to let the user the possibility to also register some functions by hand.
563cdf0e10cSrcweir NOADDITIONAL;
564cdf0e10cSrcweir 
565