From f24fa8efad247bdc296e4724b914f73f01ef2d0b Mon Sep 17 00:00:00 2001 From: Robert M Campbell Date: Wed, 13 Nov 2013 23:15:13 +0700 Subject: Add Lao breakiterator support for selecting and counting Lao words. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I6da721dc25394dfee12e3028aefbf0546d1be984 Reviewed-on: https://gerrit.libreoffice.org/6669 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- i18npool/qa/cppunit/test_breakiterator.cxx | 25 ++++++++++++++++++++++ .../source/breakiterator/breakiterator_unicode.cxx | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'i18npool') diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx index 8d702501899a..a81475bc8896 100644 --- a/i18npool/qa/cppunit/test_breakiterator.cxx +++ b/i18npool/qa/cppunit/test_breakiterator.cxx @@ -39,6 +39,7 @@ public: void testWeak(); void testAsian(); void testThai(); + void testLao(); #ifdef TODO void testNorthernThai(); #endif @@ -58,6 +59,9 @@ public: CPPUNIT_TEST(testWordBoundaries); #if (U_ICU_VERSION_MAJOR_NUM > 4) CPPUNIT_TEST(testKhmer); +#endif +#if (U_ICU_VERSION_MAJOR_NUM > 51) + CPPUNIT_TEST(testLao); #endif CPPUNIT_TEST(testJapanese); CPPUNIT_TEST_SUITE_END(); @@ -784,6 +788,27 @@ void TestBreakIterator::testAsian() } } +//A test to ensure that our Lao word boundary detection is useful +void TestBreakIterator::testLao() +{ + lang::Locale aLocale; + aLocale.Language = OUString("lo"); + aLocale.Country = OUString("LA"); + //ຍິນດີຕ້ອນຮັບ + const sal_Unicode LAO[] = { 0x0e8d, 0x0eb4, 0x0e99, 0x0e94, 0x0eb5, 0x0e95, 0x0ec9, 0x0ead, 0x0e99, 0x0eae, 0x0eb1, 0x0e9a }; + OUString aTest(LAO, SAL_N_ELEMENTS(LAO)); + i18n::Boundary aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, + i18n::WordType::DICTIONARY_WORD, true); + + CPPUNIT_ASSERT(aBounds.startPos == 0 && aBounds.endPos == 5); + + aBounds = m_xBreak->getWordBoundary(aTest, aBounds.endPos, aLocale, + i18n::WordType::DICTIONARY_WORD, true); + + CPPUNIT_ASSERT(aBounds.startPos == 5 && aBounds.endPos == 9); + +} + //A test to ensure that our thai word boundary detection is useful void TestBreakIterator::testThai() { diff --git a/i18npool/source/breakiterator/breakiterator_unicode.cxx b/i18npool/source/breakiterator/breakiterator_unicode.cxx index f85c1099ea88..3bb2e3ef7c54 100644 --- a/i18npool/source/breakiterator/breakiterator_unicode.cxx +++ b/i18npool/source/breakiterator/breakiterator_unicode.cxx @@ -121,7 +121,7 @@ void SAL_CALL BreakIterator_Unicode::loadICUBreakIterator(const com::sun::star:: OUStringToOString(breakRules[breakType], RTL_TEXTENCODING_ASCII_US).getStr(), &status), status); } //use icu's breakiterator for Thai, Khmer, Tibetan and Dzongkha - else if (rLocale.Language != "th" && rLocale.Language != "km" && rLocale.Language != "bo" && rLocale.Language != "dz") + else if (rLocale.Language != "th" && rLocale.Language != "lo" && rLocale.Language != "km" && rLocale.Language != "bo" && rLocale.Language != "dz") { status = U_ZERO_ERROR; OStringBuffer aUDName(64); -- cgit v1.2.3