summaryrefslogtreecommitdiff
path: root/i18npool/qa/cppunit/test_breakiterator.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-07-13 09:49:02 +0100
committerStephan Bergmann <sbergman@redhat.com>2012-07-13 11:14:20 +0200
commit5e3c37c8a3b567cf3d8c9a47b37155e3c2ffefb9 (patch)
tree6c65daf2197dbb1ed2642b1bec951ba2406fb5f6 /i18npool/qa/cppunit/test_breakiterator.cxx
parente10695d407cd882a4e95fd64a6848606017607b4 (diff)
Resolves: fdo#52020 ICU breakiterator not used for Khmer
Change-Id: I4c99129cabe70f17aa223cf8ec0ae1529188b6b7 (cherry picked from commit 8ad1d4443e67784a8c0d3c1a3a72f089cb0cd3ec) Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'i18npool/qa/cppunit/test_breakiterator.cxx')
-rw-r--r--i18npool/qa/cppunit/test_breakiterator.cxx24
1 files changed, 24 insertions, 0 deletions
diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx
index ffd590c0c05a..a8a050aacdae 100644
--- a/i18npool/qa/cppunit/test_breakiterator.cxx
+++ b/i18npool/qa/cppunit/test_breakiterator.cxx
@@ -62,6 +62,7 @@ public:
#if TODO
void testNorthernThai();
#endif
+ void testKhmer();
CPPUNIT_TEST_SUITE(TestBreakIterator);
CPPUNIT_TEST(testLineBreaking);
@@ -72,6 +73,7 @@ public:
#if TODO
CPPUNIT_TEST(testNorthernThai);
#endif
+ CPPUNIT_TEST(testKhmer);
CPPUNIT_TEST_SUITE_END();
private:
uno::Reference<i18n::XBreakIterator> m_xBreak;
@@ -344,6 +346,28 @@ void TestBreakIterator::testNorthernThai()
}
#endif
+//A test to ensure that our khmer word boundary detection is useful
+//https://bugs.freedesktop.org/show_bug.cgi?id=52020
+void TestBreakIterator::testKhmer()
+{
+ lang::Locale aLocale;
+ aLocale.Language = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("km"));
+ aLocale.Country = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("KH"));
+
+ const sal_Unicode KHMER1[] = { 0x17B2, 0x17D2, 0x1799, 0x1782, 0x17C1 };
+
+ ::rtl::OUString aTest(KHMER1, SAL_N_ELEMENTS(KHMER1));
+ i18n::Boundary aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale,
+ i18n::WordType::DICTIONARY_WORD, true);
+
+ CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 3);
+
+ aBounds = m_xBreak->getWordBoundary(aTest, aBounds.endPos, aLocale,
+ i18n::WordType::DICTIONARY_WORD, true);
+
+ CPPUNIT_ASSERT(aBounds.startPos == 3 && aBounds.endPos == 5);
+}
+
void TestBreakIterator::setUp()
{
BootstrapFixtureBase::setUp();