update credits
[LibreOffice.git] / sal / qa / rtl_strings / rtl_old_testostring.cxx
blob6d0c75d29d9d16dd6c10e44bcb2ebb8c98f11e89
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
21 // LLA:
22 // this file is converted to use with testshl2
23 // original was placed in sal/test/textenc.cxx
25 #include <string.h>
26 #include <stdio.h>
28 #include <rtl/string.hxx>
30 #include <testshl/simpleheader.hxx>
32 #define TEST_ENSURE(c, m) CPPUNIT_ASSERT_MESSAGE((m), (c))
33 using ::rtl::OString;
34 namespace rtl_OString
36 class oldtests : public CppUnit::TestFixture
38 public:
39 void test_OString();
41 CPPUNIT_TEST_SUITE( oldtests );
42 CPPUNIT_TEST( test_OString );
43 CPPUNIT_TEST_SUITE_END( );
47 #ifdef WNT
48 #pragma warning( disable : 4723 )
49 #endif
51 void oldtests::test_OString()
53 TEST_ENSURE( sal_True, "_USENAMEPSACE defined");
55 // "Mein erster RTL OString\n"
56 // | | | | |
57 // Index 0 5 10 15 20
58 OString s1("Mein erster RTL OString\n");
59 TEST_ENSURE( s1 == "Mein erster RTL OString\n", "test_OString error 1");
60 TEST_ENSURE( s1.getLength() == 24, "test_OString error 2");
62 OString s2 = s1;
63 TEST_ENSURE( s2[16] == 'O', "test_OString error 3");
64 TEST_ENSURE( s2.equals(s1), "test_OString error 4");
65 TEST_ENSURE( s2.indexOf('O') == 16, "test_OString error 5");
66 TEST_ENSURE( s2.indexOf('O', 5) == 16, "test_OString error 5a");
67 TEST_ENSURE( s2.lastIndexOf('r') == 19, "test_OString error 6");
68 TEST_ENSURE( s2[19] == 'r', "test_OString error 7");
69 TEST_ENSURE( s2[23] == '\n', "test_OString error 8");
70 TEST_ENSURE( s2.lastIndexOf('\n') == 23, "test_OString error 9");
71 TEST_ENSURE( s2.lastIndexOf('M') == 0, "test_OString error 10");
72 TEST_ENSURE( s2.lastIndexOf('t', s2.getLength() - 8) == 8, "test_OString error 9");
74 // "Mein erster RTL OString ist ein String aus der RTL Library\n"
75 // | | | | | | | | | | | |
76 // Index 0 5 10 15 20 25 30 35 40 45 50 55
77 OString s3 = s2.copy(0, s2.getLength() - 1);
78 OString s4 = s3.concat(" ist ein String aus der RTL Library\n");
79 TEST_ENSURE( s4.getLength() == 59, "test_OString error 11");
81 s1 = s4.copy(0, 38);
82 OString s5;
83 s5 = s1 + " aus der RTL Library\n";
84 TEST_ENSURE( s5.compareTo(s4) == 0 , "test_OString error 12");
85 TEST_ENSURE( s5.indexOf("RTL") == 12, "test_OString error 13");
86 TEST_ENSURE( s5.lastIndexOf("RTL") == 47, "test_OString error 13");
88 sal_Bool b = sal_False;
89 OString s6 = s5.valueOf(b);
90 TEST_ENSURE( s6.compareTo("false") == 0, "test_OString error 14");
91 s6 = s5.valueOf('H');
92 TEST_ENSURE( s6.compareTo("H") == 0, "test_OString error 15");
93 sal_Int32 n = 123456789L;
94 s6 = s5.valueOf(n);
95 TEST_ENSURE( s6.compareTo("123456789") == 0, "test_OString error 16");
97 #ifdef SAL_UNX
98 sal_Int64 m = -3223372036854775807LL;
99 #else
100 sal_Int64 m = -3223372036854775807;
101 #endif
102 s6 = s5.valueOf(m);
103 TEST_ENSURE( s6.compareTo("-3223372036854775807") == 0, "test_OString error 17");
105 OString s7("HaLLo");
106 s7 = s7.toAsciiLowerCase();
107 TEST_ENSURE( s7 == "hallo", "test_OString error 19");
108 s7 = s7.toAsciiUpperCase();
109 TEST_ENSURE( s7 == "HALLO", "test_OString error 20");
111 OString s8("HaLLo ICH BIn eIn StRiNg");
112 s7 = s8.toAsciiLowerCase();
114 TEST_ENSURE( s8.equalsIgnoreAsciiCase(s7), "test_OString error 21");
116 s8 = s7.toAsciiUpperCase();
117 TEST_ENSURE( s8 == "HALLO ICH BIN EIN STRING", "test_OString error 22");
119 s7 = " ";
120 s8 = s7 + s8 + " ";
121 TEST_ENSURE( s8 == " HALLO ICH BIN EIN STRING ",
122 "test_OString error 23");
124 s7 = s8.trim();
125 TEST_ENSURE( s7 == "HALLO ICH BIN EIN STRING", "test_OString error 24");
126 TEST_ENSURE( strcmp(s7.getStr(), "HALLO ICH BIN EIN STRING") == 0,
127 "test_OString error 25");
129 s7 = "Hallo";
130 s8 = "aber Hallo";
132 TEST_ENSURE( s7 < s8, "test_OString error 26");
133 TEST_ENSURE( s8 > s7, "test_OString error 27");
134 TEST_ENSURE( s7 != s8, "test_OString error 28");
135 TEST_ENSURE( s7 != "blabla", "test_OString error 29");
136 TEST_ENSURE( "blabla" != s7, "test_OString error 30");
138 s8 = "Hallo";
139 TEST_ENSURE( s7 <= s8, "test_OString error 31");
140 TEST_ENSURE( s7 >= s8, "test_OString error 32");
142 s8 = s8.replace('l', 'r');
143 TEST_ENSURE( s8 == "Harro", "test_OString error 33");
145 sal_Int32 nIndex = 0;
146 s8 = "|hallo1|hallo2|hallo3|hallo4|hallo5|hallo6|hallo7|hallo8|";
147 TEST_ENSURE( s8.getToken(3,'|', nIndex) == "hallo3", "test_OString error 40");
149 char* Tokens[10] = { "", "hallo1", "hallo2", "hallo3", "hallo4",
150 "hallo5", "hallo6", "hallo7", "hallo8", "" };
152 nIndex = 0;
153 sal_Int32 i = 0;
156 TEST_ENSURE( s8.getToken(0,'|',nIndex) == Tokens[i], "test_OString error 40e");
157 i++;
159 while ( nIndex >= 0 );
161 s7 = "";
162 s7 += s8;
163 TEST_ENSURE( s7 == s8, "test_OString error 41");
165 s7 = s8.replaceAt(8, 6, "mmmmmmmmmm");
166 TEST_ENSURE( s7.getLength() == 61, "test_OString error 42");
168 s8 = s7.replaceAt(8, 11, "");
169 TEST_ENSURE( s8.getLength() == 50, "test_OString error 43");
171 s7 = s8.replaceAt(8, 0, "hallo2|");
172 TEST_ENSURE( s7.getLength() == 57, "test_OString error 44");
174 sal_Int32 pos = 0;
175 while ((pos = s7.indexOf("|")) >= 0)
177 s8 = s7.replaceAt(pos, 1, "**");
178 s7 = s8;
180 TEST_ENSURE( s7.getLength() == 66, "test_OString error 45");
182 TEST_ENSURE( OString( "aaa" ).compareTo( OString( "bbb" ) ) < 0, "test_OString error 46" );
183 TEST_ENSURE( OString( "aaa" ).compareTo( OString( "aaa" ) ) == 0, "test_OString error 47" );
184 TEST_ENSURE( OString( "bbb" ).compareTo( OString( "aaa" ) ) > 0, "test_OString error 48" );
185 TEST_ENSURE( OString( "aaaa" ).compareTo( OString( "bbb" ) ) < 0, "test_OString error 49" );
186 TEST_ENSURE( OString( "aaa" ).compareTo( OString( "bbbb" ) ) < 0, "test_OString error 50" );
187 TEST_ENSURE( OString( "aaa" ).compareTo( OString( "aaaa" ) ) < 0, "test_OString error 51" );
188 TEST_ENSURE( OString( "aaaa" ).compareTo( OString( "aaa" ) ) > 0, "test_OString error 52" );
189 TEST_ENSURE( OString( "bbbb" ).compareTo( OString( "bbb" ) ) > 0, "test_OString error 53" );
190 TEST_ENSURE( OString( "bbb" ) == OString( "bbb" ), "test_OString error 54" );
191 TEST_ENSURE( OString( "bbb" ) == "bbb", "test_OString error 55" );
194 * As clarified in #104229#, calling copy with invalid arguments causes
195 * undefined behaviour, so the following test does no longer work:
197 s7 = "Hallo jetzt komm ich";
198 s8 = s7.copy(0, s7.indexOf(':'));
199 TEST_ENSURE( s8.getLength() == 0, "test_OString error 56");
200 TEST_ENSURE( s8.compareTo("") == 0, "test_OString error 57");
203 double f = OString("1.7e-10").toDouble();
204 TEST_ENSURE(f > 1E-10 && f < 2E-10, "1.7e-10 problem");
205 f = OString("1.7e+10").toDouble();
206 TEST_ENSURE(f > 1E10 && f < 2E10, "1.7e+10 problem");
207 f = OString("1.7e10").toDouble();
208 TEST_ENSURE(f > 1E10 && f < 2E10, "1.7e308 problem");
211 float f0 = 0;
212 float f1 = 1;
213 float fInf = f1 / f0;
214 OString aStr1(OString::valueOf(fInf));
215 OString aStr2("1.#INF");
216 bool bSuccess = aStr1 == aStr2;
217 if (!bSuccess)
218 printf("ERROR: OString::valueOf(1f/0f): %s\n", aStr1.getStr());
219 TEST_ENSURE(bSuccess, "OString::valueOf(1f/0f)");
222 printf("test_OString OK !!!\n");
223 return;
226 } // namespace rtl_OString
228 // -----------------------------------------------------------------------------
229 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( rtl_OString::oldtests, "rtl_OString" );
231 // -----------------------------------------------------------------------------
232 NOADDITIONAL;
234 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */