From 97ac77f067910fa5e8206d75160fa63546a9358d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 07:03:24 +0200 Subject: Merging upstream version 4:24.2.3. Signed-off-by: Daniel Baumann --- sw/qa/extras/unowriter/unowriter.cxx | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'sw/qa/extras/unowriter') diff --git a/sw/qa/extras/unowriter/unowriter.cxx b/sw/qa/extras/unowriter/unowriter.cxx index 8bcadbaf42..80b9e556f7 100644 --- a/sw/qa/extras/unowriter/unowriter.cxx +++ b/sw/qa/extras/unowriter/unowriter.cxx @@ -1201,6 +1201,27 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, testTdf129841) CPPUNIT_ASSERT_EQUAL(aRefColor, aColor); } +CPPUNIT_TEST_FIXTURE(SwUnoWriter, testTdf160278) +{ + createSwDoc(); + auto xTextDocument(mxComponent.queryThrow()); + auto xText(xTextDocument->getText()); + xText->setString(u"123"_ustr); + CPPUNIT_ASSERT_EQUAL(u"123"_ustr, xText->getString()); + auto xCursor = xText->createTextCursorByRange(xText->getEnd()); + xCursor->goLeft(1, true); + CPPUNIT_ASSERT_EQUAL(u"3"_ustr, xCursor->getString()); + // Insert an SMP character U+1f702 (so it's two UTF-16 code units, 0xd83d 0xdf02): + xCursor->setString(u"🜂"_ustr); + // Without the fix, the replacement would expand the cursor one too many characters to the left, + // and the cursor text would become "2🜂", failing the next test: + CPPUNIT_ASSERT_EQUAL(u"🜂"_ustr, xCursor->getString()); + xCursor->setString(u"test"_ustr); + CPPUNIT_ASSERT_EQUAL(u"test"_ustr, xCursor->getString()); + // This test would fail, too; the text would be "1test": + CPPUNIT_ASSERT_EQUAL(u"12test"_ustr, xText->getString()); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3