Kaydet (Commit) 6676c4eb authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Fix rtl::OUString::compareToIgnoreAsciiCase

Change-Id: I40005ef4fad4d44314ec2fb2881fec82e926970e
üst 47dfe5b8
...@@ -527,8 +527,8 @@ public: ...@@ -527,8 +527,8 @@ public:
/** /**
Perform a ASCII lowercase comparison of two strings. Perform a ASCII lowercase comparison of two strings.
Compare teh two string with uppercase ASCII Compare the two strings with uppercase ASCII
character values between 65 and 90 (ASCII A-Z) are interpreted as character values between 65 and 90 (ASCII A-Z) interpreted as
values between 97 and 122 (ASCII a-z). values between 97 and 122 (ASCII a-z).
This function can't be used for language specific comparison. This function can't be used for language specific comparison.
...@@ -536,13 +536,11 @@ public: ...@@ -536,13 +536,11 @@ public:
@return 0 - if both strings are equal @return 0 - if both strings are equal
< 0 - if this string is less than the string argument < 0 - if this string is less than the string argument
> 0 - if this string is greater than the string argument > 0 - if this string is greater than the string argument
@since LibreOffice 4.0
*/ */
sal_Int32 compareToIgnoreAsciiCase( const OUString & str ) const SAL_THROW(()) sal_Int32 compareToIgnoreAsciiCase( const OUString & str ) const SAL_THROW(())
{ {
if ( pData->length != str.pData->length )
return sal_False;
if ( pData == str.pData )
return sal_True;
return rtl_ustr_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length, return rtl_ustr_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length,
str.pData->buffer, str.pData->length ); str.pData->buffer, str.pData->length );
} }
......
...@@ -32,9 +32,12 @@ private: ...@@ -32,9 +32,12 @@ private:
void compareToAscii(); void compareToAscii();
void compareToIgnoreAsciiCase();
CPPUNIT_TEST_SUITE(Compare); CPPUNIT_TEST_SUITE(Compare);
CPPUNIT_TEST(equalsIgnoreAsciiCaseAscii); CPPUNIT_TEST(equalsIgnoreAsciiCaseAscii);
CPPUNIT_TEST(compareToAscii); CPPUNIT_TEST(compareToAscii);
CPPUNIT_TEST(compareToIgnoreAsciiCase);
CPPUNIT_TEST_SUITE_END(); CPPUNIT_TEST_SUITE_END();
}; };
...@@ -70,4 +73,16 @@ void test::oustring::Compare::compareToAscii() ...@@ -70,4 +73,16 @@ void test::oustring::Compare::compareToAscii()
sal_Int32(0), abc.compareToAscii(RTL_CONSTASCII_STRINGPARAM("a"))); sal_Int32(0), abc.compareToAscii(RTL_CONSTASCII_STRINGPARAM("a")));
} }
void test::oustring::Compare::compareToIgnoreAsciiCase()
{
CPPUNIT_ASSERT_EQUAL(
sal_Int32(0),
rtl::OUString("abc").compareToIgnoreAsciiCase(rtl::OUString("ABC")));
CPPUNIT_ASSERT(
rtl::OUString("ABC").compareToIgnoreAsciiCase(rtl::OUString("abcdef"))
< 0);
CPPUNIT_ASSERT(
rtl::OUString("A").compareToIgnoreAsciiCase(rtl::OUString("_")) > 0);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment