1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_sal.hxx" 30 31 // LLA: 32 // this file is converted to use with testshl2 33 // original was placed in sal/test/textenc.cxx 34 35 36 // ----------------------------------------------------------------------------- 37 #include <string.h> 38 #include <stdio.h> 39 40 // #ifndef _OSL_DIAGNOSE_H_ 41 // #include <osl/diagnose.h> 42 // #endif 43 44 #ifndef _RTL_STRING_HXX 45 #include <rtl/string.hxx> 46 #endif 47 48 #include <testshl/simpleheader.hxx> 49 50 #define TEST_ENSURE(c, m) CPPUNIT_ASSERT_MESSAGE((m), (c)) 51 52 // #if OSL_DEBUG_LEVEL > 0 53 // #define TEST_ENSHURE(c, m) OSL_ENSURE(c, m) 54 // #else 55 // #define TEST_ENSHURE(c, m) OSL_VERIFY(c) 56 // #endif 57 58 using namespace rtl; 59 60 // ----------------------------------------------------------------------------- 61 namespace rtl_OString 62 { 63 class oldtests : public CppUnit::TestFixture 64 { 65 public: 66 void test_OString(); 67 68 CPPUNIT_TEST_SUITE( oldtests ); 69 CPPUNIT_TEST( test_OString ); 70 CPPUNIT_TEST_SUITE_END( ); 71 }; 72 73 74 #ifdef WNT 75 #pragma warning( disable : 4723 ) 76 #endif 77 78 void oldtests::test_OString() 79 { 80 TEST_ENSURE( sal_True, "_USENAMEPSACE defined"); 81 82 // "Mein erster RTL OString\n" 83 // | | | | | 84 // Index 0 5 10 15 20 85 OString s1("Mein erster RTL OString\n"); 86 TEST_ENSURE( s1 == "Mein erster RTL OString\n", "test_OString error 1"); 87 TEST_ENSURE( s1.getLength() == 24, "test_OString error 2"); 88 89 OString s2 = s1; 90 TEST_ENSURE( s2[16] == 'O', "test_OString error 3"); 91 TEST_ENSURE( s2.equals(s1), "test_OString error 4"); 92 TEST_ENSURE( s2.indexOf('O') == 16, "test_OString error 5"); 93 TEST_ENSURE( s2.indexOf('O', 5) == 16, "test_OString error 5a"); 94 TEST_ENSURE( s2.lastIndexOf('r') == 19, "test_OString error 6"); 95 TEST_ENSURE( s2[19] == 'r', "test_OString error 7"); 96 TEST_ENSURE( s2[23] == '\n', "test_OString error 8"); 97 TEST_ENSURE( s2.lastIndexOf('\n') == 23, "test_OString error 9"); 98 TEST_ENSURE( s2.lastIndexOf('M') == 0, "test_OString error 10"); 99 TEST_ENSURE( s2.lastIndexOf('t', s2.getLength() - 8) == 8, "test_OString error 9"); 100 101 102 // "Mein erster RTL OString ist ein String aus der RTL Library\n" 103 // | | | | | | | | | | | | 104 // Index 0 5 10 15 20 25 30 35 40 45 50 55 105 OString s3 = s2.copy(0, s2.getLength() - 1); 106 OString s4 = s3.concat(" ist ein String aus der RTL Library\n"); 107 TEST_ENSURE( s4.getLength() == 59, "test_OString error 11"); 108 109 s1 = s4.copy(0, 38); 110 OString s5; 111 s5 = s1 + " aus der RTL Library\n"; 112 TEST_ENSURE( s5.compareTo(s4) == 0 , "test_OString error 12"); 113 TEST_ENSURE( s5.indexOf("RTL") == 12, "test_OString error 13"); 114 TEST_ENSURE( s5.lastIndexOf("RTL") == 47, "test_OString error 13"); 115 116 sal_Bool b = sal_False; 117 OString s6 = s5.valueOf(b); 118 TEST_ENSURE( s6.compareTo("false") == 0, "test_OString error 14"); 119 s6 = s5.valueOf('H'); 120 TEST_ENSURE( s6.compareTo("H") == 0, "test_OString error 15"); 121 sal_Int32 n = 123456789L; 122 s6 = s5.valueOf(n); 123 TEST_ENSURE( s6.compareTo("123456789") == 0, "test_OString error 16"); 124 125 #ifndef SAL_OS2 126 #ifdef SAL_UNX 127 sal_Int64 m = -3223372036854775807LL; 128 #elif defined(SAL_OS2) 129 sal_Int64 m; 130 sal_setInt64(&m, 3965190145L, -750499787L); 131 #else 132 sal_Int64 m = -3223372036854775807; 133 #endif 134 s6 = s5.valueOf(m); 135 TEST_ENSURE( s6.compareTo("-3223372036854775807") == 0, "test_OString error 17"); 136 #endif 137 138 OString s7("HaLLo"); 139 s7 = s7.toAsciiLowerCase(); 140 TEST_ENSURE( s7 == "hallo", "test_OString error 19"); 141 s7 = s7.toAsciiUpperCase(); 142 TEST_ENSURE( s7 == "HALLO", "test_OString error 20"); 143 144 OString s8("HaLLo ICH BIn eIn StRiNg"); 145 s7 = s8.toAsciiLowerCase(); 146 147 TEST_ENSURE( s8.equalsIgnoreAsciiCase(s7), "test_OString error 21"); 148 149 s8 = s7.toAsciiUpperCase(); 150 TEST_ENSURE( s8 == "HALLO ICH BIN EIN STRING", "test_OString error 22"); 151 152 s7 = " "; 153 s8 = s7 + s8 + " "; 154 TEST_ENSURE( s8 == " HALLO ICH BIN EIN STRING ", 155 "test_OString error 23"); 156 157 s7 = s8.trim(); 158 TEST_ENSURE( s7 == "HALLO ICH BIN EIN STRING", "test_OString error 24"); 159 TEST_ENSURE( strcmp(s7.getStr(), "HALLO ICH BIN EIN STRING") == 0, 160 "test_OString error 25"); 161 162 s7 = "Hallo"; 163 s8 = "aber Hallo"; 164 165 TEST_ENSURE( s7 < s8, "test_OString error 26"); 166 TEST_ENSURE( s8 > s7, "test_OString error 27"); 167 TEST_ENSURE( s7 != s8, "test_OString error 28"); 168 TEST_ENSURE( s7 != "blabla", "test_OString error 29"); 169 TEST_ENSURE( "blabla" != s7, "test_OString error 30"); 170 171 s8 = "Hallo"; 172 TEST_ENSURE( s7 <= s8, "test_OString error 31"); 173 TEST_ENSURE( s7 >= s8, "test_OString error 32"); 174 175 s8 = s8.replace('l', 'r'); 176 TEST_ENSURE( s8 == "Harro", "test_OString error 33"); 177 178 sal_Int32 nIndex = 0; 179 s8 = "|hallo1|hallo2|hallo3|hallo4|hallo5|hallo6|hallo7|hallo8|"; 180 TEST_ENSURE( s8.getToken(3,'|', nIndex) == "hallo3", "test_OString error 40"); 181 182 char* Tokens[10] = { "", "hallo1", "hallo2", "hallo3", "hallo4", 183 "hallo5", "hallo6", "hallo7", "hallo8", "" }; 184 185 nIndex = 0; 186 sal_Int32 i = 0; 187 do 188 { 189 TEST_ENSURE( s8.getToken(0,'|',nIndex) == Tokens[i], "test_OString error 40e"); 190 i++; 191 } 192 while ( nIndex >= 0 ); 193 194 s7 = ""; 195 s7 += s8; 196 TEST_ENSURE( s7 == s8, "test_OString error 41"); 197 198 s7 = s8.replaceAt(8, 6, "mmmmmmmmmm"); 199 TEST_ENSURE( s7.getLength() == 61, "test_OString error 42"); 200 201 s8 = s7.replaceAt(8, 11, ""); 202 TEST_ENSURE( s8.getLength() == 50, "test_OString error 43"); 203 204 s7 = s8.replaceAt(8, 0, "hallo2|"); 205 TEST_ENSURE( s7.getLength() == 57, "test_OString error 44"); 206 207 sal_Int32 pos = 0; 208 while ((pos = s7.indexOf("|")) >= 0) 209 { 210 s8 = s7.replaceAt(pos, 1, "**"); 211 s7 = s8; 212 } 213 TEST_ENSURE( s7.getLength() == 66, "test_OString error 45"); 214 215 TEST_ENSURE( OString( "aaa" ).compareTo( OString( "bbb" ) ) < 0, "test_OString error 46" ); 216 TEST_ENSURE( OString( "aaa" ).compareTo( OString( "aaa" ) ) == 0, "test_OString error 47" ); 217 TEST_ENSURE( OString( "bbb" ).compareTo( OString( "aaa" ) ) > 0, "test_OString error 48" ); 218 TEST_ENSURE( OString( "aaaa" ).compareTo( OString( "bbb" ) ) < 0, "test_OString error 49" ); 219 TEST_ENSURE( OString( "aaa" ).compareTo( OString( "bbbb" ) ) < 0, "test_OString error 50" ); 220 TEST_ENSURE( OString( "aaa" ).compareTo( OString( "aaaa" ) ) < 0, "test_OString error 51" ); 221 TEST_ENSURE( OString( "aaaa" ).compareTo( OString( "aaa" ) ) > 0, "test_OString error 52" ); 222 TEST_ENSURE( OString( "bbbb" ).compareTo( OString( "bbb" ) ) > 0, "test_OString error 53" ); 223 TEST_ENSURE( OString( "bbb" ) == OString( "bbb" ), "test_OString error 54" ); 224 TEST_ENSURE( OString( "bbb" ) == "bbb", "test_OString error 55" ); 225 226 /* 227 * As clarified in #104229#, calling copy with invalid arguments causes 228 * undefined behaviour, so the following test does no longer work: 229 230 s7 = "Hallo jetzt komm ich"; 231 s8 = s7.copy(0, s7.indexOf(':')); 232 TEST_ENSURE( s8.getLength() == 0, "test_OString error 56"); 233 TEST_ENSURE( s8.compareTo("") == 0, "test_OString error 57"); 234 */ 235 236 double f = OString("1.7e-10").toDouble(); 237 TEST_ENSURE(f > 1E-10 && f < 2E-10, "1.7e-10 problem"); 238 f = OString("1.7e+10").toDouble(); 239 TEST_ENSURE(f > 1E10 && f < 2E10, "1.7e+10 problem"); 240 f = OString("1.7e10").toDouble(); 241 TEST_ENSURE(f > 1E10 && f < 2E10, "1.7e308 problem"); 242 243 { 244 float f0 = 0; 245 float f1 = 1; 246 float fInf = f1 / f0; 247 OString aStr1(OString::valueOf(fInf)); 248 OString aStr2("1.#INF"); 249 bool bSuccess = aStr1 == aStr2; 250 if (!bSuccess) 251 printf("ERROR: OString::valueOf(1f/0f): %s\n", aStr1.getStr()); 252 TEST_ENSURE(bSuccess, "OString::valueOf(1f/0f)"); 253 } 254 255 printf("test_OString OK !!!\n"); 256 return; 257 } 258 259 } // namespace rtl_OString 260 261 // ----------------------------------------------------------------------------- 262 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( rtl_OString::oldtests, "rtl_OString" ); 263 264 // ----------------------------------------------------------------------------- 265 NOADDITIONAL; 266 267