[Libreoffice-commits] core.git: include/rtl sal/qa

Tor Lillqvist (via logerrit) logerrit at kemper.freedesktop.org
Thu Jan 14 17:07:38 UTC 2021


 include/rtl/ustring.hxx               |   20 ++++++++++++++++++++
 sal/qa/rtl/oustring/rtl_OUString2.cxx |   19 +++++++++++++++++++
 2 files changed, 39 insertions(+)

New commits:
commit 06ecfbe3d236e06f597e5422bfc24a9a76c3f90c
Author:     Tor Lillqvist <tml at collabora.com>
AuthorDate: Thu Jan 14 10:59:34 2021 +0200
Commit:     Tor Lillqvist <tml at collabora.com>
CommitDate: Thu Jan 14 18:06:58 2021 +0100

    Introduce startsWithAsciiL() to match endsWithAsciiL()
    
    Will be used in an upcoming change. Unit test included.
    
    Change-Id: I777a755cab543ea277b84fb5ad021d0b91725764
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109264
    Tested-by: Jenkins
    Reviewed-by: Tor Lillqvist <tml at collabora.com>

diff --git a/include/rtl/ustring.hxx b/include/rtl/ustring.hxx
index ee3cfe170555..3a7f8bd5654f 100644
--- a/include/rtl/ustring.hxx
+++ b/include/rtl/ustring.hxx
@@ -1419,6 +1419,26 @@ public:
         return b;
     }
 
+    /**
+      Check whether this string starts with a given ASCII string.
+
+      @param asciiStr a sequence of at least asciiStrLength ASCII characters
+          (bytes in the range 0x00--0x7F)
+      @param asciiStrLength the length of asciiStr; must be non-negative
+      @return true if this string starts with asciiStr; otherwise, false is
+      returned
+
+      @since LibreOffice 7.2
+     */
+    bool startsWithAsciiL(char const * asciiStr, sal_Int32 asciiStrLength)
+        const
+    {
+        return asciiStrLength <= pData->length
+            && rtl_ustr_asciil_reverseEquals_WithLength(
+                pData->buffer, asciiStr,
+                asciiStrLength);
+    }
+
     /**
       Check whether this string starts with a given string, ignoring the case of
       ASCII letters.
diff --git a/sal/qa/rtl/oustring/rtl_OUString2.cxx b/sal/qa/rtl/oustring/rtl_OUString2.cxx
index 516378dc14a7..d2223511f92a 100644
--- a/sal/qa/rtl/oustring/rtl_OUString2.cxx
+++ b/sal/qa/rtl/oustring/rtl_OUString2.cxx
@@ -881,6 +881,24 @@ void indexOfAscii::test() {
         sal_Int32(3), OUString("foofoobar").indexOf("foo", 1));
 }
 
+class startsWithAsciiL: public CppUnit::TestFixture {
+public:
+    void test();
+
+    CPPUNIT_TEST_SUITE(startsWithAsciiL);
+    CPPUNIT_TEST(test);
+    CPPUNIT_TEST_SUITE_END();
+};
+
+void startsWithAsciiL::test() {
+    CPPUNIT_ASSERT_EQUAL(true, OUString().startsWithAsciiL("", 0));
+    CPPUNIT_ASSERT_EQUAL(false, OUString().startsWithAsciiL("x", 1));
+    CPPUNIT_ASSERT_EQUAL(true, OUString("bar").startsWithAsciiL("bar", 3));
+    CPPUNIT_ASSERT_EQUAL(false, OUString("bar").startsWithAsciiL("foobar", 6));
+    CPPUNIT_ASSERT_EQUAL(true, OUString("foobar").startsWithAsciiL("foo", 3));
+    CPPUNIT_ASSERT_EQUAL(false, OUString("FOOBAR").startsWithAsciiL("foo", 3));
+}
+
 class endsWith: public CppUnit::TestFixture {
 public:
     void test();
@@ -1033,6 +1051,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::getToken);
 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::convertToString);
 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::construction);
 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::indexOfAscii);
+CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::startsWithAsciiL);
 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::endsWith);
 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::isEmpty);
 CPPUNIT_TEST_SUITE_REGISTRATION(rtl_OUString::createFromCodePoints);


More information about the Libreoffice-commits mailing list