diff options
author | Dmitri Plotnikov <dplotnikov@google.com> | 2011-02-11 15:20:55 -0800 |
---|---|---|
committer | Dmitri Plotnikov <dplotnikov@google.com> | 2011-02-11 15:20:55 -0800 |
commit | 92ddc5cdc4d89ee2c6e861ae7b3a3a913ffa0100 (patch) | |
tree | cfd2616a96285de6ad6446282e3f6fc8df63c1d1 /tests | |
parent | 174f7d319b987aa2aeeb6f2563f4b939acb8d791 (diff) | |
download | packages_providers_ContactsProvider-92ddc5cdc4d89ee2c6e861ae7b3a3a913ffa0100.zip packages_providers_ContactsProvider-92ddc5cdc4d89ee2c6e861ae7b3a3a913ffa0100.tar.gz packages_providers_ContactsProvider-92ddc5cdc4d89ee2c6e861ae7b3a3a913ffa0100.tar.bz2 |
Full text search: Asian language support
Bug: 2078420
Change-Id: I1a99ad05bb6e30b539134d60f669134b87dbf180
Diffstat (limited to 'tests')
3 files changed, 117 insertions, 17 deletions
diff --git a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java index 55f38c9..a62f9c5 100644 --- a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java +++ b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java @@ -776,6 +776,8 @@ public abstract class BaseContactsProvider2Test extends AndroidTestCase { String value = null; Cursor c = mResolver.query(uri, new String[] { column }, selection, selectionArgs, null); try { + assertEquals("Record count", 1, c.getCount()); + if (c.moveToFirst()) { value = c.getString(c.getColumnIndex(column)); } diff --git a/tests/src/com/android/providers/contacts/NameLookupBuilderTest.java b/tests/src/com/android/providers/contacts/NameLookupBuilderTest.java index 91ab761..a5cff7a 100644 --- a/tests/src/com/android/providers/contacts/NameLookupBuilderTest.java +++ b/tests/src/com/android/providers/contacts/NameLookupBuilderTest.java @@ -191,17 +191,12 @@ public class NameLookupBuilderTest extends TestCase { mBuilder.insertNameLookup(0, 0, "\u695A\u8FAD", FullNameStyle.CHINESE); assertEquals( "(0:\u695A\u8FAD)" + - "(2:\u695A\u8FAD)" + - "(6:\u695A\u8FAD)" + - "(6:CI)" + - "(6:\u8FAD)" + - "(6:CHUCI)" + - "(6:CC)" + - "(6:C)", mBuilder.inserted()); + "(2:\u695A\u8FAD)", + mBuilder.inserted()); } public void testKoreanName() { - // Only run this test when Chinese collation is supported. + // Only run this test when Korean collation is supported. if (!Arrays.asList(Collator.getAvailableLocales()).contains(Locale.KOREA)) { return; } @@ -210,10 +205,7 @@ public class NameLookupBuilderTest extends TestCase { mBuilder.insertNameLookup(0, 0, "\uC774\uC0C1\uC77C", FullNameStyle.KOREAN); assertEquals( "(0:\uC774\uC0C1\uC77C)" + // Lee Sang Il - "(2:\uC774\uC0C1\uC77C)" + // Lee Sang Il - "(6:\uC0C1\uC77C)" + // Sang Il : given name - "(7:\u1109\u110B)" + // SIOS IEUNG : consonants of given name - "(7:\u110B\u1109\u110B)", // RIEUL SIOS IEUNG : consonants of fullname + "(2:\uC774\uC0C1\uC77C)", mBuilder.inserted()); } @@ -227,10 +219,7 @@ public class NameLookupBuilderTest extends TestCase { mBuilder.insertNameLookup(0, 0, "\uC120\uC6B0\uC6A9\uB140", FullNameStyle.KOREAN); assertEquals( "(0:\uC120\uC6B0\uC6A9\uB140)" + // Sun Woo Young Nyeu - "(2:\uC120\uC6B0\uC6A9\uB140)" + // Sun Woo Young Nyeu - "(6:\uC6A9\uB140)" + // Young Nyeu : given name - "(7:\u110B\u1102)" + // IEUNG NIEUN : consonants of given name - "(7:\u1109\u110B\u110B\u1102)", // SIOS IEUNG IEUNG NIEUN : consonants of fullname + "(2:\uC120\uC6B0\uC6A9\uB140)", // Sun Woo Young Nyeu mBuilder.inserted()); } diff --git a/tests/src/com/android/providers/contacts/SearchIndexManagerTest.java b/tests/src/com/android/providers/contacts/SearchIndexManagerTest.java index 09e7924..52ed18f 100644 --- a/tests/src/com/android/providers/contacts/SearchIndexManagerTest.java +++ b/tests/src/com/android/providers/contacts/SearchIndexManagerTest.java @@ -27,6 +27,10 @@ import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.SearchSnippetColumns; import android.test.suitebuilder.annotation.MediumTest; +import java.text.Collator; +import java.util.Arrays; +import java.util.Locale; + /** * Unit tests for {@link SearchIndexManager}. * @@ -57,7 +61,112 @@ public class SearchIndexManagerTest extends BaseContactsProvider2Test { insertStructuredName(rawContactId, values); assertSearchIndex( - contactId, null, "Doe John Parr Bob I. Mrs. Parr Helen I. PhD par helen parhelen"); + contactId, null, "John Doe Bob I Parr Helen I Parr PhD par helen parhelen"); + } + + public void testSearchIndexForChineseName() { + // Only run this test when Chinese collation is supported + if (!Arrays.asList(Collator.getAvailableLocales()).contains(Locale.CHINA)) { + return; + } + + long rawContactId = createRawContact(); + long contactId = queryContactId(rawContactId); + ContentValues values = new ContentValues(); + values.put(StructuredName.DISPLAY_NAME, "\u695A\u8FAD"); // CHUCI + insertStructuredName(rawContactId, values); + + assertSearchIndex( + contactId, null, "\u695A\u8FAD \u695A\u8FAD CI \u8FAD CHUCI CC C"); + } + + public void testSearchByChineseName() { + // Only run this test when Chinese collation is supported + if (!Arrays.asList(Collator.getAvailableLocales()).contains(Locale.CHINA)) { + return; + } + + long rawContactId = createRawContact(); + long contactId = queryContactId(rawContactId); + ContentValues values = new ContentValues(); + values.put(StructuredName.DISPLAY_NAME, "\u695A\u8FAD"); // CHUCI + insertStructuredName(rawContactId, values); + + assertStoredValue(buildSearchUri("\u695A\u8FAD"), SearchSnippetColumns.SNIPPET, null); + assertStoredValue(buildSearchUri("\u8FAD"), SearchSnippetColumns.SNIPPET, null); + assertStoredValue(buildSearchUri("CI"), SearchSnippetColumns.SNIPPET, null); + assertStoredValue(buildSearchUri("CHUCI"), SearchSnippetColumns.SNIPPET, null); + assertStoredValue(buildSearchUri("CC"), SearchSnippetColumns.SNIPPET, null); + assertStoredValue(buildSearchUri("C"), SearchSnippetColumns.SNIPPET, null); + } + + public void testSearchIndexForKoreanName() { + // Only run this test when Korean collation is supported + if (!Arrays.asList(Collator.getAvailableLocales()).contains(Locale.KOREA)) { + return; + } + + long rawContactId = createRawContact(); + long contactId = queryContactId(rawContactId); + ContentValues values = new ContentValues(); + values.put(StructuredName.DISPLAY_NAME, "\uC774\uC0C1\uC77C"); // Lee Sang Il + insertStructuredName(rawContactId, values); + + assertSearchIndex( + contactId, null, "\uC774\uC0C1\uC77C \uC0C1\uC77C \u1109\u110B \u110B\u1109\u110B"); + } + + public void testSearchByKoreanName() { + // Only run this test when Korean collation is supported + if (!Arrays.asList(Collator.getAvailableLocales()).contains(Locale.KOREA)) { + return; + } + + long rawContactId = createRawContact(); + ContentValues values = new ContentValues(); + values.put(StructuredName.DISPLAY_NAME, "\uC774\uC0C1\uC77C"); // Lee Sang Il + insertStructuredName(rawContactId, values); + + // Full name: Lee Sang Il + assertStoredValue(buildSearchUri("\uC774\uC0C1\uC77C"), SearchSnippetColumns.SNIPPET, null); + + // Given name: Sang Il + assertStoredValue(buildSearchUri("\uC0C1\uC77C"), SearchSnippetColumns.SNIPPET, null); + + // Consonants of given name: SIOS IEUNG + assertStoredValue(buildSearchUri("\u1109\u110B"), SearchSnippetColumns.SNIPPET, null); + + // Consonants of full name: RIEUL SIOS IEUNG + assertStoredValue(buildSearchUri("\u110B\u1109\u110B"), SearchSnippetColumns.SNIPPET, null); + } + + public void testSearchByKoreanNameWithTwoCharactersFamilyName() { + // Only run this test when Korean collation is supported. + if (!Arrays.asList(Collator.getAvailableLocales()).contains(Locale.KOREA)) { + return; + } + + long rawContactId = createRawContact(); + + // Sun Woo Young Nyeu + ContentValues values = new ContentValues(); + values.put(StructuredName.DISPLAY_NAME, "\uC120\uC6B0\uC6A9\uB140"); + + insertStructuredName(rawContactId, values); + + // Full name: Sun Woo Young Nyeu + assertStoredValue( + buildSearchUri("\uC120\uC6B0\uC6A9\uB140"), SearchSnippetColumns.SNIPPET, null); + + // Given name: Young Nyeu + assertStoredValue(buildSearchUri("\uC6A9\uB140"), SearchSnippetColumns.SNIPPET, null); + + // Consonants of given name: IEUNG NIEUN + assertStoredValue(buildSearchUri("\u110B\u1102"), SearchSnippetColumns.SNIPPET, null); + + // Consonants of full name: SIOS IEUNG IEUNG NIEUN + assertStoredValue( + buildSearchUri("\u1109\u110B\u110B\u1102"), SearchSnippetColumns.SNIPPET, null); } public void testSearchIndexForOrganization() { |