i18npool/qa/cppunit/test_characterclassification.cxx | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+)
New commits: commit d592e502488857871c44ba5d6e06043b1b6a63c4 Author: Khaled Hosny <kha...@libreoffice.org> AuthorDate: Mon Jul 24 20:28:56 2023 +0300 Commit: خالد حسني <kha...@libreoffice.org> CommitDate: Mon Jul 24 21:07:02 2023 +0200 i18npool: Test case folding of surrogate pairs Change-Id: I3097651927b85aaa46fc4fc59badf22d24fcb928 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154872 Tested-by: Jenkins Reviewed-by: خالد حسني <kha...@libreoffice.org> diff --git a/i18npool/qa/cppunit/test_characterclassification.cxx b/i18npool/qa/cppunit/test_characterclassification.cxx index 206bcec83882..78397029b71f 100644 --- a/i18npool/qa/cppunit/test_characterclassification.cxx +++ b/i18npool/qa/cppunit/test_characterclassification.cxx @@ -217,6 +217,61 @@ CPPUNIT_TEST_FIXTURE(TestCharacterClassification, testTdf97152) } } +CPPUNIT_TEST_FIXTURE(TestCharacterClassification, testSurrogatePairs) +{ + { + // No case mapping + OUString sTest(u"\U0001F600"); + OUString sLowerCase = m_xCC->toLower(sTest, 0, sTest.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be lower", OUString(u"\U0001F600"), sLowerCase); + OUString sUpperCase = m_xCC->toUpper(sLowerCase, 0, sLowerCase.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be upper", sTest, sUpperCase); + } + + { + // Case mapping + OUString sTest(u"\U00010400"); + OUString sLowerCase = m_xCC->toLower(sTest, 0, sTest.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be lower", OUString(u"\U00010428"), sLowerCase); + OUString sUpperCase = m_xCC->toUpper(sLowerCase, 0, sLowerCase.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be upper", sTest, sUpperCase); + } +} + +CPPUNIT_TEST_FIXTURE(TestCharacterClassification, testAdlam) +{ + OUString sUpper(u"𞤀𞤁𞤂𞤃𞤄𞤅𞤆𞤇𞤈𞤉𞤊𞤋𞤌𞤍𞤎𞤏𞤐𞤑𞤒𞤓𞤔𞤕𞤖𞤗𞤘𞤙𞤚𞤛𞤜𞤝𞤞𞤟𞤠𞤡"); + OUString sLower(u"𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿𞥀𞥁𞥂𞥃"); + OUString sTitle = sLower; // Adlam doesn’t have title case? + { + // From upper case + OUString sLowerRes = m_xCC->toLower(sUpper, 0, sUpper.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be lower", sLower, sLowerRes); + OUString sUpperRes = m_xCC->toUpper(sLowerRes, 0, sLower.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be upper", sUpper, sUpperRes); + } + + { + // From lower case + OUString sTitleRes = m_xCC->toTitle(sLower, 0, sLower.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be title", sTitle, sTitleRes); + OUString sUpperRes = m_xCC->toUpper(sLower, 0, sLower.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be upper", sUpper, sUpperRes); + OUString sLowerRes = m_xCC->toLower(sUpperRes, 0, sUpperRes.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be lower", sLower, sLowerRes); + } + + { + // From title case + OUString sTitleRes = m_xCC->toTitle(sTitle, 0, sTitle.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be title", sTitle, sTitleRes); + OUString sUpperRes = m_xCC->toUpper(sTitle, 0, sTitle.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be upper", sUpper, sUpperRes); + OUString sLowerRes = m_xCC->toLower(sTitle, 0, sTitle.getLength(), {}); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Should be lower", sLower, sLowerRes); + } +} + void TestCharacterClassification::setUp() { BootstrapFixtureBase::setUp();