xref: /aoo42x/main/sal/qa/rtl/ostring/rtl_string.cxx (revision b3f397bd)
187d2adbcSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
387d2adbcSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
487d2adbcSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
587d2adbcSAndrew Rist  * distributed with this work for additional information
687d2adbcSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
787d2adbcSAndrew Rist  * to you under the Apache License, Version 2.0 (the
887d2adbcSAndrew Rist  * "License"); you may not use this file except in compliance
987d2adbcSAndrew Rist  * with the License.  You may obtain a copy of the License at
1087d2adbcSAndrew Rist  *
1187d2adbcSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
1287d2adbcSAndrew Rist  *
1387d2adbcSAndrew Rist  * Unless required by applicable law or agreed to in writing,
1487d2adbcSAndrew Rist  * software distributed under the License is distributed on an
1587d2adbcSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1687d2adbcSAndrew Rist  * KIND, either express or implied.  See the License for the
1787d2adbcSAndrew Rist  * specific language governing permissions and limitations
1887d2adbcSAndrew Rist  * under the License.
1987d2adbcSAndrew Rist  *
2087d2adbcSAndrew Rist  *************************************************************/
2187d2adbcSAndrew Rist 
2287d2adbcSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir 
25cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
26cdf0e10cSrcweir #include "precompiled_sal.hxx"
27*b3f397bdSDamjan Jovanovic #include "gtest/gtest.h"
28*b3f397bdSDamjan Jovanovic #include <rtl/string.hxx>
29*b3f397bdSDamjan Jovanovic #include <rtl/ustring.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir namespace rtl_string
32cdf0e10cSrcweir {
33cdf0e10cSrcweir 
34*b3f397bdSDamjan Jovanovic     class getLength : public ::testing::Test
35cdf0e10cSrcweir     {
36cdf0e10cSrcweir     public:
37cdf0e10cSrcweir     }; // class getLength
38cdf0e10cSrcweir 
TEST_F(getLength,getLength_000)39*b3f397bdSDamjan Jovanovic     TEST_F(getLength, getLength_000)
40*b3f397bdSDamjan Jovanovic     {
41*b3f397bdSDamjan Jovanovic         rtl_string_getLength( NULL );
42*b3f397bdSDamjan Jovanovic         // should not GPF
43*b3f397bdSDamjan Jovanovic     }
44*b3f397bdSDamjan Jovanovic 
TEST_F(getLength,getLength_001)45*b3f397bdSDamjan Jovanovic     TEST_F(getLength, getLength_001)
46*b3f397bdSDamjan Jovanovic     {
47*b3f397bdSDamjan Jovanovic         rtl::OString aStr("Test Length.");
48*b3f397bdSDamjan Jovanovic         sal_Int32 nValue = rtl_string_getLength( aStr.pData );
49*b3f397bdSDamjan Jovanovic 
50*b3f397bdSDamjan Jovanovic         ASSERT_TRUE(aStr.getLength() == nValue) << "Length must equal getLength()";
51*b3f397bdSDamjan Jovanovic         ASSERT_TRUE(nValue >= 0
52*b3f397bdSDamjan Jovanovic             && (strlen(aStr.getStr())
53*b3f397bdSDamjan Jovanovic                 == sal::static_int_cast< sal_uInt32 >(nValue))) << "Length must equal strlen()";
54*b3f397bdSDamjan Jovanovic     }
55cdf0e10cSrcweir // -----------------------------------------------------------------------------
56cdf0e10cSrcweir 
57*b3f397bdSDamjan Jovanovic     class newFromString : public ::testing::Test
58cdf0e10cSrcweir     {
59cdf0e10cSrcweir     public:
60*b3f397bdSDamjan Jovanovic     }; // class newFromString
61cdf0e10cSrcweir 
62*b3f397bdSDamjan Jovanovic     // TEST_F(newFromString, newFromString_000)
63*b3f397bdSDamjan Jovanovic     // {
64*b3f397bdSDamjan Jovanovic     //     sal_Int32 nValue = rtl_string_newFromString( NULL, NULL );
65*b3f397bdSDamjan Jovanovic     //     // should not GPF
66*b3f397bdSDamjan Jovanovic     // }
67cdf0e10cSrcweir 
TEST_F(newFromString,newFromString_001)68*b3f397bdSDamjan Jovanovic     TEST_F(newFromString, newFromString_001)
69*b3f397bdSDamjan Jovanovic     {
70*b3f397bdSDamjan Jovanovic         rtl::OString aStr("Test Length.");
71*b3f397bdSDamjan Jovanovic         rtl_String *pStr = NULL;
72cdf0e10cSrcweir 
73*b3f397bdSDamjan Jovanovic         rtl_string_newFromString( &pStr, aStr.pData );
74cdf0e10cSrcweir 
75*b3f397bdSDamjan Jovanovic         rtl::OString aNewStr(pStr);
76*b3f397bdSDamjan Jovanovic         ASSERT_TRUE(aStr.equals(aNewStr) == sal_True) << "Strings must be equal";
77cdf0e10cSrcweir 
78*b3f397bdSDamjan Jovanovic         rtl_string_release(pStr);
79*b3f397bdSDamjan Jovanovic     }
80cdf0e10cSrcweir 
81cdf0e10cSrcweir     // -----------------------------------------------------------------------------
82cdf0e10cSrcweir 
83*b3f397bdSDamjan Jovanovic     class convertUStringToString : public ::testing::Test
84cdf0e10cSrcweir     {
85cdf0e10cSrcweir     public:
86*b3f397bdSDamjan Jovanovic     }; // class convertUStringToString
87cdf0e10cSrcweir 
88cdf0e10cSrcweir 
89*b3f397bdSDamjan Jovanovic     // TEST_F(convertUStringToString, newFromString_000)
90*b3f397bdSDamjan Jovanovic     // {
91*b3f397bdSDamjan Jovanovic     //     sal_Int32 nValue = rtl_string_newFromString( NULL, NULL );
92*b3f397bdSDamjan Jovanovic     //     // should not GPF
93*b3f397bdSDamjan Jovanovic     // }
94cdf0e10cSrcweir 
TEST_F(convertUStringToString,convertUStringToString_001)95*b3f397bdSDamjan Jovanovic     TEST_F(convertUStringToString, convertUStringToString_001)
96*b3f397bdSDamjan Jovanovic     {
97*b3f397bdSDamjan Jovanovic         rtl::OUString suString = rtl::OUString::createFromAscii("Hello");
98*b3f397bdSDamjan Jovanovic         rtl::OString sString;
99*b3f397bdSDamjan Jovanovic         sal_Bool bRet = rtl_convertUStringToString(&sString.pData, suString.getStr(), suString.getLength(), RTL_TEXTENCODING_ASCII_US, OUSTRING_TO_OSTRING_CVTFLAGS);
100cdf0e10cSrcweir 
101*b3f397bdSDamjan Jovanovic         ASSERT_TRUE(bRet == sal_True && sString.equals(rtl::OString("Hello")) == sal_True) << "Strings must be equal";
102*b3f397bdSDamjan Jovanovic     }
103cdf0e10cSrcweir 
TEST_F(convertUStringToString,convertUStringToString_002)104*b3f397bdSDamjan Jovanovic     TEST_F(convertUStringToString, convertUStringToString_002)
105*b3f397bdSDamjan Jovanovic     {
106*b3f397bdSDamjan Jovanovic         rtl::OString sStr("H\xE4llo");
107*b3f397bdSDamjan Jovanovic         rtl::OUString suString = rtl::OStringToOUString(sStr, RTL_TEXTENCODING_ISO_8859_15);
108cdf0e10cSrcweir 
109*b3f397bdSDamjan Jovanovic         rtl::OString sString;
110*b3f397bdSDamjan Jovanovic         sal_Bool bRet = rtl_convertUStringToString(&sString.pData, suString.getStr(), suString.getLength(), RTL_TEXTENCODING_ISO_8859_15, OUSTRING_TO_OSTRING_CVTFLAGS);
111cdf0e10cSrcweir 
112*b3f397bdSDamjan Jovanovic         ASSERT_TRUE(bRet == sal_True && sString.equals(rtl::OString("H\xE4llo")) == sal_True) << "Strings must be equal";
113*b3f397bdSDamjan Jovanovic     }
114cdf0e10cSrcweir 
TEST_F(convertUStringToString,convertUStringToString_003)115*b3f397bdSDamjan Jovanovic     TEST_F(convertUStringToString, convertUStringToString_003)
116*b3f397bdSDamjan Jovanovic     {
117*b3f397bdSDamjan Jovanovic         rtl::OString sStr("H\xC3\xA4llo");
118*b3f397bdSDamjan Jovanovic         rtl::OUString suString = rtl::OStringToOUString(sStr, RTL_TEXTENCODING_UTF8);
119cdf0e10cSrcweir 
120*b3f397bdSDamjan Jovanovic         rtl::OString sString;
121*b3f397bdSDamjan Jovanovic         sal_Bool bRet = rtl_convertUStringToString(&sString.pData, suString.getStr(), suString.getLength(), RTL_TEXTENCODING_ISO_8859_15, OUSTRING_TO_OSTRING_CVTFLAGS);
122cdf0e10cSrcweir 
123*b3f397bdSDamjan Jovanovic         ASSERT_TRUE(bRet == sal_True && sString.equals(rtl::OString("H\xE4llo")) == sal_True) << "Strings must be equal";
124*b3f397bdSDamjan Jovanovic     }
125cdf0e10cSrcweir 
TEST_F(convertUStringToString,convertUStringToString_004)126*b3f397bdSDamjan Jovanovic     TEST_F(convertUStringToString, convertUStringToString_004)
127*b3f397bdSDamjan Jovanovic     {
128*b3f397bdSDamjan Jovanovic         rtl::OString sStr("Tsch\xFC\xDF");
129*b3f397bdSDamjan Jovanovic         rtl::OUString suString = rtl::OStringToOUString(sStr, RTL_TEXTENCODING_ISO_8859_15);
130*b3f397bdSDamjan Jovanovic         rtl::OString sString;
131cdf0e10cSrcweir 
132*b3f397bdSDamjan Jovanovic         sal_Bool       bRet = rtl_convertUStringToString(&sString.pData, suString.getStr(), suString.getLength(), RTL_TEXTENCODING_UTF8, OUSTRING_TO_OSTRING_CVTFLAGS);
133*b3f397bdSDamjan Jovanovic         /* sal_Bool */ bRet = rtl_convertUStringToString(&sString.pData, suString.getStr(), suString.getLength(), RTL_TEXTENCODING_ISO_8859_15, OUSTRING_TO_OSTRING_CVTFLAGS);
134*b3f397bdSDamjan Jovanovic         ASSERT_TRUE(bRet == sal_True && sString.equals(rtl::OString("Tsch\xFC\xDF")) == sal_True) << "Strings must be equal";
135*b3f397bdSDamjan Jovanovic     }
136cdf0e10cSrcweir 
137cdf0e10cSrcweir } // namespace rtl_string
138cdf0e10cSrcweir 
139cdf0e10cSrcweir 
main(int argc,char ** argv)140*b3f397bdSDamjan Jovanovic int main(int argc, char **argv)
141*b3f397bdSDamjan Jovanovic {
142*b3f397bdSDamjan Jovanovic     ::testing::InitGoogleTest(&argc, argv);
143*b3f397bdSDamjan Jovanovic     return RUN_ALL_TESTS();
144*b3f397bdSDamjan Jovanovic }
145