diff options
Diffstat (limited to 'sal/qa/rtl_strings/rtl_OUString.cxx')
-rw-r--r-- | sal/qa/rtl_strings/rtl_OUString.cxx | 3858 |
1 files changed, 3858 insertions, 0 deletions
diff --git a/sal/qa/rtl_strings/rtl_OUString.cxx b/sal/qa/rtl_strings/rtl_OUString.cxx new file mode 100644 index 000000000000..41538065d4fc --- /dev/null +++ b/sal/qa/rtl_strings/rtl_OUString.cxx @@ -0,0 +1,3858 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sal.hxx" +#include <sal/types.h> + +//# #ifndef _RTL_TRES_H_ +//# #include <rtl/tres.h> +//# #endif +#include <testshl/tresstatewrapper.hxx> +#include "stringhelper.hxx" +#include <rtl/string.hxx> +#include <rtl/ustring.h> +#include <rtl/ustring.hxx> + +//------------------------------------------------------------------------ +//------------------------------------------------------------------------ +#include <osl/thread.h> +#include <rtl_String_Const.h> +#include <rtl_String_Utils.hxx> + + + + using namespace rtl; + +//------------------------------------------------------------------------ +// test classes +//------------------------------------------------------------------------ +const int MAXBUFLENGTH = 255; +//------------------------------------------------------------------------ +// helper functions +//------------------------------------------------------------------------ +static void unused() +{ + // NEVER CALL SUCH FUNCTION!!! + (void)input1StrLastDefault; + (void)input1StrLastNormal; + unused(); +} + +//------------------------------------------------------------------------ +// testing constructors +//------------------------------------------------------------------------ +static sal_Bool test_rtl_OUString_ctor_001( hTestResult hRtlTestResult ) +{ + + ::rtl::OUString aUStr; + rtl_uString * pData = aUStr.pData; + + return + ( + c_rtl_tres_state + ( + hRtlTestResult, + pData->length == 0 && + ! *pData->buffer, + "New OUString containing no characters", + "ctor_001" + ) + ); +} + +//------------------------------------------------------------------------ + +static sal_Bool SAL_CALL test_rtl_OUString_ctor_002( + hTestResult hRtlTestResult ) +{ + ::rtl::OUString aUStr( kTestStr1, + kTestStr1Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ); + + return + ( + c_rtl_tres_state + ( + hRtlTestResult, + aUStr == aUStr1, + "OUString from an ascii string", + "ctor_002" + ) + ); +} +//------------------------------------------------------------------------ + +static sal_Bool SAL_CALL test_rtl_OUString_ctor_003( + hTestResult hRtlTestResult ) +{ + rtl_uString *rtlUStr =NULL ; + rtl_uString_newFromAscii( &rtlUStr, kTestStr1 ); + ::rtl::OUString aUStr( rtlUStr ); + + return + ( + c_rtl_tres_state + ( + hRtlTestResult, + aUStr == aUStr1, + "New OUString from a rtl_uString", + "ctor_003" + ) + ); +} + +//------------------------------------------------------------------------ + +static sal_Bool SAL_CALL test_rtl_OUString_ctor_004( + hTestResult hRtlTestResult) +{ + ::rtl::OUString aUStr( aUStr1 ); + + return + ( + c_rtl_tres_state + ( + hRtlTestResult, + aUStr == aUStr1, + "New OUString from unicode string", + "ctor_004" + ) + ); +} +//------------------------------------------------------------------------ + +static sal_Bool test_rtl_OUString_ctor_005( hTestResult hRtlTestResult ) +{ + ::rtl::OUString aUStr( aUStr2, kTestStr1Len ); + + return + ( + c_rtl_tres_state + ( + hRtlTestResult, + aUStr == aUStr1, + "New OUString from the first n characters of unicode string", + "ctor_004" + ) + ); + +} + + +//------------------------------------------------------------------------ + +static sal_Bool test_rtl_OUString_ctor_006( hTestResult hRtlTestResult ) +{ + ::rtl::OUString aUStrtmp( aUStr1 ); + ::rtl::OUString aUStr( aUStrtmp ); + + return + ( + c_rtl_tres_state + ( + hRtlTestResult, + aUStr==aUStrtmp, + "New OUString from another OUString", + "ctor_006" + ) + ); +} + +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_ctors( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "ctors"); + sal_Bool DCState = test_ini_uString(); + (void)DCState; + sal_Bool bTSState = test_rtl_OUString_ctor_001( hRtlTestResult ); + bTSState &= test_rtl_OUString_ctor_002( hRtlTestResult); + bTSState &= test_rtl_OUString_ctor_003( hRtlTestResult); + bTSState &= test_rtl_OUString_ctor_004( hRtlTestResult); + bTSState &= test_rtl_OUString_ctor_005( hRtlTestResult); + bTSState &= test_rtl_OUString_ctor_006( hRtlTestResult); + c_rtl_tres_state_end( hRtlTestResult, "ctors"); +// return( bTSState ); +} + + + +//------------------------------------------------------------------------ +// testing the method getLength +//------------------------------------------------------------------------ + +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_getLength( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "getLength"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + sal_Int32 expVal; + OUString* input; + ~TestCase() { delete input;} + } TestCase; + + TestCase arrTestCase[]={ + + {"length of ascii string", kTestStr1Len, + new OUString( kTestStr1, + kTestStr1Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)}, + {"length of ascci string of size 1", 1, + new OUString( "1", + 1, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)}, + {"length of empty string (default constructor)", 0, new OUString()}, + {"length of empty string (empty ascii string arg)",0, + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)}, + {"length of empty string (string arg = '\\0')", 0, + new OUString( "\0", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)} + }; + + + sal_Bool res = sal_True; + sal_uInt32 i; + + for (i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Int32 length = arrTestCase[i].input->getLength(); + sal_Bool lastRes = (length == arrTestCase[i].expVal); + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "getLength", i ) + + ); + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "getLength"); +// return ( res ); +} + +//------------------------------------------------------------------------ +// testing the method equals( const OString & aStr ) +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_equals( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "equals"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + sal_Bool expVal; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1;delete input2;} + } TestCase; + + TestCase arrTestCase[]={ + + {"same size", sal_True, new OUString(aUStr1), new OUString(aUStr1)}, + {"different size", sal_False, new OUString(aUStr1), + new OUString(aUStr2) + }, + {"same size, no case match", sal_False, new OUString(aUStr1), + new OUString(aUStr3) + }, + {"two empty strings(def. constructor)", sal_True, new OUString(), + new OUString() + }, + {"empty(def.constructor) and non empty", sal_False, new OUString(), + new OUString(aUStr2) + }, + {"non empty and empty(def. constructor)", sal_False, + new OUString(aUStr1), + new OUString() + }, + {"two empty strings(string arg = '\\0')", sal_True, + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString), + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + {"empty(string arg = '\\0') and non empty", sal_False, + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString), + new OUString(aUStr2) + }, + {"non empty and empty(string arg = '\\0')", sal_False, + new OUString(aUStr1), + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + } + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Bool lastRes = + ( arrTestCase[i].input1->equals(*(arrTestCase[i].input2)) == + arrTestCase[i].expVal ); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "equals", i ) + ); + + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "equals"); +// return (res); +} + +//------------------------------------------------------------------------ +// testing the method equalsIgnoreAsciiCase( const OString & aStr ) +//------------------------------------------------------------------------ + +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_equalsIgnoreAsciiCase( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "equalsIgnoreAsciiCase"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + sal_Bool expVal; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1;delete input2;} + } TestCase; + + TestCase arrTestCase[]={ + {"same strings but different cases",sal_True,new OUString(aUStr4), + new OUString(aUStr5) + }, + {"same strings",sal_True,new OUString(aUStr4), + new OUString(aUStr4)}, + {"with equal beginning",sal_False,new OUString(aUStr2), + new OUString(aUStr4) + }, + {"empty(def.constructor) and non empty",sal_False,new OUString(), + new OUString(aUStr5) + }, + {"non empty and empty(def.constructor)",sal_False, + new OUString(aUStr4), + new OUString() + }, + {"two empty strings(def.constructor)",sal_True,new OUString(), + new OUString() + }, + {"different strings with equal length",sal_False, + new OUString(aUStr10), + new OUString(aUStr11) + } + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Bool lastRes = + (arrTestCase[i].input1->equalsIgnoreAsciiCase(*arrTestCase[i].input2) == + arrTestCase[i].expVal); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "equalsIgnoreAsciiCase", i ) + ); + + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "equalsIgnoreAsciiCase"); +// return (res); +} + + +static sal_Bool SAL_CALL test_rtl_OUString_compareTo_001( + hTestResult hRtlTestResult ) +{ + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + sal_Int32 expVal; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1;delete input2;} + } TestCase; + + TestCase arrTestCase[]={ + + {"simple compare, str1 to str5",-1,new OUString(aUStr1), + new OUString(aUStr5) + }, + {"simple compare, str2 to str5",-1,new OUString(aUStr2), + new OUString(aUStr5) + }, + {"simple compare, str1 to str9",-1,new OUString(aUStr1), + new OUString(aUStr9) + }, + {"simple compare, str1 to str2",-1,new OUString(aUStr1), + new OUString(aUStr2) + }, + {"simple compare, str4 to str5",-1,new OUString(aUStr4), + new OUString(aUStr5) + }, + {"simple compare, str1 to str3",-1,new OUString(aUStr1), + new OUString(aUStr3) + }, + {"simple compare, str5 to str1",+1,new OUString(aUStr5), + new OUString(aUStr1) + }, + {"simple compare, str2 to str1",+1,new OUString(aUStr2), + new OUString(aUStr1) + }, + {"simple compare, str9 to str5",+1,new OUString(aUStr9), + new OUString(aUStr5) + }, + {"simple compare, str5 to str4",+1,new OUString(aUStr5), + new OUString(aUStr4) + }, + {"simple compare, str1 to str1",0,new OUString(aUStr1), + new OUString(aUStr1) + }, + {"simple compare, nullString to nullString",0,new OUString(), + new OUString() + }, + {"simple compare, nullString to str2",-1,new OUString(), + new OUString(aUStr2) + }, + {"simple compare, str1 to nullString",+1,new OUString(aUStr1), + new OUString() + } + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Int32 cmpRes = arrTestCase[i].input1->compareTo + (*arrTestCase[i].input2); + cmpRes = ( cmpRes == 0 ) ? 0 : ( cmpRes > 0 ) ? +1 : -1 ; + sal_Bool lastRes = ( cmpRes == arrTestCase[i].expVal); + + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "compareTo_001(const OString&)", i ) + ); + + res &= lastRes; + } + + return (res); +} + + +//------------------------------------------------------------------------ +// testing the method compareTo( const OString & rObj, sal_Int32 length ) +//------------------------------------------------------------------------ +static sal_Bool SAL_CALL test_rtl_OUString_compareTo_002( + hTestResult hRtlTestResult ) +{ + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + sal_Int32 expVal; + sal_Int32 maxLength; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1;delete input2;} + } TestCase; + + TestCase arrTestCase[] = + { + {"compare with maxlength, str1 to str9, 16",-1,16, + new OUString(aUStr1), new OUString(aUStr9)}, + {"compare with maxlength, str2 to str9, 32",-1,32, + new OUString(aUStr2), new OUString(aUStr9)}, + {"compare with maxlength, str9 to str4, 16",+1,16, + new OUString(aUStr9), new OUString(aUStr4)}, + {"compare with maxlength, str9 to str22, 32",+1,32, + new OUString(aUStr9), new OUString(aUStr22)}, + {"compare with maxlength, str9 to str5, 16",0,16, + new OUString(aUStr9), new OUString(aUStr5)}, + {"compare with maxlength, str9 to str9, 32",0,32, + new OUString(aUStr9), new OUString(aUStr9)}, + {"compare with maxlength, str1 to str2, 32",-1,32, + new OUString(aUStr1), new OUString(aUStr2)}, + {"compare with maxlength, str1 to str2, 32",-1,32, + new OUString(aUStr1), new OUString(aUStr2)}, + {"compare with maxlength, str1 to str2", 0,-1, + new OUString(aUStr1), new OUString(aUStr2)} + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Int32 cmpRes = arrTestCase[i].input1->compareTo + (*arrTestCase[i].input2, arrTestCase[i].maxLength); + cmpRes = (cmpRes == 0) ? 0 : (cmpRes > 0) ? +1 : -1 ; + sal_Bool lastRes = (cmpRes == arrTestCase[i].expVal); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "compareTo_002(const OString&, sal_Int32)", i ) + ); + + res &= lastRes; + } + + return (res); +} + +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_compareTo( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "compareTo"); + sal_Bool res = test_rtl_OUString_compareTo_001(hRtlTestResult); + res &= test_rtl_OUString_compareTo_002(hRtlTestResult); + c_rtl_tres_state_end( hRtlTestResult, "compareTo"); +// return (res); +} + +//------------------------------------------------------------------------ +// testing the method match( const OUString & str, sal_Int32 fromIndex = 0 ) +//------------------------------------------------------------------------ +static sal_Bool SAL_CALL test_rtl_OUString_match_001( + hTestResult hRtlTestResult) + +{ + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + sal_Bool expVal; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1;delete input2;} + } TestCase; + + TestCase arrTestCase[]={ + + {"aUStr2 and aUStr1", sal_True, new OUString(aUStr2), + new OUString(aUStr1)}, + {"aUStr1 and aUStr2", sal_False, new OUString(aUStr1), + new OUString(aUStr2)}, + {"aUStr5 and aUStr6", sal_False, new OUString(aUStr5), + new OUString(aUStr6)}, + {"null and aUStr1", sal_False, new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString), + new OUString(aUStr1)} + + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Bool lastRes = ( arrTestCase[i].input1->match( + *(arrTestCase[i].input2)) == arrTestCase[i].expVal ); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "match(const OUString & str)", i ) + ); + + res &= lastRes; + } + return (res); +} + +static sal_Bool SAL_CALL test_rtl_OUString_match_002( + hTestResult hRtlTestResult ) + +{ + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + sal_Bool expVal; + sal_Int32 fromIndex; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1;delete input2;} + } TestCase; + + TestCase arrTestCase[]={ + + {"aUStr2 from 17 and aUStr6", sal_True, 17, + new OUString(aUStr2),new OUString(aUStr6)}, + {"aUStr2 from 5 and aUStr6", sal_False, 5, + new OUString(aUStr2),new OUString(aUStr6)}, + {"aUStr2 from 0 and aUStr1", sal_True, 0, + new OUString(aUStr2),new OUString(aUStr1)}, + {"aUStr1 from 16 and null", sal_True, 16, + new OUString(aUStr1), + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ) + }, + {"aUStr1 from 5 and null", sal_True, 5, + new OUString(aUStr1), + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ) + }, + {"aUStr2 from -1 and aUStr1", sal_False, -1, + new OUString(aUStr2),new OUString(aUStr1)}, + {"aUStr5 from 2 and aUStr4", sal_False, 2, + new OUString(aUStr5),new OUString(aUStr4)}, + {"aUStr2 from 18 and aUStr1", sal_False, 18, + new OUString(aUStr2),new OUString(aUStr1)} + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Bool lastRes = ( arrTestCase[i].input1->match + (*(arrTestCase[i].input2),arrTestCase[i].fromIndex) == + arrTestCase[i].expVal ); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, + "match(const OUString & str,sal_Int32 fromIndex = 0)", i ) + + ); + + res &= lastRes; + } + return (res); +} + +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_match( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "match"); + sal_Bool res = test_rtl_OUString_match_001(hRtlTestResult); + res &= test_rtl_OUString_match_002(hRtlTestResult); + c_rtl_tres_state_end( hRtlTestResult, "match"); +// return (res); +} + +//------------------------------------------------------------------------ +// testing the operator += +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_op_eq( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "eq"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1; delete input2;} + } TestCase; + + TestCase arrTestCase[]={ + {"null and Ustr1", new OUString, new OUString(aUStr1)}, + {"Ustr2 and Ustr1", new OUString(aUStr2), + new OUString(aUStr1)}, + {""" and Ustr1 from bit charactor buffer", + new OUString(aUStr1), + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + )}, + {"Ustr1 and Ustr2 from value and length", + new OUString( aUStr2, kTestStr2Len ), + new OUString(aUStr1)} + }; + + + sal_Bool res = sal_True; + sal_uInt32 i; + + for (i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + *(arrTestCase[i].input1) = *(arrTestCase[i].input2); + sal_Bool lastRes = (*(arrTestCase[i].input1) == + *(arrTestCase[i].input2)); + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "op_eq", i ) + + ); + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "eq"); +// return ( res ); +} + +//------------------------------------------------------------------------ +// testing the operator += +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_op_peq( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "peq"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + OUString* expVal; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1; delete input2;} + } TestCase; + + TestCase arrTestCase[]={ + {" ' '= ''+='' ", new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), + new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + )}, + {"Ustr1= null += Ustr1", new OUString(aUStr1), + new OUString(), new OUString(aUStr1)}, + {"Ustr1= '' += Ustr1", new OUString(aUStr1), + /*new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + )*/ + new OUString(), + new OUString(aUStr1)}, + {"Ustr1PlusUStr6 = Ustr1 += Ustr6", + new OUString(aUStr1PlusUStr6), new OUString(aUStr1), + new OUString(aUStr6)}, + }; + + + sal_Bool res = sal_True; + sal_uInt32 i; + + for (i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + *(arrTestCase[i].input1) += *(arrTestCase[i].input2); + sal_Bool lastRes = (*(arrTestCase[i].expVal) == + *(arrTestCase[i].input1)); + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "op_peq", i ) + + ); + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "peq"); +// return ( res ); +} + +//------------------------------------------------------------------------ +// testing the operator const sal_Unicode * (csuc for short) +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_csuc( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "csuc"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + const sal_Unicode tmpUC=0x0; + rtl_uString* tmpUstring = NULL; + const sal_Char *tmpStr=kTestStr1; + sal_Int32 tmpLen=(sal_Int32) kTestStr1Len; + // sal_Int32 cmpLen = 0; + + rtl_string2UString( &tmpUstring, tmpStr, tmpLen, + osl_getThreadTextEncoding(), OSTRING_TO_OUSTRING_CVTFLAGS ); + OSL_ASSERT(tmpUstring != NULL); + + + typedef struct TestCase + { + sal_Char* comments; + const sal_Unicode* expVal; + sal_Int32 cmpLen; + OUString* input1; + ~TestCase() { delete input1;} + } TestCase; + + TestCase arrTestCase[] = + { + {"test normal ustring",(*tmpUstring).buffer,kTestStr1Len, + new OUString(aUStr1)}, + {"test empty ustring",&tmpUC, 1, new OUString()} + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + const sal_Unicode* pstr = *arrTestCase[i].input1; + + res &= c_rtl_tres_state + ( + hRtlTestResult, + cmpstr((sal_Char*)pstr, + (sal_Char*)arrTestCase[i].expVal, + arrTestCase[i].cmpLen), + arrTestCase[i].comments, + createName( pMeth, "const sal_Unicode*", i ) + ); + } + c_rtl_tres_state_end( hRtlTestResult, "csuc"); +// return ( res ); +} + +//------------------------------------------------------------------------ +// testing the method const sal_Unicode * getStr() +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_getStr( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "getStr"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + const sal_Unicode tmpUC=0x0; + rtl_uString* tmpUstring = NULL; + const sal_Char *tmpStr=kTestStr1; + sal_Int32 tmpLen=(sal_Int32) kTestStr1Len; + // sal_Int32 cmpLen = 0; + + rtl_string2UString( &tmpUstring, tmpStr, tmpLen, + osl_getThreadTextEncoding(), OSTRING_TO_OUSTRING_CVTFLAGS ); + OSL_ASSERT(tmpUstring != NULL); + + + typedef struct TestCase + { + sal_Char* comments; + const sal_Unicode* expVal; + sal_Int32 cmpLen; + OUString* input1; + ~TestCase() { delete input1;} + } TestCase; + + TestCase arrTestCase[] = + { + {"test normal ustring",(*tmpUstring).buffer,kTestStr1Len, + new OUString(aUStr1)}, + {"test empty ustring",&tmpUC, 1, new OUString()} + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + const sal_Unicode* pstr = arrTestCase[i].input1->getStr(); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + cmpstr((sal_Char*)pstr, + (sal_Char*)arrTestCase[i].expVal, + arrTestCase[i].cmpLen), + arrTestCase[i].comments, + createName( pMeth, "getStr", i ) + ); + } + c_rtl_tres_state_end( hRtlTestResult, "getStr"); +// return ( res ); +} + + +//------------------------------------------------------------------------ +// testing the method sal_Int32 reverseCompareTo( const OUString & str ) +//------------------------------------------------------------------------- +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_reverseCompareTo( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "reverseCompareTo"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + sal_Int32 expVal; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1;delete input2;} + } TestCase; + + TestCase arrTestCase[]={ + + {"simple compare, str1 to str5",-1,new OUString(aUStr1), + new OUString(aUStr5) + }, + {"simple compare, str2 to str5",1,new OUString(aUStr2), + new OUString(aUStr5) + }, + {"simple compare, str1 to str9",-1,new OUString(aUStr1), + new OUString(aUStr9) + }, + {"simple compare, str4 to str5",-1,new OUString(aUStr4), + new OUString(aUStr5) + }, + {"simple compare, str5 to str1",+1,new OUString(aUStr5), + new OUString(aUStr1) + }, + {"simple compare, str2 to str1",+1,new OUString(aUStr2), + new OUString(aUStr1) + }, + {"simple compare, str1 to str1",0,new OUString(aUStr1), + new OUString(aUStr1) + }, + {"simple compare, nullString to nullString",0,new OUString(), + new OUString() + }, + {"simple compare, nullString to str2",-1,new OUString(), + new OUString(aUStr2) + }, + {"simple compare, str1 to nullString",+1,new OUString(aUStr1), + new OUString() + } + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Int32 cmpRes = arrTestCase[i].input1->reverseCompareTo + (*arrTestCase[i].input2); + cmpRes = ( cmpRes == 0 ) ? 0 : ( cmpRes > 0 ) ? +1 : -1 ; + sal_Bool lastRes = ( cmpRes == arrTestCase[i].expVal); + + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "compareTo(const OString&)", i ) + ); + + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "reverseCompareTo"); +// return (res); +} + +//------------------------------------------------------------------------ +// testing the method sal_Bool equalsAscii( const sal_Char* asciiStr ) +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_equalsAscii( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "equalsAscii"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + const sal_Char *tmpAstr1="Sun Microsystems\0"; + const sal_Char *tmpAstr2="\0"; + + + + typedef struct TestCase + { + sal_Char* comments; + sal_Bool expVal; + OUString* input1; + const sal_Char* input2; + ~TestCase() { delete input1;} + } TestCase; + + TestCase arrTestCase[]={ + {"str1 with str1 ", sal_True, new OUString( kTestStr1, + kTestStr1Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), tmpAstr1}, + {"str2 with str1 ", sal_False,new OUString( kTestStr2, + kTestStr2Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), tmpAstr1}, + {"null with str1 ", sal_False, new OUString(), tmpAstr1}, + {"null with '' ", sal_True, new OUString(), tmpAstr2}, + {"'' with ''", sal_True, new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), + tmpAstr2} + + }; + + + sal_Bool res = sal_True; + sal_uInt32 i; + + for (i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + + sal_Bool lastRes = (arrTestCase[i].expVal == + arrTestCase[i].input1->equalsAscii(arrTestCase[i].input2)); + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "equalsAscii", i ) + + ); + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "equalsAscii"); +// return ( res ); +} + + + +//------------------------------------------------------------------------ +// testing the method sal_Bool equalsAsciiL( +// const sal_Char* asciiStr, sal_Int32 asciiStrLength ) +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_equalsAsciiL( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "equalsAsciiL"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + const sal_Char *tmpAstr1="Sun Microsystems\0"; + const sal_Char *tmpAstr2="\0"; + const sal_Char *tmpAstr3="Sun Microsystems Java Technology\0"; + + + + typedef struct TestCase + { + sal_Char* comments; + sal_Bool expVal; + OUString* input1; + const sal_Char* input2; + sal_Int32 cmpLen; + ~TestCase() { delete input1;} + } TestCase; + + TestCase arrTestCase[]={ + {"str1 with str1,str1Len ", sal_True, new OUString( kTestStr1, + kTestStr1Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), tmpAstr1, kTestStr1Len}, + {"str2 with str1,str1Len", sal_False,new OUString( kTestStr2, + kTestStr2Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), tmpAstr1, kTestStr1Len}, + {"str1 with str2,str1Len", sal_True,new OUString( kTestStr1, + kTestStr1Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), tmpAstr3, kTestStr1Len}, + {"null with str1,1 ", sal_False, new OUString(), tmpAstr1, 1}, + {"null with '',1 ", sal_False, new OUString(), tmpAstr2, 1}, + {"'' with '', 1", sal_False, new OUString( "", + 0, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), + tmpAstr2, 1} + + }; + + + sal_Bool res = sal_True; + sal_uInt32 i; + + for (i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + + sal_Bool lastRes = (arrTestCase[i].expVal == + arrTestCase[i].input1->equalsAsciiL(arrTestCase[i].input2, + arrTestCase[i].cmpLen) + ); + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "equalsAsciiL", i ) + + ); + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "equalsAsciiL"); +// return ( res ); +} + +//------------------------------------------------------------------------ +// testing the method sal_Int32 compareToAscii( const sal_Char* asciiStr ) +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_compareToAscii( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "compareToAscii"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + const sal_Char *tmpAstr1="Sun Microsystems\0"; + const sal_Char *tmpAstr2="\0"; + const sal_Char *tmpAstr3="sun microsystems java technology\0"; + const sal_Char *tmpAstr4="Sun Microsystems Java Technology\0"; + + + typedef struct TestCase + { + sal_Char* comments; + sal_Int32 expVal; + OUString* input1; + const sal_Char* input2; + ~TestCase() { delete input1;} + } TestCase; + + TestCase arrTestCase[]={ + {"str1 with str1 ", 0, new OUString( kTestStr1, + kTestStr1Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), tmpAstr1}, + {"str1 with '' ", 83, new OUString( kTestStr1, + kTestStr1Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), tmpAstr2}, + {"null with str1 ", -83 , new OUString(), tmpAstr1}, + {"null with '' ", 0, new OUString(), tmpAstr2}, + {"str1 with str9", -32, new OUString( kTestStr1, + kTestStr1Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), + tmpAstr3}, + {"str1 with str2", -32, new OUString( kTestStr1, + kTestStr1Len, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString + ), + tmpAstr4} + + }; + + + sal_Bool res = sal_True; + sal_uInt32 i; + + for (i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Bool lastRes = (arrTestCase[i].expVal == + arrTestCase[i].input1->compareToAscii(arrTestCase[i].input2)); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "equalsAscii", i ) + + ); + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "compareToAscii"); +// return ( res ); +} + + +//------------------------------------------------------------------------ +// testing the method valueOf( sal_Bool b ) +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_valueOf_sal_Bool( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "Bool"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + OUString* expVal; + sal_Bool input1; + + ~TestCase() {delete expVal;} + }TestCase; + + TestCase arrTestCase[]= + { + {"input Bool 'true' and return OUString 'true'", + new OUString("true",4,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString), + sal_True + }, + {"input Bool 'false' and return OUString 'false'", + new OUString("false",5,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString), + sal_False + } + }; + + sal_Bool res; + sal_uInt32 i; + + for(i=0;i<(sizeof(arrTestCase))/(sizeof(TestCase));i++) + { + sal_Bool lastRes=(*arrTestCase[i].expVal== + OUString::valueOf(arrTestCase[i].input1) + + ); + + c_rtl_tres_state(hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "valueOf( sal_Bool b )", i ) + ); + + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "Bool"); +// return(res); +} + +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_valueOf_sal_Unicode( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "Unicode"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + sal_Unicode tmpchar1=97; + sal_Unicode tmpchar2=53; + sal_Unicode tmpchar3=0; + sal_Unicode tmpchar4=32; + sal_Unicode tmpchar5=47; + + typedef struct TestCase + { + sal_Char* comments; + OUString* expVal; + sal_Unicode input1; + + ~TestCase() {delete expVal;} + }TestCase; + + TestCase arrTestCase[]= + { + {"input Unicode 'a' and return OUString 'a'", + new OUString(&tmpchar1,1),tmpchar1 + }, + {"input Unicode '5' and return OUString '5'", + new OUString(&tmpchar2,1), tmpchar2 + }, + {"input Unicode 0 and return OUString 0", + new OUString(&tmpchar3,1),tmpchar3 + }, + {"input Unicode ' ' and return OUString ' '", + new OUString(&tmpchar4,1),tmpchar4 + }, + {"input Unicode '/' and return OUString ' '", + new OUString(&tmpchar5,1),tmpchar5 + } + }; + + sal_Bool res=sal_True; + sal_uInt32 i; + + for(i=0;i<(sizeof(arrTestCase))/(sizeof(TestCase));i++) + { + sal_Bool lastRes=(*(arrTestCase[i].expVal)== + OUString::valueOf(arrTestCase[i].input1)); + + c_rtl_tres_state(hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "valueOf( sal_Unicode c )", i ) + ); + + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "Unicode"); +// return(res); +} + + +/** + * Calls the method valueOf(T, radix) and compares + * returned ustrings with ustrings that passed in the array resArray. + * + * @param T, type of argument, passed to valueOf + * @param resArray, array of result ustrings to compare to + * @param n the number of elements in the array resArray (testcases) + * @param pTestResult the instance of the class TestResult + * @param inArray [optional], array of value that is passed as first argument + * to valueOf + * + * @return true, if all returned ustrings are equal to corresponding ustring in + * resArray else, false. + */ +template <class T> +sal_Bool test_valueOf( const char** resArray, int n, sal_Int16 radix, + hTestResult hRtlTestResult, const T *inArray ) +{ + sal_Bool bRes = sal_True; + + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + sal_Int32 i; +// static sal_Unicode aUchar[50]={0x12}; + + for (i = 0; i < n; i++) + { + ::rtl::OUString aStr1; + + OSL_ENSURE( i < 50, "ERROR: leave aUchar bound"); + +// AStringToUStringCopy(aUchar,resArray[i]); +// ::rtl::OUString aStr2(aUchar); + rtl::OUString aStr2; + aStr2 = OUString::createFromAscii(resArray[i]); + + ::rtl::OUString aStr3( "-",1,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString); + + if (inArray == 0) + { + aStr1 = ::rtl::OUString::valueOf((T)i, radix); + } + else + { + if ( inArray[i] < 0 ) + { + sal_Unicode aStr4[100]; + OSL_ASSERT(strlen(resArray[i]) < 100); + + if(AStringToUStringCopy(aStr4,resArray[i])) + { + aStr2 = aStr3; + aStr2 += aStr4; + } + + } + aStr1 = ::rtl::OUString::valueOf((T)inArray[i], radix); + } + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + aStr2.compareTo(aStr1) == 0, + (sal_Char*)resArray[i], + createName( pMeth, "valueOf", i ) + ); + } + + return (bRes); +} + + +#define test_valueOf_Int32 test_valueOf<sal_Int32> +#define test_valueOf_Int64 test_valueOf<sal_Int64> +// LLA: #define test_valueOf_float test_valueOf<float> +// LLA: #define test_valueOf_double test_valueOf<double> + +//------------------------------------------------------------------------ +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=2 ) +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=8 ) +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=10 ) +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=16 ) +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=36 ) +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int32( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes = sal_False; + + bRes = c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kBinaryNumsStr, + kBinaryNumsCount, kRadixBinary, hRtlTestResult, 0 ), + "kRadixBinary", + "valueOf(sal_Int32, radix 2)" + ); + + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kOctolNumsStr, + kOctolNumsCount, kRadixOctol, hRtlTestResult, 0), + "kRadixOctol", + "valueOf(sal_Int32, radix 8)" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kDecimalNumsStr, + kDecimalNumsCount, kRadixDecimal, hRtlTestResult, 0), + "kRadixDecimal", + "valueOf(sal_Int32, radix 10)" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kHexDecimalNumsStr, + kHexDecimalNumsCount, kRadixHexdecimal, hRtlTestResult, 0), + "kRadixHexdecimal", + "valueOf(sal_Int32, radix 16)" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kBase36NumsStr, + kBase36NumsCount, kRadixBase36, hRtlTestResult, 0), + "kRadixBase36", + "valueOf(sal_Int32, radix 36)" + ); + + + return ( bRes ); +} + +//------------------------------------------------------------------------ +// testing the method valueOf( sal_Int32 l, sal_Int32 radix=2 ) +// where l = large constants +// testing the method valueOf( sal_Int32 l, sal_Int32 radix=8 ) +// where l = large constants +// testing the method valueOf( sal_Int32 l, sal_Int32 radix=10 ) +// where l = large constants +// testing the method valueOf( sal_Int32 l, sal_Int32 radix=16 ) +// where l = large constants +// testing the method valueOf( sal_Int32 l, sal_Int32 radix=36 ) +// where l = large constants +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int32_Bounderies( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes = sal_False; + + bRes = c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kBinaryMaxNumsStr, + kInt32MaxNumsCount, kRadixBinary, + hRtlTestResult, kInt32MaxNums), + "kRadixBinary", + "valueOf(salInt32, radix 2) Bounderies" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kOctolMaxNumsStr, + kInt32MaxNumsCount, kRadixOctol, + hRtlTestResult, kInt32MaxNums), + "kRadixOctol", + "valueOf(salInt32, radix 8) Bounderies" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kDecimalMaxNumsStr, + kInt32MaxNumsCount, kRadixDecimal, + hRtlTestResult, kInt32MaxNums), + "kRadixDecimal", + "valueOf(salInt32, radix 10) Bounderies" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kHexDecimalMaxNumsStr, + kInt32MaxNumsCount, kRadixHexdecimal, + hRtlTestResult, kInt32MaxNums), + "kRadixHexdecimal", + "valueOf(salInt32, radix 16) Bounderies" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32((const char**)kBase36MaxNumsStr, + kInt32MaxNumsCount, kRadixBase36, + hRtlTestResult, kInt32MaxNums), + "kRadixBase36", + "valueOf(salInt32, radix 36) Bounderies" + ); + + return ( bRes ); +} + +//------------------------------------------------------------------------ +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=2 ) +// for negative value +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=8 ) +// for negative value +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=10 ) +// for negative value +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=16 ) +// for negative value +// testing the method valueOf( sal_Int32 i, sal_Int16 radix=36 ) +// for negative value +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int32_Negative( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes = sal_False; + sal_Int32 inArr[kBase36NumsCount]; + sal_Int32 i; + + for (i = 0; i < kBase36NumsCount; i++ ) + inArr[i] = -i; + + bRes = c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32( kBinaryNumsStr, kBinaryNumsCount, + kRadixBinary, hRtlTestResult, inArr ), + "negative Int32, kRadixBinary", + "valueOf( negative Int32, radix 2 )" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32( kOctolNumsStr, kOctolNumsCount, + kRadixOctol, hRtlTestResult, inArr ), + "negative Int32, kRadixOctol", + "valueOf( negative Int32, radix 8 )" + ); + + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32( kDecimalNumsStr, kDecimalNumsCount, + kRadixDecimal, hRtlTestResult, inArr ), + "negative Int32, kRadixDecimal", + "valueOf( negative Int32, radix 10 )" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32( kHexDecimalNumsStr, kHexDecimalNumsCount, + kRadixHexdecimal, hRtlTestResult, inArr ), + "negative Int32, kRadixHexdecimal", + "valueOf( negative Int32, radix 16 )" + ); + + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int32( kBase36NumsStr, kBase36NumsCount, + kRadixBase36, hRtlTestResult, inArr ), + "negative Int32, kRadixBase36", + "valueOf( negative Int32, radix 36 )" + ); + + return ( bRes ); +} +//------------------------------------------------------------------------ +// testing the method valueOf( sal_Int32 l, sal_Int32 radix ) where radix = -5 +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int32_WrongRadix( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes = sal_False; + + sal_Int32 intVal = 11; + + ::rtl::OUString aStr1; + ::rtl::OUString aStr2("11",2,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString); + + aStr1 = aStr1.valueOf( intVal, -5 ); + + bRes = c_rtl_tres_state + ( + hRtlTestResult, + aStr2.compareTo( aStr1 ) == 0, + "if radix not valid then radix must be 10", + "valueOf(sal_Int32, sal_Int32 radix): radix = -5" + ); + + return (bRes); +} + + +//------------------------------------------------------------------------ +static sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int32_defaultParam( + hTestResult hRtlTestResult ) +{ + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + sal_Char* newUChar1="15"; + sal_Char* newUChar2="0"; + sal_Char* newUChar3="-15"; + sal_Char* newUChar4="2147483647"; + sal_Char* newUChar5="-2147483648"; + + typedef struct TestCase + { + sal_Char* comments; + sal_Int32 input1; + OUString* expVal; + ~TestCase() {delete expVal;} + }TestCase; + + TestCase arrTestCase[]= + { + {"input Int32 15 and return OUString 15",15, + new OUString(newUChar1,2,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + {"input Int32 0 and return OUString 0",0, + new OUString(newUChar2,1,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + {"input Int32 -15 and return OUString -15",-15, + new OUString(newUChar3,3,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + {"input Int32 2147483647 and return OUString 2147483647", SAL_MAX_INT32 /* 2147483647 */, + new OUString(newUChar4,10,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + {"input Int32 -2147483648 and return OUString -2147483648", + SAL_MIN_INT32 /* 2-2147483648 */, + new OUString(newUChar5,11,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + } + }; + + sal_Bool res=sal_True; + sal_uInt32 i; + + for(i=0;i<(sizeof(arrTestCase))/(sizeof(TestCase));i++) + { + sal_Bool lastRes=(*(arrTestCase[i].expVal)== + OUString::valueOf(arrTestCase[i].input1)); + + c_rtl_tres_state(hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, + "valueOf( sal_Int32 i, sal_Int16 radix = 10 )", i ) + ); + + res &= lastRes; + } + + return(res); + +} +//------------------------------------------------------------------------ +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=2 ) +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=8 ) +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=10 ) +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=16 ) +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=36 ) +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int64( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes = sal_False; + + bRes = c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kBinaryNumsStr, + kBinaryNumsCount, kRadixBinary, hRtlTestResult, 0), + "kRadixBinary", + "valueOf(sal_Int64, radix 2)_" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kOctolNumsStr, + kOctolNumsCount, kRadixOctol, hRtlTestResult, 0), + "kRadixOctol", + "valueOf(sal_Int64, radix 8)_" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kDecimalNumsStr, + kDecimalNumsCount, kRadixDecimal, hRtlTestResult, 0), + "kRadixDecimal", + "valueOf(sal_Int64, radix 10)_" + ); + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kHexDecimalNumsStr, + kHexDecimalNumsCount, kRadixHexdecimal, hRtlTestResult, 0), + "kRadixHexdecimal", + "valueOf(sal_Int64, radix 16)_" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kBase36NumsStr, + kBase36NumsCount, kRadixBase36, hRtlTestResult, 0), + "kRadixBase36", + "valueOf(sal_Int64, radix 36)_" + ); + + return (bRes); +} + +//------------------------------------------------------------------------ +// testing the method valueOf( sal_Int64 l, sal_Int32 radix=2 ) +// where l = large constants +// testing the method valueOf( sal_Int64 l, sal_Int32 radix=8 ) +// where l = large constants +// testing the method valueOf( sal_Int64 l, sal_Int32 radix=10 ) +// where l = large constants +// testing the method valueOf( sal_Int64 l, sal_Int32 radix=16 ) +// where l = large constants +// testing the method valueOf( sal_Int64 l, sal_Int32 radix=36 ) +// where l = large constants +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int64_Bounderies( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes = sal_False; + + bRes = c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kBinaryMaxNumsStr, + kInt64MaxNumsCount, kRadixBinary, + hRtlTestResult, kInt64MaxNums), + "kRadixBinary", + "valueOf(salInt64, radix 2) Bounderies" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kOctolMaxNumsStr, + kInt64MaxNumsCount, kRadixOctol, + hRtlTestResult, kInt64MaxNums), + "kRadixOctol", + "valueOf(salInt64, radix 8) Bounderies" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kDecimalMaxNumsStr, + kInt64MaxNumsCount, kRadixDecimal, + hRtlTestResult, kInt64MaxNums), + "kRadixDecimal", + "valueOf(salInt64, radix 10) Bounderies" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kHexDecimalMaxNumsStr, + kInt64MaxNumsCount, kRadixHexdecimal, + hRtlTestResult, kInt64MaxNums), + "kRadixHexdecimal", + "valueOf(salInt64, radix 16) Bounderies" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64((const char**)kBase36MaxNumsStr, + kInt64MaxNumsCount, kRadixBase36, + hRtlTestResult, kInt64MaxNums), + "kRadixBase36", + "valueOf(salInt64, radix 36) Bounderies" + ); + + return ( bRes ); +} + +//------------------------------------------------------------------------ +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=2 ) +// for negative value +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=8 ) +// for negative value +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=10 ) +// for negative value +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=16 ) +// for negative value +// testing the method valueOf( sal_Int64 l, sal_Int16 radix=36 ) +// for negative value +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int64_Negative( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes = sal_False; + + sal_Int64 inArr[36]; + sal_Int32 i; + + for (i = 0; i < 36; i++) { + inArr[i] = -i; + } + + + bRes = c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64( kBinaryNumsStr, kBinaryNumsCount, + kRadixBinary, hRtlTestResult, inArr ), + "negative Int64, kRadixBinary", + "valueOf( negative Int64, radix 2 )" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64( kOctolNumsStr, kOctolNumsCount, + kRadixOctol, hRtlTestResult, inArr ), + "negative Int64, kRadixOctol", + "valueOf( negative Int64, radix 8 )" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64( kDecimalNumsStr, kDecimalNumsCount, + kRadixDecimal, hRtlTestResult, inArr ), + "negative Int64, kRadixDecimal", + "valueOf( negative Int64, radix 10 )" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64( kHexDecimalNumsStr, kHexDecimalNumsCount, + kRadixHexdecimal, hRtlTestResult, inArr ), + "negative Int64, kRadixHexDecimal", + "valueOf( negative Int64, radix 16 )" + ); + + bRes &= c_rtl_tres_state + ( + hRtlTestResult, + test_valueOf_Int64( kBase36NumsStr, kBase36NumsCount, + kRadixBase36, hRtlTestResult, inArr), + "negative Int64, kRadixBase36", + "valueOf( negative Int64, radix 36 )" + ); + + return (bRes); +} +//------------------------------------------------------------------------ +// testing the method valueOf( sal_Int64 l, sal_Int32 radix ) +// where radix = -5 +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int64_WrongRadix( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes = sal_False; + + sal_Int64 intVal = 11; + + ::rtl::OUString aStr1; + ::rtl::OUString aStr2("11",2,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString); + + aStr1 = aStr1.valueOf( intVal, -5 ); + + bRes = c_rtl_tres_state + ( + hRtlTestResult, + aStr2.compareTo(aStr1) == 0, + "if radix not valid then radix must be 10", + "valueOf(sal_Int64, sal_Int32 radix): radix = -5" + ); + + return (bRes); +} + +//------------------------------------------------------------------------ +static sal_Bool SAL_CALL test_rtl_OUString_valueOf_Int64_defaultParam( + hTestResult hRtlTestResult ) +{ + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + sal_Char* newUChar1="15"; + sal_Char* newUChar2="0"; + sal_Char* newUChar3="-15"; + sal_Char* newUChar4= "9223372036854775807"; + sal_Char* newUChar5="-9223372036854775808"; + + typedef struct TestCase + { + sal_Char* comments; + sal_Int64 input1; + OUString* expVal; + ~TestCase() {delete expVal;} + }TestCase; + + TestCase arrTestCase[]= + { + {"input Int64 15 and return OUString 15",15, + new OUString(newUChar1,2,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + {"input Int64 0 and return OUString 0",0, + new OUString(newUChar2,1,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + {"input Int64 -15 and return OUString -15",-15, + new OUString(newUChar3,3,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + {"input Int64 9223372036854775807 and return 9223372036854775807", + SAL_MAX_INT64 /* 9223372036854775807*/, + new OUString(newUChar4,19,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + {"input Int64 -9223372036854775808 and return -9223372036854775808", + SAL_MIN_INT64 /* 9223372036854775808*/, + new OUString(newUChar5,20,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + } + }; + + sal_Bool res=sal_True; + sal_uInt32 i; + + for(i=0;i<(sizeof(arrTestCase))/(sizeof(TestCase));i++) + { + sal_Bool lastRes=(*(arrTestCase[i].expVal)== + OUString::valueOf(arrTestCase[i].input1)); + + c_rtl_tres_state(hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, + "valueOf( sal_Int64 i, sal_Int16 radix = 10 )", i ) + ); + + res &= lastRes; + } + + return(res); + +} +//------------------------------------------------------------------------ +// testing the method valueOf( float f ) +//------------------------------------------------------------------------ +// LLA: sal_Bool SAL_CALL test_rtl_OUString_valueOf_float( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: sal_Char methName[MAXBUFLENGTH]; +// LLA: sal_Char* pMeth =methName; +// LLA: +// LLA: typedef struct TestCase +// LLA: { +// LLA: sal_Char* comments; +// LLA: float input1; +// LLA: OUString* expVal; +// LLA: +// LLA: ~TestCase() {delete expVal;} +// LLA: } TestCase; +// LLA: +// LLA: TestCase arrTestCase[] = +// LLA: { +// LLA: { "3.0", 3.0, new OUString("3.0",3,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString) }, +// LLA: { "3.5", 3.5f, new OUString("3.5",3,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: { "3.0625", 3.0625f, new OUString("3.0625",6,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: { "3.502525", 3.502525f, new OUString("3.502525",8, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString) }, +// LLA: { "3.141592", 3.141592f, new OUString("3.141592",8, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString) }, +// LLA: { "3.5025255", 3.5025255f, new OUString("3.5025255",9, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString) }, +// LLA: { "3.0039062", 3.00390625f, new OUString("3.0039062",9, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString) } +// LLA: }; +// LLA: +// LLA: sal_Bool res = sal_True; +// LLA: sal_Int32 i; +// LLA: +// LLA: for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) +// LLA: { +// LLA: ::rtl::OUString aStr1; +// LLA: aStr1 = aStr1.valueOf( arrTestCase[i].input1 ); +// LLA: sal_Bool lastRes = (arrTestCase[i].expVal->compareTo(aStr1) == 0); +// LLA: +// LLA: c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: lastRes, +// LLA: arrTestCase[i].comments, +// LLA: createName( pMeth, "valueof_float", i) +// LLA: ); +// LLA: +// LLA: res &= lastRes; +// LLA: +// LLA: } +// LLA: +// LLA: return ( res ); +// LLA: } + +//------------------------------------------------------------------------ +// testing the method valueOf( float f ) for negative value +//------------------------------------------------------------------------ +// LLA: sal_Bool SAL_CALL test_rtl_OUString_valueOf_Float_Negative( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: sal_Char methName[MAXBUFLENGTH]; +// LLA: sal_Char* pMeth =methName; +// LLA: +// LLA: typedef struct TestCase +// LLA: { +// LLA: sal_Char* comments; +// LLA: float input1; +// LLA: OUString* expVal; +// LLA: +// LLA: ~TestCase() {delete expVal;} +// LLA: } TestCase; +// LLA: +// LLA: TestCase arrTestCase[] = +// LLA: { +// LLA: { "-3.0", -3.0, new OUString("-3.0",4,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString) }, +// LLA: { "-3.5", -3.5f, new OUString("-3.5",4,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: { "-3.0625", -3.0625f, new OUString("-3.0625",7, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString)}, +// LLA: { "-3.502525", -3.502525f, new OUString("-3.502525",9, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString) }, +// LLA: { "-3.141592", -3.141592f, new OUString("-3.141592",9, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString) }, +// LLA: { "-3.5025255", -3.5025255f, new OUString("-3.5025255",10, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString) }, +// LLA: { "-3.0039062", -3.00390625f, new OUString("-3.0039062",10, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString) } +// LLA: }; +// LLA: +// LLA: sal_Bool res = sal_True; +// LLA: sal_Int32 i; +// LLA: +// LLA: for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) +// LLA: { +// LLA: ::rtl::OUString aStr1; +// LLA: aStr1 = aStr1.valueOf( arrTestCase[i].input1 ); +// LLA: sal_Bool lastRes = (arrTestCase[i].expVal->compareTo(aStr1) == 0); +// LLA: +// LLA: c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: lastRes, +// LLA: arrTestCase[i].comments, +// LLA: createName( pMeth, "valueof_negative float", i) +// LLA: ); +// LLA: +// LLA: res &= lastRes; +// LLA: +// LLA: } +// LLA: +// LLA: return ( res ); +// LLA: } + +//------------------------------------------------------------------------ +// testing the method valueOf( double f ) +//------------------------------------------------------------------------ +// LLA: sal_Bool SAL_CALL test_rtl_OUString_valueOf_double( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: sal_Char methName[MAXBUFLENGTH]; +// LLA: sal_Char* pMeth =methName; +// LLA: +// LLA: typedef struct TestCase +// LLA: { +// LLA: sal_Char* comments; +// LLA: double input1; +// LLA: OUString* expVal; +// LLA: +// LLA: ~TestCase() {delete expVal;} +// LLA: } TestCase; +// LLA: +// LLA: TestCase arrTestCase[] = +// LLA: { +// LLA: {"3.0", 3.0, new OUString("3.0",3,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"3.5", 3.5, new OUString("3.5",3,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"3.0625", 3.0625, new OUString("3.0625",6,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"3.1415926535", 3.1415926535, new OUString("3.1415926535",12, +// LLA: kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString)}, +// LLA: {"3.1415926535897931", 3.141592653589793, +// LLA: new OUString("3.1415926535897931",18,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"3.1415926535897931", 3.1415926535897932, +// LLA: new OUString("3.1415926535897931",18,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"3.1415926535897931", 3.14159265358979323, +// LLA: new OUString("3.1415926535897931",18,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"3.1415926535897931", 3.141592653589793238462643, +// LLA: new OUString("3.1415926535897931",18,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)} +// LLA: }; +// LLA: +// LLA: sal_Bool res = sal_True; +// LLA: sal_Int32 i; +// LLA: +// LLA: for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) +// LLA: { +// LLA: ::rtl::OUString aStr1; +// LLA: aStr1 = aStr1.valueOf( arrTestCase[i].input1 ); +// LLA: sal_Bool lastRes = (arrTestCase[i].expVal->compareTo(aStr1) == 0); +// LLA: +// LLA: c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: lastRes, +// LLA: arrTestCase[i].comments, +// LLA: createName( pMeth, "valueof_double", i) +// LLA: ); +// LLA: +// LLA: res &= lastRes; +// LLA: +// LLA: } +// LLA: +// LLA: return ( res ); +// LLA: } + + +//------------------------------------------------------------------------ +// testing the method valueOf( double f ) for negative value +//------------------------------------------------------------------------ +// LLA: sal_Bool SAL_CALL test_rtl_OUString_valueOf_Double_Negative( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: sal_Char methName[MAXBUFLENGTH]; +// LLA: sal_Char* pMeth =methName; +// LLA: +// LLA: typedef struct TestCase +// LLA: { +// LLA: sal_Char* comments; +// LLA: double input1; +// LLA: OUString* expVal; +// LLA: +// LLA: ~TestCase() {delete expVal;} +// LLA: } TestCase; +// LLA: +// LLA: TestCase arrTestCase[] = +// LLA: { +// LLA: {"-3.0", -3.0, new OUString("-3.0",4,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"-3.5", -3.5, new OUString("-3.5",4,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"-3.0625", -3.0625, new OUString("-3.0625",7,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"-3.1415926535", -3.1415926535, +// LLA: new OUString("-3.1415926535",13,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"-3.1415926535897931", -3.141592653589793, +// LLA: new OUString("-3.1415926535897931",19,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"-3.1415926535897931", -3.1415926535897932, +// LLA: new OUString("-3.1415926535897931",19,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"-3.1415926535897931", -3.14159265358979323, +// LLA: new OUString("-3.1415926535897931",19,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)}, +// LLA: {"-3.1415926535897931", -3.141592653589793238462643, +// LLA: new OUString("-3.1415926535897931",19,kEncodingRTLTextUSASCII, +// LLA: kConvertFlagsOStringToOUString)} +// LLA: }; +// LLA: +// LLA: sal_Bool res = sal_True; +// LLA: sal_Int32 i; +// LLA: +// LLA: for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) +// LLA: { +// LLA: ::rtl::OUString aStr1; +// LLA: aStr1 = aStr1.valueOf( arrTestCase[i].input1 ); +// LLA: sal_Bool lastRes = (arrTestCase[i].expVal->compareTo(aStr1) == 0); +// LLA: +// LLA: c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: lastRes, +// LLA: arrTestCase[i].comments, +// LLA: createName( pMeth, "valueof_nagative double", i) +// LLA: ); +// LLA: +// LLA: res &= lastRes; +// LLA: +// LLA: } +// LLA: +// LLA: return ( res ); +// LLA: } + +//------------------------------------------------------------------------ +// testing the method valueOf() +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_valueOf( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "valueOf"); + sal_Bool bTState = test_rtl_OUString_valueOf_Int32( hRtlTestResult ); + bTState &= test_rtl_OUString_valueOf_Int32_Bounderies( hRtlTestResult ); + bTState &= test_rtl_OUString_valueOf_Int32_Negative( hRtlTestResult ); + bTState &= test_rtl_OUString_valueOf_Int32_WrongRadix( hRtlTestResult ); + bTState &= test_rtl_OUString_valueOf_Int32_defaultParam( + hRtlTestResult ); + bTState &= test_rtl_OUString_valueOf_Int64( hRtlTestResult ); + bTState &= test_rtl_OUString_valueOf_Int64_Bounderies( hRtlTestResult ); + bTState &= test_rtl_OUString_valueOf_Int64_Negative( hRtlTestResult ); + bTState &= test_rtl_OUString_valueOf_Int64_WrongRadix( hRtlTestResult ); + bTState &= test_rtl_OUString_valueOf_Int64_defaultParam( + hRtlTestResult ); + // LLA: bTState &= test_rtl_OUString_valueOf_float( hRtlTestResult ); + // LLA: bTState &= test_rtl_OUString_valueOf_Float_Negative( hRtlTestResult ); + + // LLA: bTState &= test_rtl_OUString_valueOf_double( hRtlTestResult ); + // LLA: bTState &= test_rtl_OUString_valueOf_Double_Negative( hRtlTestResult ); + c_rtl_tres_state_end( hRtlTestResult, "valueOf"); +// return ( bTState ); +} +//------------------------------------------------------------------------ +// this is my testing code +// testing the method createFromAscii( const sal_Char * value ) +//------------------------------------------------------------------------ + +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_createFromAscii( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "createFromAscii"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + + typedef struct TestCase + { + sal_Char* comments; + const sal_Char* input1; + OUString* expVal; + ~TestCase() {delete expVal;} + + }TestCase; + + TestCase arrTestCase[]= + { + + { "create OUString from sal_Char" ,kTestStr1, + new OUString(kTestStr1,kTestStr1Len,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + }, + { + "create OUString from empty", "", + new OUString() + }, + { + "create OUString from empty(string arg = '\\0')","", + new OUString("",0,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString) + } + + }; + + sal_Bool res; + sal_uInt32 i; + + for(i=0;i<(sizeof(arrTestCase))/(sizeof(TestCase));i++) + { + sal_Bool lastRes=(*(arrTestCase[i].expVal)== + OUString::createFromAscii(arrTestCase[i].input1)); + + + { + c_rtl_tres_state(hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "createFromAscii", i ) + ); + } + + res&=lastRes; + + } + + c_rtl_tres_state_end( hRtlTestResult, "createFromAscii"); +// return(res); +} +//------------------------------------------------------------------------ +// testing the method index( ) +//------------------------------------------------------------------------ +template <class T> +sal_Bool test_index( const T* input1, int num,const sal_Int32* input2, + const sal_Int32* expVal,int base,rtlTestResult hRtlTestResult) +{ + sal_Bool res=sal_True; + sal_Char methName[MAXBUFLENGTH]; + sal_Char *meth = '\0'; + sal_Char* pMeth=methName; + sal_Int32 i; + sal_Bool lastRes=sal_False; + + for(i=0;i<num;i++) + { + OUString str(aUStr2); + + if(base==0) + { + lastRes=(str.indexOf(input1[i])==expVal[i]); + meth="indexOf_001"; + } + if(base==1) + { + lastRes=(str.indexOf(input1[i],input2[i])==expVal[i]); + meth="indexOf_002"; + } +// LLA: if(base==2) +// LLA: { +// LLA: lastRes=(str.lastIndexOf(input1[i])==expVal[i]); +// LLA: meth="lastIndexOf_001(sal_Unicode)"; +// LLA: } +// LLA: if(base==3) +// LLA: { +// LLA: /* +// LLA: OUString s4(&input1[i]); +// LLA: rtl::OString sStr; +// LLA: sStr <<= str; +// LLA: t_print("str = %s\n", sStr.getStr()); +// LLA: rtl::OString sInput1; +// LLA: sInput1 <<= s4; // rtl::OUString((sal_Unicode*)input1[i]); +// LLA: t_print("%d = lastIndexOf(\"%s\", %d) =? %d\n", str.lastIndexOf(input1[i], input2[i]), sInput1.getStr(), input2[i], expVal[i]); +// LLA: */ +// LLA: lastRes=(str.lastIndexOf(input1[i],input2[i])==expVal[i]); +// LLA: meth="lastIndexOf_002(sal_Unicode , sal_Int32 )"; +// LLA: } + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + "index", + createName( pMeth,meth, i ) + ); + + res &= lastRes; + } + + return( res ); +} +template <class T> +sal_Bool test_indexStr( const T** input1, int num,const sal_Int32* input2, + const sal_Int32* expVal,int base,rtlTestResult hRtlTestResult) +{ + sal_Bool res=sal_True; + sal_Char methName[MAXBUFLENGTH]; + sal_Char *meth = '\0'; + sal_Char* pMeth=methName; + sal_Int32 i; + sal_Bool lastRes=sal_False; + + for(i=0;i<num;i++) + { + OUString str(aUStr2); + + + if(base==0) + { + OUString s1(input1[i]); + lastRes=(str.indexOf(s1)==expVal[i]); + meth="indexOf_003"; + } + if(base==1) + { + OUString s2(input1[i]); + lastRes=(str.indexOf(s2,input2[i])==expVal[i]); + meth="indexOf_004"; + } +// LLA: if(base==2) +// LLA: { +// LLA: OUString s3(input1[i]); +// LLA: lastRes=(str.lastIndexOf(s3)==expVal[i]); +// LLA: meth="lastIndexOf_003(const OUString)"; +// LLA: } +// LLA: if(base==3) +// LLA: { +// LLA: OUString s4(input1[i]); +// LLA: +// LLA: rtl::OString sStr; +// LLA: sStr <<= str; +// LLA: t_print("str = \"%s\"\n", sStr.getStr()); +// LLA: rtl::OString sInput1; +// LLA: sInput1 <<= s4; // rtl::OUString((sal_Unicode*)input1[i]); +// LLA: t_print("%d = lastIndexOf(\"%s\", %d) =? %d\n", str.lastIndexOf(input1[i], input2[i]), sInput1.getStr(), input2[i], expVal[i]); +// LLA: +// LLA: lastRes=(str.lastIndexOf(s4,input2[i])==expVal[i]); +// LLA: meth="lastIndexOf_004(const OUString,sal_Int32)"; +// LLA: } + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + "index", + createName( pMeth,meth, i ) + ); + + res &= lastRes; + } + + return( res ); +} +//------------------------------------------------------------------------ +// testing the method indexOf( ) +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_indexOf_001( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes=sal_False; + + bRes=c_rtl_tres_state + ( + hRtlTestResult, + test_index<sal_Unicode>((const sal_Unicode*)input1Default, + nDefaultCount,input2Default, + expValDefault,0,hRtlTestResult), + "index", + "indexDefault(sal_Unicode ch, sal_Int32 fromIndex = 0)" + ); + + return ( bRes ); +} +//------------------------------------------------------------------------ +// testing the method indexOf( ) +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_indexOf_002( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes=sal_False; + + bRes=c_rtl_tres_state + ( + hRtlTestResult, + test_index<sal_Unicode>((const sal_Unicode*)input1Normal, + nNormalCount,input2Normal, + expValNormal,1,hRtlTestResult), + "index", + "indexNormal(sal_Unicode ch, sal_Int32 fromIndex)" + ); + + return ( bRes ); +} +//------------------------------------------------------------------------ +// testing the method indexOf( OUString ch, sal_Int32 fromIndex = 0 ) +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_indexOf_003( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes=sal_False; + + bRes=c_rtl_tres_state + ( + hRtlTestResult, + test_indexStr<sal_Unicode>((const sal_Unicode**)input1StrDefault, + nStrDefaultCount,input2StrDefault, + expValStrDefault,0,hRtlTestResult), + "index", + "indexDefault(OUString ch, sal_Int32 fromIndex = 0)" + ); + + return ( bRes ); +} +//------------------------------------------------------------------------ +// testing the method indexOf( OUString ch, sal_Int32 fromIndex ) +//------------------------------------------------------------------------ +sal_Bool SAL_CALL test_rtl_OUString_indexOf_004( + hTestResult hRtlTestResult ) +{ + sal_Bool bRes=sal_False; + + bRes=c_rtl_tres_state + ( + hRtlTestResult, + test_indexStr<sal_Unicode>((const sal_Unicode**)input1StrNormal, + nStrNormalCount,input2StrNormal, + expValStrNormal,1,hRtlTestResult), + "indexOf", + "indexOf(OUString ch, sal_Int32 fromIndex)" + ); + + return ( bRes ); +} +// LLA: //------------------------------------------------------------------------ +// LLA: // testing the method lastIndexOf( sal_Unicode ch ) +// LLA: //------------------------------------------------------------------------ +// LLA: sal_Bool SAL_CALL test_rtl_OUString_lastIndexOf_001( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: sal_Bool bRes=sal_False; +// LLA: +// LLA: bRes=c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: test_index<sal_Unicode>((const sal_Unicode*)input1lastDefault, +// LLA: nlastDefaultCount,input2lastDefault, +// LLA: expVallastDefault,2,hRtlTestResult), +// LLA: "lastIndex", +// LLA: "lastIndexDefault(sal_Unicode ch)" +// LLA: ); +// LLA: +// LLA: return ( bRes ); +// LLA: } +// LLA: //------------------------------------------------------------------------ +// LLA: // testing the method lastIndexOf( sal_Unicode ch, sal_Int32 fromIndex ) +// LLA: //------------------------------------------------------------------------ +// LLA: sal_Bool SAL_CALL test_rtl_OUString_lastIndexOf_002( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: sal_Bool bRes=sal_False; +// LLA: +// LLA: bRes=c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: test_index<sal_Unicode>((const sal_Unicode*)input1lastNormal, +// LLA: nlastNormalCount,input2lastNormal, +// LLA: expVallastNormal,3,hRtlTestResult), +// LLA: "lastIndex", +// LLA: "lastIndexNormal(sal_Unicode ch, sal_Int32 fromIndex)" +// LLA: ); +// LLA: +// LLA: return ( bRes ); +// LLA: } +// LLA: //------------------------------------------------------------------------ +// LLA: // testing the method lastIndexOf( OUString ch ) +// LLA: //------------------------------------------------------------------------ +// LLA: sal_Bool SAL_CALL test_rtl_OUString_lastIndexOf_003( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: sal_Bool bRes=sal_False; +// LLA: +// LLA: bRes=c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: test_indexStr<sal_Unicode>((const sal_Unicode**)input1StrLastDefault, +// LLA: nStrLastDefaultCount,input2StrLastDefault, +// LLA: expValStrLastDefault,2,hRtlTestResult), +// LLA: "lastIndexOf", +// LLA: "lastIndexOf(OUString ch)" +// LLA: ); +// LLA: +// LLA: return ( bRes ); +// LLA: } +// LLA: //------------------------------------------------------------------------ +// LLA: // testing the method lastIndexOf( OUString ch, sal_Int32 fromIndex ) +// LLA: //------------------------------------------------------------------------ +// LLA: sal_Bool SAL_CALL test_rtl_OUString_lastIndexOf_004( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: sal_Bool bRes=sal_False; +// LLA: +// LLA: for (int i=0;i<nStrLastNormalCount;i++) +// LLA: { +// LLA: rtl::OUString aStr = rtl::OUString(input1StrLastNormal[i]); +// LLA: volatile int dummy = 0; +// LLA: } +// LLA: +// LLA: bRes=c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: test_indexStr<sal_Unicode>((const sal_Unicode**)input1StrLastNormal, +// LLA: nStrLastNormalCount,input2StrLastNormal, +// LLA: expValStrLastNormal,3,hRtlTestResult), +// LLA: "lastIndexOf", +// LLA: "lastIndexOf(OUString ch, sal_Int32 fromIndex)" +// LLA: ); +// LLA: +// LLA: return ( bRes ); +// LLA: } +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_indexOf( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "indexOf"); + sal_Bool res = test_rtl_OUString_indexOf_001(hRtlTestResult); + res &= test_rtl_OUString_indexOf_002(hRtlTestResult); + res &= test_rtl_OUString_indexOf_003(hRtlTestResult); + res &= test_rtl_OUString_indexOf_004(hRtlTestResult); + c_rtl_tres_state_end( hRtlTestResult, "indexOf"); +// return ( res ); +} +//------------------------------------------------------------------------ +// LLA: extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_lastIndexOf( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: c_rtl_tres_state_start( hRtlTestResult, "lastIndexOf"); +// LLA: sal_Bool res = test_rtl_OUString_lastIndexOf_001(hRtlTestResult); +// LLA: res &= test_rtl_OUString_lastIndexOf_002(hRtlTestResult); +// LLA: res &= test_rtl_OUString_lastIndexOf_003(hRtlTestResult); +// LLA: res &= test_rtl_OUString_lastIndexOf_004(hRtlTestResult); +// LLA: c_rtl_tres_state_end( hRtlTestResult, "lastIndexOf"); +// LLA: // return ( res ); +// LLA: } +//------------------------------------------------------------------------ +// testing the method concat( const OString & aStr ) +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_concat( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "concat"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth =methName; + + typedef struct TestCase + { + sal_Char* comments; + OUString* expVal; + OUString* input1; + OUString* input2; + ~TestCase() { delete input1;delete input2; delete expVal;} + } TestCase; + + TestCase arrTestCase[] = + { + {"concatenates two ustrings",new OUString(aUStr1), + new OUString(aUStr7), new OUString(aUStr8)}, + {"concatenates empty ustring",new OUString(aUStr1), + new OUString(aUStr1), new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString)}, + {"concatenates to empty ustring",new OUString(aUStr1),new OUString("", + 0,kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + new OUString(aUStr1)}, + {"concatenates two empty ustrings",new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString)}, + {"concatenates ustring constructed by default constructor", + new OUString(aUStr1),new OUString(aUStr1), new OUString()}, + {"concatenates to ustring constructed by default constructor", + new OUString(aUStr1),new OUString(), new OUString(aUStr1)}, + {"concatenates two ustrings constructed by default constructor", + new OUString(),new OUString(), new OUString()} + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + OUString str = arrTestCase[i].input1->concat(*arrTestCase[i].input2); + sal_Bool lastRes = (str == *arrTestCase[i].expVal); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "concat", i) + ); + + res &= lastRes; + + } + c_rtl_tres_state_end( hRtlTestResult, "concat"); +// return ( res ); +} +//------------------------------------------------------------------------ +// testing the method replaceAt( sal_Int32 index, sal_Int32 count, +// const OUString& newStr ) +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_replaceAt( + rtlTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "replaceAt"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + OUString* expVal; + OUString* input; + OUString* newStr; + sal_Int32 index; + sal_Int32 count; + + ~TestCase() { delete input; delete expVal; delete newStr;} + } TestCase; + + TestCase arrTestCase[]= + { + + { "string differs", new OUString(aUStr2), new OUString(aUStr22), + new OUString(aUStr2), 0, kTestStr22Len }, + + { "larger index", new OUString(aUStr1), new OUString(aUStr7), + new OUString(aUStr8), 64, kTestStr8Len }, + + { "larger count", new OUString(aUStr2), new OUString(aUStr22), + new OUString(aUStr2),0, 64 }, + + { "navigate index", new OUString(aUStr2), new OUString(aUStr22), + new OUString(aUStr2), -64, 64 }, + + { "null ustring", + new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + new OUString(aUStr14), + new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + 0, kTestStr14Len } + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for (i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + ::rtl::OUString aStr1; + aStr1 = arrTestCase[i].input->replaceAt( arrTestCase[i].index, + arrTestCase[i].count, *arrTestCase[i].newStr ); + + sal_Bool lastRes = ( arrTestCase[i].expVal->compareTo(aStr1) == 0 ); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "replaceAt", i ) + + ); + res &= lastRes; + } + + c_rtl_tres_state_end( hRtlTestResult, "replaceAt"); +// return ( res ); +} +//------------------------------------------------------------------------ +// this is my testing code +// testing the method replace( sal_Unicode oldChar, sal_Unicode newChar ) +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_replace( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "replace"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + OUString* expVal; + OUString* input; + sal_Unicode oldChar; + sal_Unicode newChar; + + ~TestCase() { delete input; delete expVal;} + } TestCase; + + TestCase arrTestCase[]= + { + {"ustring differs", new OUString(aUStr18), new OUString(aUStr4),83,115}, + {"ustring differs", new OUString(aUStr19), new OUString(aUStr17),32,45}, + {"ustring must be empty", new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString),83,23}, + {"ustring must be empty", new OUString(), + new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString),83,23}, + {"same ustring, no replace ", new OUString(aUStr22), + new OUString(aUStr22),42,56} + }; + + + sal_Bool res = sal_True; + sal_uInt32 i; + + for (i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + ::rtl::OUString aStr1; + aStr1= arrTestCase[i].input->replace(arrTestCase[i].oldChar,arrTestCase[i].newChar); + res &= c_rtl_tres_state + ( + hRtlTestResult, + (arrTestCase[i].expVal->compareTo(aStr1) == 0), + arrTestCase[i].comments, + createName( pMeth, "replace", i ) + + ); + } + c_rtl_tres_state_end( hRtlTestResult, "replace"); +// return ( res ); +} +//------------------------------------------------------------------------ +// testing the method toAsciiLowerCase() +//----------------------------------------------------------------------- +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_toAsciiLowerCase( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "toAsciiLowerCase"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth =methName; + + typedef struct TestCase + { + sal_Char* comments; + OUString* expVal; + OUString* input1; + ~TestCase() { delete input1; delete expVal;} + } TestCase; + + TestCase arrTestCase[] = + { + + {"only uppercase",new OUString(aUStr5),new OUString(aUStr4)}, + {"different cases",new OUString(aUStr5),new OUString(aUStr1)}, + {"different cases",new OUString(aUStr5),new OUString(aUStr3)}, + {"only lowercase",new OUString(aUStr5),new OUString(aUStr5)}, + {"empty ustring",new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString)}, + {"ustring constructed by default constructor",new OUString(), + new OUString()}, + {"have special Unicode",new OUString("\23\12\34sun\13\45",6, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + new OUString("\23\12\34sun\13\45",6, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString)} + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + sal_Bool lastRes=sal_False; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + OUString str = arrTestCase[i].input1->toAsciiLowerCase(); + if(i<=5) + { + lastRes = (str ==* arrTestCase[i].expVal); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "toAsciiLowerCase", i) + ); + } + else + { + c_rtl_tres_state + ( + hRtlTestResult, + sal_True, + arrTestCase[i].comments, + createName( pMeth, "toAsciiLowerCase", i) + ); + } + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "toAsciiLowerCase"); +// return ( res ); +} +//------------------------------------------------------------------------ +// testing the method toAsciiUpperCase() +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_toAsciiUpperCase( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "toAsciiUpperCase"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth =methName; + + typedef struct TestCase + { + sal_Char* comments; + OUString* expVal; + OUString* input1; + ~TestCase() { delete input1; delete expVal;} + } TestCase; + + TestCase arrTestCase[] = + { + {"only lowercase",new OUString(aUStr4),new OUString(aUStr5)}, + {"mixed cases",new OUString(aUStr4),new OUString(aUStr3)}, + {"mixed cases",new OUString(aUStr4),new OUString(aUStr1)}, + {"only uppercase",new OUString(aUStr4),new OUString(aUStr4)}, + {"empty ustring",new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + new OUString("",0, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString)}, + {"ustring constructed by default constructor",new OUString(), + new OUString()}, + {"have special Unicode",new OUString("\23\12\34SUN\13\45",6, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString), + new OUString("\23\12\34sun\13\45",6, + kEncodingRTLTextUSASCII,kConvertFlagsOStringToOUString)} + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + sal_Bool lastRes=sal_False; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + OUString str = arrTestCase[i].input1->toAsciiUpperCase(); + if(i<=5) + { + lastRes = (str == *arrTestCase[i].expVal); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "toAsciiUpperCase", i) + ); + } + else + { + c_rtl_tres_state + ( + hRtlTestResult, + sal_True, + arrTestCase[i].comments, + createName( pMeth, "toAsciiUpperCase", i) + ); + } + + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "toAsciiUpperCase"); +// return ( res ); +} + +//------------------------------------------------------------------------ +// testing the method trim() +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_trim( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "trim"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth =methName; + + typedef struct TestCase + { + sal_Char* comments; + OUString* expVal; + OUString* input1; + ~TestCase() { delete input1; delete expVal;} + } TestCase; + + TestCase arrTestCase[] = + { + {"removes space from the front",new OUString(aUStr1), + new OUString(aUStr10)}, + {"removes space from the end",new OUString(aUStr1), + new OUString(aUStr11)}, + {"removes space from the front and end",new OUString(aUStr1), + new OUString(aUStr12)}, + {"removes several spaces from the end",new OUString(aUStr1), + new OUString(aUStr13)}, + {"removes several spaces from the front",new OUString(aUStr1), + new OUString(aUStr14)}, + {"removes several spaces from the front and one from the end", + new OUString(aUStr1), + new OUString(aUStr15)}, + {"removes one space from the front and several from the end", + new OUString(aUStr1), + new OUString(aUStr16)}, + {"removes several spaces from the front and end", + new OUString(aUStr1), + new OUString(aUStr17)}, + {"removes characters that have codes <= 32",new OUString(aUStr30), + new OUString("\1\3\5\7\11\13\15\17sun\21\23\25\27\31\33\50", + 18,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)}, + {"removes characters that have codes <= 32",new OUString(aUStr28), + new OUString("\50\3\5\7\11\13\15\17sun\21\23\25\27\31\33\1", + 18,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)}, + {"removes characters that have codes <= 32",new OUString(aUStr29), + new OUString("\50\3\5\7\11\13\15\17sun\21\23\25\27\31\33\50", + 18,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)}, + {"removes characters that have codes <= 32",new OUString(aUStr20), + new OUString("\1\3\5\7\11\13\15\17sun\21\23\25\27\31\23\20", + 18,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)}, + {"no spaces",new OUString(aUStr8), + new OUString(aUStr8)} + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for(i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + OUString strRes = arrTestCase[i].input1->trim(); + sal_Bool lastRes = (strRes == *arrTestCase[i].expVal); + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "trim", i) + ); + + res &= lastRes; + + } + c_rtl_tres_state_end( hRtlTestResult, "trim"); +// return ( res ); +} +//------------------------------------------------------------------------ +// testing the method toData() +//------------------------------------------------------------------------ + +template <class T> +sal_Bool test_toData( const char** input, int num, sal_Int16 radix, + const T* expVal,int base, + const T* _fPrecision, + rtlTestResult hRtlTestResult) +{ + (void)_fPrecision; + sal_Bool res=sal_True; + sal_Char methName[MAXBUFLENGTH]; + sal_Char *meth = '\0'; + sal_Char* pMeth=methName; + sal_Int32 i; +// static sal_Unicode aUchar[60]={0x00}; + T intRes; + sal_Bool lastRes=sal_False; + + for(i=0;i<num;i++) + { + OSL_ENSURE( i < 60, "ERROR: leave aUchar bound"); + +// LLA: stored for the posterity +// AStringToUStringCopy(aUchar,input[i]); +// OUString str(aUchar); + + OUString str; + str = OUString::createFromAscii(input[i]); + + + if(base==0) + { + intRes=static_cast<T>(str.toInt32()); + lastRes=(intRes==expVal[i]); + meth="toInt32default"; + } + if(base==1) + { + intRes=static_cast<T>(str.toInt32(radix)); + lastRes=(intRes==expVal[i]); + meth="toInt32normal"; + } + if(base==2) + { + intRes=static_cast<T>(str.toInt64()); + lastRes=(intRes==expVal[i]); + meth="toInt64default"; + } + if(base==3) + { + intRes=static_cast<T>(str.toInt64(radix)); + lastRes=(intRes==expVal[i]); + meth="toInt64normal"; + } +// LLA: does no longer exist, moved to rtl/oustring +// LLA: if(base==4) +// LLA: { +// LLA: intRes=str.toDouble(); +// LLA: lastRes=(fabs(intRes-expVal[i])<=1e-35); +// LLA: meth="toDouble"; +// LLA: } + +// LLA: dt:20040802 create compile problems within wntmsci10 +// if(base==5) +// { +// intRes=str.toFloat(); +// T nPrec = _fPrecision[i]; +// lastRes=(fabs((T)(intRes-expVal[i])) <= nPrec /* 1e-35 */ ); +// meth="toFloat"; +// } + if(base==6) + { + intRes=str.toChar(); + lastRes=(intRes==expVal[i]); + meth="toChar"; + } + + char buf[MAXBUFLENGTH]; + buf[0] = '\''; + cpynstr( buf + 1, input[i], MAXBUFLENGTH ); + int length = AStringLen( input[i] ); + buf[length + 1] = '\''; + buf[length + 2] = 0; + + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + buf, + createName( pMeth,meth, i ) + ); + + res &= lastRes; + } + + return( res ); +} +//------------------------------------------------------------------------ +// testing the method toDouble() +//------------------------------------------------------------------------ + +// LLA: extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_toDouble( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: c_rtl_tres_state_start( hRtlTestResult, "toDouble"); +// LLA: sal_Bool bRes=sal_False; +// LLA: +// LLA: bRes=c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: test_toData<double>((const char**)inputDouble,nDoubleCount,10, +// LLA: expValDouble,4,hRtlTestResult), +// LLA: "toDouble", +// LLA: "toDouble()" +// LLA: ); +// LLA: c_rtl_tres_state_end( hRtlTestResult, "toDouble"); +// LLA: // return ( bRes ); +// LLA: } + +//------------------------------------------------------------------------ +// testing the method toFloat() +//------------------------------------------------------------------------ +// LLA: dt:20040802 the test_toData() has compile problems. +// LLA: extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_toFloat( +// LLA: hTestResult hRtlTestResult ) +// LLA: { +// LLA: c_rtl_tres_state_start( hRtlTestResult, "toFloat"); +// LLA: sal_Bool bRes=sal_False; +// LLA: +// LLA: bRes=c_rtl_tres_state +// LLA: ( +// LLA: hRtlTestResult, +// LLA: test_toData<float>((const char**)inputFloat, +// LLA: nFloatCount, +// LLA: 10, /* radix */ +// LLA: expValFloat, +// LLA: 5, /* float */ +// LLA: fPrecision, +// LLA: hRtlTestResult), +// LLA: "toFloat", +// LLA: "toFloat()" +// LLA: ); +// LLA: +// LLA: c_rtl_tres_state_end( hRtlTestResult, "toFloat"); +// LLA: // return ( bRes ); +// LLA: +// LLA: } +//------------------------------------------------------------------------ +// testing the method toChar() +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_toChar( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "toChar"); + sal_Bool bRes=sal_False; + + bRes=c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Unicode>((const char**)inputChar,nCharCount, + 10,expValChar,6,NULL,hRtlTestResult), + "toChar", + "toChar()" + ); + + c_rtl_tres_state_end( hRtlTestResult, "toChar"); +// return ( bRes ); + +} +//------------------------------------------------------------------------ +// testing the method toBoolean() +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_toBoolean( + hTestResult hRtlTestResult) +{ + c_rtl_tres_state_start( hRtlTestResult, "toBoolean"); + sal_Char methName[MAXBUFLENGTH]; + sal_Char* pMeth = methName; + + typedef struct TestCase + { + sal_Char* comments; + sal_Bool expVal; + OUString* input; + + ~TestCase() {delete input;} + }TestCase; + + TestCase arrTestCase[]={ + + {"expected true", sal_True, new OUString("True",4,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)}, + {"expected false", sal_False, new OUString("False",5, + kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)}, + {"expected true", sal_True, new OUString("1",1,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString)} + }; + + sal_Bool res = sal_True; + sal_uInt32 i; + + for (i = 0; i < (sizeof (arrTestCase))/(sizeof (TestCase)); i++) + { + sal_Bool bRes = arrTestCase[i].input->toBoolean(); + sal_Bool lastRes = (bRes == arrTestCase[i].expVal); + c_rtl_tres_state + ( + hRtlTestResult, + lastRes, + arrTestCase[i].comments, + createName( pMeth, "toBoolean", i ) + + ); + res &= lastRes; + } + c_rtl_tres_state_end( hRtlTestResult, "toBoolean"); +// return ( res ); +} +//------------------------------------------------------------------------ +// testing the method toInt32() +//------------------------------------------------------------------------ + +sal_Bool SAL_CALL test_rtl_OUString_toInt32_normal( + hTestResult hRtlTestResult ) +{ + sal_Int32 expValues[kBase36NumsCount]; + sal_Int32 i; + + for ( i = 0; i < kBase36NumsCount; i++ ) + expValues[i] = i; + + sal_Bool res = c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kBinaryNumsStr,kBinaryNumsCount, + kRadixBinary,expValues,1,NULL,hRtlTestResult ), + "kBinaryNumsStr", + "toInt32( radix 2 )" + ); + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kBinaryMaxNumsStr,kInt32MaxNumsCount, + kRadixBinary,kInt32MaxNums,1,NULL,hRtlTestResult ), + "kBinaryMaxNumsStr", + "toInt32_Boundaries( radix 2 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kOctolNumsStr,kOctolNumsCount, + kRadixOctol,expValues,1,NULL,hRtlTestResult ), + "kOctolNumsStr", + "toInt32( radix 8 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kOctolMaxNumsStr,kInt32MaxNumsCount, + kRadixOctol,(sal_Int32*)kInt32MaxNums,1,NULL,hRtlTestResult ), + "kOctolMaxNumsStr", + "toInt32_Boundaries( radix 8 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kDecimalNumsStr,kDecimalNumsCount, + kRadixDecimal,expValues,1,NULL,hRtlTestResult ), + "kDecimalNumsStr", + "toInt32( radix 10 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kDecimalMaxNumsStr,kInt32MaxNumsCount, + kRadixDecimal,(sal_Int32*)kInt32MaxNums,1,NULL,hRtlTestResult ), + "kDecimalMaxNumsStr", + "toInt32_Boundaries( radix 10 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kHexDecimalNumsStr,kHexDecimalNumsCount, + kRadixHexdecimal,expValues,1,NULL,hRtlTestResult ), + "kHexDecimalNumsStr", + "toInt32( radix 16 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kHexDecimalMaxNumsStr,kInt32MaxNumsCount, + kRadixHexdecimal,(sal_Int32*)kInt32MaxNums,1,NULL,hRtlTestResult ), + "kHexDecimalMaxNumsStr", + "toInt32_Boundaries( radix 16 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kBase36NumsStr,kBase36NumsCount, + kRadixBase36, expValues,1,NULL,hRtlTestResult ), + "kBase36NumsStr", + "toInt32( radix 36 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kBase36MaxNumsStr,kInt32MaxNumsCount, + kRadixBase36,(sal_Int32*)kInt32MaxNums,1,NULL,hRtlTestResult ), + "kBase36MaxNumsStr", + "toInt32_Boundaries( radix 36 )" + ); + + const sal_Int16 nSpecCases = 5; + static const sal_Char *spString[nSpecCases] = + { + "-1", + "+1", + " 1", + " -1", + "001" + }; + + sal_Int32 expSpecVal[nSpecCases] = + { + -1, + 1, + 1, + -1, + 1 + }; + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( spString,nSpecCases, + kRadixDecimal,expSpecVal,1,NULL,hRtlTestResult ), + "special cases", + "toInt32( specialcases )" + ); + + return ( res ); +} +sal_Bool SAL_CALL test_rtl_OUString_toInt32_wrongRadix( + hTestResult hRtlTestResult ) +{ + ::rtl::OUString str("0",1,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString); + + sal_Int32 iRes =str.toInt32(-1); + + return + ( + c_rtl_tres_state + ( + hRtlTestResult, + iRes == 0, + "wrong radix -1", + "toInt32( 0, wrong radix -1 )" + ) + ); +} +sal_Bool SAL_CALL test_rtl_OUString_toInt32_defaultParam( + hTestResult hRtlTestResult ) +{ + sal_Int32 expValues[kBase36NumsCount]; + sal_Int32 i; + + for ( i = 0; i < kBase36NumsCount; i++ ) + expValues[i] = i; + + sal_Bool res = c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kDecimalNumsStr,kDecimalNumsCount, + kRadixDecimal,expValues,0,NULL,hRtlTestResult ), + "kBinaryNumsStr", + "toInt32( radix 2 )" + ); + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( kDecimalMaxNumsStr,kInt32MaxNumsCount, + kRadixDecimal,(sal_Int32*)kInt32MaxNums,0,NULL,hRtlTestResult ), + "kDecimalMaxNumsStr", + "toInt32_Boundaries( radix 10 )" + ); + const sal_Int16 nSpecCases = 5; + static const sal_Char *spString[nSpecCases] = + { + "-1", + "+1", + " 1", + " -1", + "001" + }; + + sal_Int32 expSpecVal[nSpecCases] = + { + -1, + 1, + 1, + -1, + 1 + }; + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int32>( spString,nSpecCases, + kRadixDecimal,expSpecVal,0,NULL,hRtlTestResult ), + "special cases", + "toInt32( specialcases )" + ); + + return ( res ); +} + +//------------------------------------------------------------------------ +// testing the method toInt32() +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_toInt32( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "toInt32"); + sal_Bool bTState = test_rtl_OUString_toInt32_normal( hRtlTestResult ); + bTState &= test_rtl_OUString_toInt32_defaultParam( hRtlTestResult ); + bTState &= test_rtl_OUString_toInt32_wrongRadix( hRtlTestResult ); + c_rtl_tres_state_end( hRtlTestResult, "toInt32"); +// return ( bTState ); +} +//------------------------------------------------------------------------ +// testing the method toInt64( sal_Int16 radix = 2,8,10,16,36 ) +//------------------------------------------------------------------------ + +sal_Bool SAL_CALL test_rtl_OUString_toInt64_normal( + hTestResult hRtlTestResult ) +{ + sal_Int64 expValues[kBase36NumsCount]; + sal_Int32 i; + + for (i = 0; i < kBase36NumsCount; expValues[i] = i, i++); + + sal_Bool res = c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kBinaryNumsStr,kBinaryNumsCount, + kRadixBinary,expValues,3,NULL,hRtlTestResult ), + "kBinaryNumsStr", + "toInt64( radix 2 )" + ); + +/* LLA: does not work within wntmsci8.pro + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kBinaryMaxNumsStr,kInt64MaxNumsCount, + kRadixBinary,kInt64MaxNums,3,hRtlTestResult ), + "kBinaryMaxNumsStr", + "toInt64_Boundaries( radix 2 )" + ); +*/ + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kOctolNumsStr,kOctolNumsCount, + kRadixOctol,expValues,3,NULL,hRtlTestResult ), + "kOctolNumsStr", + "toInt64( radix 8 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kOctolMaxNumsStr,kInt64MaxNumsCount, + kRadixOctol,(sal_Int64*)kInt64MaxNums,3,NULL,hRtlTestResult ), + "kOctolMaxNumsStr", + "toInt64_Boundaries( radix 8 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kDecimalNumsStr,kDecimalNumsCount, + kRadixDecimal,expValues,3,NULL,hRtlTestResult ), + "kDecimalNumsStr", + "toInt64( radix 10 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kDecimalMaxNumsStr,kInt64MaxNumsCount, + kRadixDecimal,(sal_Int64*)kInt64MaxNums,3,NULL,hRtlTestResult ), + "kDecimalMaxNumsStr", + "toInt64_Boundaries( radix 10 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kHexDecimalNumsStr,kHexDecimalNumsCount, + kRadixHexdecimal,expValues,3,NULL,hRtlTestResult ), + "kHexDecimalNumsStr", + "toInt64( radix 16 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kHexDecimalMaxNumsStr,kInt64MaxNumsCount, + kRadixHexdecimal,(sal_Int64*)kInt64MaxNums,3,NULL,hRtlTestResult ), + "kHexDecimalMaxNumsStr", + "toInt64_Boundaries( radix 16 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kBase36NumsStr,kBase36NumsCount, + kRadixBase36, expValues,3,NULL,hRtlTestResult ), + "kBase36NumsStr", + "toInt64( radix 36 )" + ); + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kBase36MaxNumsStr,kInt64MaxNumsCount, + kRadixBase36,(sal_Int64*)kInt64MaxNums,3,NULL,hRtlTestResult ), + "kBase36MaxNumsStr", + "toInt64_Boundaries( radix 36 )" + ); + + + + const sal_Int16 nSpecCases = 5; + static const sal_Char *spString[nSpecCases] = + { + "-1", + "+1", + " 1", + " -1", + "001" + }; + + sal_Int64 expSpecVal[nSpecCases] = + { + -1, + 1, + 1, + -1, + 1 + }; + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( spString,nSpecCases, + kRadixDecimal,expSpecVal,3,NULL,hRtlTestResult ), + "special cases", + "toInt64( specialcases )" + ); + + return (res); +} + +sal_Bool SAL_CALL test_rtl_OUString_toInt64_wrongRadix( + hTestResult hRtlTestResult ) +{ + ::rtl::OUString str("0",1,kEncodingRTLTextUSASCII, + kConvertFlagsOStringToOUString); + + sal_Int64 iRes = str.toInt64(-1); + + return ( + c_rtl_tres_state + ( + hRtlTestResult, + iRes == 0, + "wrong radix -1", + "toInt64( wrong radix -1)" + ) + ); +} +sal_Bool SAL_CALL test_rtl_OUString_toInt64_defaultParam( + hTestResult hRtlTestResult ) +{ + sal_Int64 expValues[kBase36NumsCount]; + sal_Int32 i; + + for ( i = 0; i < kBase36NumsCount; i++ ) + expValues[i] = i; + + sal_Bool res = c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kDecimalNumsStr,kDecimalNumsCount, + kRadixDecimal,expValues,2,NULL,hRtlTestResult ), + "kBinaryNumsStr", + "toInt64( radix 10 )" + ); + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( kDecimalMaxNumsStr,kInt64MaxNumsCount, + kRadixDecimal,(sal_Int64*)kInt64MaxNums,2,NULL,hRtlTestResult ), + "kDecimalMaxNumsStr", + "toInt64_Boundaries( radix 10 )" + ); + const sal_Int16 nSpecCases = 5; + static const sal_Char *spString[nSpecCases] = + { + "-1", + "+1", + " 1", + " -1", + "001" + }; + + sal_Int64 expSpecVal[nSpecCases] = + { + -1, + 1, + 1, + -1, + 1 + }; + + res &= c_rtl_tres_state + ( + hRtlTestResult, + test_toData<sal_Int64>( spString,nSpecCases, + kRadixDecimal,expSpecVal,2,NULL,hRtlTestResult ), + "special cases", + "toInt64( specialcases )" + ); + + return ( res ); +} + +//------------------------------------------------------------------------ +// testing the method toInt64() +//------------------------------------------------------------------------ +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString_toInt64( + hTestResult hRtlTestResult ) +{ + c_rtl_tres_state_start( hRtlTestResult, "toInt64"); + sal_Bool bTState = test_rtl_OUString_toInt64_normal( hRtlTestResult ); + bTState &= test_rtl_OUString_toInt64_defaultParam (hRtlTestResult ); + bTState &= test_rtl_OUString_toInt64_wrongRadix( hRtlTestResult ); + c_rtl_tres_state_end( hRtlTestResult, "toInt64"); +// return ( bTState ); +} +extern "C" void /* sal_Bool */ SAL_CALL test_rtl_OUString( hTestResult hRtlTestResult ) +{ + + c_rtl_tres_state_start(hRtlTestResult, "rtl_OUString" ); + + test_rtl_OUString_ctors( hRtlTestResult ); + test_rtl_OUString_getLength( hRtlTestResult ); + test_rtl_OUString_equals( hRtlTestResult ); + test_rtl_OUString_equalsIgnoreAsciiCase( hRtlTestResult ); + test_rtl_OUString_compareTo( hRtlTestResult ); + test_rtl_OUString_match( hRtlTestResult ); + test_rtl_OUString_op_eq( hRtlTestResult ); + test_rtl_OUString_op_peq( hRtlTestResult ); + test_rtl_OUString_csuc( hRtlTestResult ); + test_rtl_OUString_getStr( hRtlTestResult ); + test_rtl_OUString_reverseCompareTo( hRtlTestResult ); + test_rtl_OUString_equalsAscii( hRtlTestResult ); + test_rtl_OUString_equalsAsciiL( hRtlTestResult ); + test_rtl_OUString_compareToAscii( hRtlTestResult ); + test_rtl_OUString_valueOf_sal_Bool( hRtlTestResult ); + test_rtl_OUString_valueOf_sal_Unicode( hRtlTestResult ); + test_rtl_OUString_valueOf( hRtlTestResult ); + test_rtl_OUString_createFromAscii( hRtlTestResult ); + test_rtl_OUString_indexOf( hRtlTestResult ); +// LLA: removed, it is in a new test in rtl/oustring. test_rtl_OUString_lastIndexOf( hRtlTestResult ); + test_rtl_OUString_concat( hRtlTestResult ); + test_rtl_OUString_replaceAt( hRtlTestResult ); + test_rtl_OUString_replace( hRtlTestResult ); + test_rtl_OUString_toAsciiLowerCase( hRtlTestResult ); + test_rtl_OUString_toAsciiUpperCase( hRtlTestResult ); + test_rtl_OUString_trim( hRtlTestResult ); +// LLA: removed, it is in a new test in rtl/oustring. test_rtl_OUString_toDouble( hRtlTestResult ); +// LLA: removed, has compile problems. test_rtl_OUString_toFloat( hRtlTestResult ); + test_rtl_OUString_toChar( hRtlTestResult ); + test_rtl_OUString_toBoolean( hRtlTestResult ); + test_rtl_OUString_toInt32( hRtlTestResult ); + test_rtl_OUString_toInt64( hRtlTestResult ); + + c_rtl_tres_state_end(hRtlTestResult, "rtl_OUString"); +} +// ----------------------------------------------------------------------------- +void RegisterAdditionalFunctions(FktRegFuncPtr _pFunc) +{ + if (_pFunc) + { + (_pFunc)(&test_rtl_OUString, ""); + } +} |