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