14097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov/* 24097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * Copyright (C) 2009 The Android Open Source Project 34097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * 44097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 54097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * you may not use this file except in compliance with the License. 64097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * You may obtain a copy of the License at 74097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * 84097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 94097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * 104097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 114097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 124097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * See the License for the specific language governing permissions and 144097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * limitations under the License. 154097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov */ 164097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1728f8857b1b46bde18b85c6d3c2a63ac44c3c2e1cEvan Millarpackage com.android.providers.contacts; 184097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 19635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikovimport android.provider.ContactsContract.FullNameStyle; 20635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikovimport android.provider.ContactsContract.PhoneticNameStyle; 214097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikovimport android.test.suitebuilder.annotation.SmallTest; 224097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 2338210445730ee04c351c7cc1b3800cfe23e34325Makoto Onukiimport com.android.providers.contacts.NameSplitter.Name; 24622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey 25790d120a13119275ab811fa1d57f5c4d0e5042e8Dmitri Plotnikovimport junit.framework.TestCase; 26790d120a13119275ab811fa1d57f5c4d0e5042e8Dmitri Plotnikov 2738210445730ee04c351c7cc1b3800cfe23e34325Makoto Onukiimport java.util.Locale; 2838210445730ee04c351c7cc1b3800cfe23e34325Makoto Onuki 294097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov/** 304097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * Tests for {@link NameSplitter}. 318920a04b4a68ed6b548bcdef5ca8736dcf8b69b1Omari Stephens * 328920a04b4a68ed6b548bcdef5ca8736dcf8b69b1Omari Stephens * Run the test like this: 338920a04b4a68ed6b548bcdef5ca8736dcf8b69b1Omari Stephens * <code> 348920a04b4a68ed6b548bcdef5ca8736dcf8b69b1Omari Stephens * adb shell am instrument -e class com.android.providers.contacts.NameSplitterTest -w \ 358920a04b4a68ed6b548bcdef5ca8736dcf8b69b1Omari Stephens * com.android.providers.contacts.tests/android.test.InstrumentationTestRunner 368920a04b4a68ed6b548bcdef5ca8736dcf8b69b1Omari Stephens * </code> 374097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov */ 384097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov@SmallTest 394097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikovpublic class NameSplitterTest extends TestCase { 404097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov private NameSplitter mNameSplitter; 414097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 424097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov @Override 434097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov protected void setUp() throws Exception { 444097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov super.setUp(); 455dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov createNameSplitter(Locale.US); 46635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 474097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 48635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov private void createNameSplitter(Locale locale) { 49635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov mNameSplitter = new NameSplitter("Mr, Ms, Mrs", "d', st, st., von", "Jr., M.D., MD, D.D.S.", 50635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "&, AND", locale); 514097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 524097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 534097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testNull() { 544097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName(null, null, null, null, null, null); 55622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName(null, null, null, null, null, null); 564097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 574097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 584097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testEmpty() { 594097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("", null, null, null, null, null); 60622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName(null, null, null, null, null, null); 614097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 624097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 634097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testSpaces() { 644097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName(" ", null, null, null, null, null); 65622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName(null, null, null, null, null, null); 664097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 674097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 68635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testFamilyName() { 69c10787a94ab8d0163480b6f33bd4367d142164d4Dmitri Plotnikov assertSplitName("Smith", null, "Smith", null, null, null); 70c10787a94ab8d0163480b6f33bd4367d142164d4Dmitri Plotnikov assertJoinedName("Smith", null, "Smith", null, null, null); 714097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 724097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 73c19e02a37399c55b852d6570f73553e859b0139aDmitri Plotnikov public void testIgnoreSuffix() { 74c19e02a37399c55b852d6570f73553e859b0139aDmitri Plotnikov assertSplitName("Ms MD", "Ms", null, null, "MD", null); 7555e5cbf566edd89fc55f4a7f0ef2847084da9b16Dmitri Plotnikov assertJoinedName("Ms MD", "Ms", null, null, "MD", null); 76c19e02a37399c55b852d6570f73553e859b0139aDmitri Plotnikov } 77c19e02a37399c55b852d6570f73553e859b0139aDmitri Plotnikov 78635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGivenFamilyName() { 794097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Smith", null, "John", null, "Smith", null); 80622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", null, "John", null, "Smith", null); 814097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 824097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 83635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGivenMiddleFamilyName() { 844097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Edward Smith", null, "John", "Edward", "Smith", null); 85635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("John Edward Smith", null, "John", "Edward", "Smith", null); 864097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 874097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 88635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testThreeNamesAndFamilyName() { 894097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Edward Kevin Smith", null, "John Edward", "Kevin", "Smith", null); 90635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("John Edward Kevin Smith", null, "John Edward", "Kevin", "Smith", null); 914097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 924097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 93635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testPrefixFivenFamilyName() { 9417a22fae02931ae536f35293ca13a8de53439f72Dmitri Plotnikov assertSplitName("Mr. John Smith", "Mr.", "John", null, "Smith", null); 9555e5cbf566edd89fc55f4a7f0ef2847084da9b16Dmitri Plotnikov assertJoinedName("Mr John Smith", "Mr", "John", null, "Smith", null); 9617a22fae02931ae536f35293ca13a8de53439f72Dmitri Plotnikov assertSplitName("Mr.John Smith", "Mr.", "John", null, "Smith", null); 9755e5cbf566edd89fc55f4a7f0ef2847084da9b16Dmitri Plotnikov assertJoinedName("Mr John Smith", "Mr", "John", null, "Smith", null); 984097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 994097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 100635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testFivenFamilyNameSuffix() { 101635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("John Smith Jr", null, "John", null, "Smith", "Jr"); 102635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("John Smith, Jr.", null, "John", null, "Smith", "Jr"); 1034097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1044097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 105635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGivenFamilyNameSuffixWithDot() { 1064097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Smith M.D.", null, "John", null, "Smith", "M.D."); 107635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("John Smith, M.D.", null, "John", null, "Smith", "M.D."); 1084097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Smith D D S", null, "John", null, "Smith", "D D S"); 109635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("John Smith, D D S", null, "John", null, "Smith", "D D S"); 1104097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1114097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 112635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGivenSuffixFamilyName() { 1134097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John von Smith", null, "John", null, "von Smith", null); 114622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John von Smith", null, "John", null, "von Smith", null); 1154097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1164097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 117635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGivenSuffixFamilyNameWithDot() { 1184097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John St.Smith", null, "John", null, "St. Smith", null); 119622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John St. Smith", null, "John", null, "St. Smith", null); 1204097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1214097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 122635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testPrefixGivenMiddleFamily() { 12317a22fae02931ae536f35293ca13a8de53439f72Dmitri Plotnikov assertSplitName("Mr. John Kevin Smith", "Mr.", "John", "Kevin", "Smith", null); 12455e5cbf566edd89fc55f4a7f0ef2847084da9b16Dmitri Plotnikov assertJoinedName("Mr John Kevin Smith", "Mr", "John", "Kevin", "Smith", null); 12517a22fae02931ae536f35293ca13a8de53439f72Dmitri Plotnikov assertSplitName("Mr.John Kevin Smith", "Mr.", "John", "Kevin", "Smith", null); 12655e5cbf566edd89fc55f4a7f0ef2847084da9b16Dmitri Plotnikov assertJoinedName("Mr. John Kevin Smith", "Mr.", "John", "Kevin", "Smith", null); 127635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 128635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 129635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testPrefixGivenMiddleFamilySuffix() { 13017a22fae02931ae536f35293ca13a8de53439f72Dmitri Plotnikov assertSplitName("Mr. John Kevin Smith Jr.", "Mr.", "John", "Kevin", "Smith", "Jr."); 13155e5cbf566edd89fc55f4a7f0ef2847084da9b16Dmitri Plotnikov assertJoinedName("Mr John Kevin Smith, Jr.", "Mr", "John", "Kevin", "Smith", "Jr"); 1324097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1334097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 134635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testPrefixGivenMiddlePrefixFamilySuffixWrongCapitalization() { 13517a22fae02931ae536f35293ca13a8de53439f72Dmitri Plotnikov assertSplitName("MR. john keVin VON SmiTh JR.", "MR.", "john", "keVin", "VON SmiTh", "JR."); 13655e5cbf566edd89fc55f4a7f0ef2847084da9b16Dmitri Plotnikov assertJoinedName("MR john keVin VON SmiTh, JR.", "MR", "john", "keVin", "VON SmiTh", "JR"); 1374097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1384097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 139635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testPrefixFamilySuffix() { 140635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("von Smith Jr.", null, null, null, "von Smith", "Jr."); 141635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("von Smith, Jr.", null, null, null, "von Smith", "Jr"); 1424097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1434097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 144635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testFamilyNameGiven() { 145635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("Smith, John", null, "John", null, "Smith", null); 146635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("Smith , John", null, "John", null, "Smith", null); 147635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("Smith, John Kimble", null, "John", "Kimble", "Smith", null); 148635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("Smith, John K.", null, "John", "K.", "Smith", null); 149635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("Smith, John, Jr.", null, "John", null, "Smith", "Jr."); 150635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("Smith, John Kimble, Jr.", null, "John", "Kimble", "Smith", "Jr."); 151635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("von Braun, John, Jr.", null, "John", null, "von Braun", "Jr."); 152635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("von Braun, John Kimble, Jr.", null, "John", "Kimble", "von Braun", "Jr."); 1534097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1544097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 155635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testTwoNamesAndFamilyNameWithAmpersand() { 1564097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John & Edward Smith", null, "John & Edward", null, "Smith", null); 157622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John & Edward Smith", null, "John & Edward", null, "Smith", null); 1584097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John and Edward Smith", null, "John and Edward", null, "Smith", null); 159635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("Smith, John and Edward", null, "John and Edward", null, "Smith", null); 160622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John and Edward Smith", null, "John and Edward", null, "Smith", null); 1614097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1624097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1634097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testWithMiddleInitialAndNoDot() { 164635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("John E. Smith", null, "John", "E.", "Smith", null); 165635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("John E Smith", null, "John", "E", "Smith", null); 166635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 167635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 168635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testWithLongGivenNameAndDot() { 169635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("John Ed. K. Smith", null, "John Ed.", "K.", "Smith", null); 170635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("John Ed. K Smith", null, "John Ed.", "K", "Smith", null); 171635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 172635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 173635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGuessFullNameStyleEmpty() { 174635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.UNDEFINED, null); 175635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.UNDEFINED, ""); 176635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 177635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 178635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGuessFullNameStyleWestern() { 179635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 180635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Latin letters 181635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.WESTERN, "John Doe"); 182635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 1834cd13c4266d8e476e1a49c4b6bcd5b18c33d0de3Bai Tao // Starts with a Latin letter, but contains Japanese letters 1844cd13c4266d8e476e1a49c4b6bcd5b18c33d0de3Bai Tao assertFullNameStyle(FullNameStyle.JAPANESE, "A\u3080\u308D\u306A\u307F\u3048"); 185635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 186635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Starts with an Extended Latin letter "Latin Capital Ligature OE" 187635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.WESTERN, "\u0152uvre"); 188635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 189635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Non-letters don't make a difference. This one starts with a vertical line 190635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.WESTERN, "\uFF5C.?+Smith"); 191635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 192635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 193635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGuessFullNameStyleJapanese() { 1945dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov createNameSplitter(Locale.JAPAN); 195635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 196635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Hiragana: always Japanese 197635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.JAPANESE, "\u3042\u3080\u308D\u306A\u307F\u3048"); 198635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 199635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Katakana: always Japanese 200635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.JAPANESE, "\u30A2\u30E0\u30ED \u30CA\u30DF\u30A8"); 201635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 202635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Half-width Katakana: always Japanese 203635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.JAPANESE, "\uFF71\uFF91\uFF9B \uFF85\uFF90\uFF74"); 204635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 2055dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov // Kanji: we cannot tell if this is Japanese, Chinese or Korean, but we are 2065dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov // in Locale.JAPAN, so assume Japanese 2075dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov assertFullNameStyle(FullNameStyle.JAPANESE, "\u5B89\u5BA4\u5948\u7F8E\u6075"); 208635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 209635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // TODO: mix 210635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 211635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Accompanied by a phonetic name in Hiragana, we can safely assume that the 212635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // name is Japanese 213635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.JAPANESE, "\u5B89\u5BA4\u5948\u7F8E\u6075", 214635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "\u3042\u3080\u308D", null, "\u306A\u307F\u3048"); 215635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 2164cd13c4266d8e476e1a49c4b6bcd5b18c33d0de3Bai Tao // Starts with a latin letter - not Western 2174cd13c4266d8e476e1a49c4b6bcd5b18c33d0de3Bai Tao assertFullNameStyle(FullNameStyle.JAPANESE, "A\u3080\u308D\u306A\u307F\u3048"); 218635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 219635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 220635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGuessFullNameStyleChinese() { 2215dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov createNameSplitter(Locale.CHINA); 222635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 2235dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov // Hanzi: we cannot tell if this is Chinese, Japanese or Korean, 2245dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov // but we are in Locale.CHINA, so assume this is Chinese 2255dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov assertFullNameStyle(FullNameStyle.CHINESE, "\u675C\u9D51"); 226635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 227635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Accompanied by a phonetic name in Pinyin, we can safely assume that the 2285dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov // name is Chinese 229635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertFullNameStyle(FullNameStyle.CHINESE, "\u675C\u9D51", 230635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "du4", null, "juan1"); 231635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 232635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Non-letters don't make a difference. This one starts with a vertical line 2335dd6d5d4acb93adc05f1fde904080787f2397f51Dmitri Plotnikov assertFullNameStyle(FullNameStyle.CHINESE, "\uFF5C--(\u675C\u9D51)"); 234635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 235635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 236635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 237635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testGuessPhoneticNameStyle() { 238635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 239635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Hiragana 240635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertPhoneticNameStyle(PhoneticNameStyle.JAPANESE, "\u3042\u3080\u308D", null, null); 241635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertPhoneticNameStyle(PhoneticNameStyle.JAPANESE, null, "\u3042\u3080\u308D", null); 242635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertPhoneticNameStyle(PhoneticNameStyle.JAPANESE, null, null, "\u306A\u307F\u3048"); 243635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertPhoneticNameStyle(PhoneticNameStyle.JAPANESE, "\u3042\u3080\u308D", null, 244635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "\u306A\u307F\u3048"); 245635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 246635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Katakana 247635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertPhoneticNameStyle(PhoneticNameStyle.JAPANESE, "\u30A2\u30E0\u30ED", null, 248635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "\u30CA\u30DF\u30A8"); 249635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 250635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Half-width Katakana 251635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertPhoneticNameStyle(PhoneticNameStyle.JAPANESE, "\u30A2\u30E0\u30ED", null, 252635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "\u30CA\u30DF\u30A8"); 253635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 254635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Chinese 255635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertPhoneticNameStyle(PhoneticNameStyle.PINYIN, "du4", null, "juan1"); 2564097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 2574097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 258635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testSplitJapaneseName() { 259635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov createNameSplitter(Locale.JAPAN); 260635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 261635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // One word is interpreted as given name only 262635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("\u3042\u3080\u308D", null, "\u3042\u3080\u308D", null, null, null); 263635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 264635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Two words are interpreted as family + give name 265635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("\u3042\u3080\u308D \u306A\u307F\u3048", null, "\u306A\u307F\u3048", null, 266635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "\u3042\u3080\u308D", null); 267635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 268635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Multiple words are interpreted as "family - given names" 269635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("\u3042\u3080\u308D \u3068\u304A\u308B \u306A\u307F\u3048", null, 270635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "\u3068\u304A\u308B \u306A\u307F\u3048", null, "\u3042\u3080\u308D", null); 271635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 272635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Hanzi characters without spaces: lump them all in the given name 273635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("\u6BB5\u5C0F\u6D9B", null, "\u6BB5\u5C0F\u6D9B", null, null, null); 274635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 275635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 276635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testSplitChineseName() { 277635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov createNameSplitter(Locale.CHINA); 278635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 279635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Two Hanzi characters: familyName+givenName 280635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("\u6BB5\u5C0F", null, "\u5C0F", null, "\u6BB5", null); 281635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 282635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Two Hanzi characters: familyName+middleName+givenName 283635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("\u6BB5\u5C0F\u6D9B", null, "\u6D9B", "\u5C0F", "\u6BB5", null); 284635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 285635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Two Hanzi characters: familyName(2)+middleName+givenName 286635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertSplitName("\u6BB5\u5C0F\u6D9B\u6D9C", null, "\u6D9C", "\u6D9B", "\u6BB5\u5C0F", null); 287635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 288635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 289635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testJoinJapaneseName() { 290635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov createNameSplitter(Locale.JAPAN); 291635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 292635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("\u3042\u3080\u308D", FullNameStyle.JAPANESE, null, "\u3042\u3080\u308D", 293635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov null, null, null, true); 294635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 295635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Given-name-first flag is ignored for CJK locales 296635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("\u3084\u307E\u3056\u304D \u3068\u304A\u308B", FullNameStyle.JAPANESE, 297635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov null, "\u3068\u304A\u308B", null, "\u3084\u307E\u3056\u304D", null, false); 298635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("\u3084\u307E\u3056\u304D \u3068\u304A\u308B \u3068\u304A\u308B", 299635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov FullNameStyle.JAPANESE, null, "\u3068\u304A\u308B", "\u3068\u304A\u308B", 300635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "\u3084\u307E\u3056\u304D", null, false); 301635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 302635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 303635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov public void testJoinChineseName() { 304635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov createNameSplitter(Locale.CHINA); 305635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 306635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov // Given-name-first flag is ignored for CJK locales 307635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("\u6BB5\u5C0F\u6D9B", FullNameStyle.CHINESE, null, 308635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "\u6D9B", "\u5C0F", "\u6BB5", null, true); 309635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName("\u6BB5\u5C0F\u6D9B", FullNameStyle.CHINESE, null, 310635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov "\u6D9B", "\u5C0F", "\u6BB5", null, false); 311622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey } 3124097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 3134097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov private void assertSplitName(String fullName, String prefix, String givenNames, 314635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov String middleName, String familyName, String suffix) { 315622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey final Name name = new Name(); 316622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey mNameSplitter.split(name, fullName); 317622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(prefix, name.getPrefix()); 318622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(givenNames, name.getGivenNames()); 319622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(middleName, name.getMiddleName()); 320635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertEquals(familyName, name.getFamilyName()); 321622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(suffix, name.getSuffix()); 322622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey } 323622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey 324635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov private void assertJoinedName(String expected, String prefix, String givenNames, 325635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov String middleName, String familyName, String suffix) { 326635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertJoinedName(expected, FullNameStyle.WESTERN, prefix, givenNames, middleName, 327635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov familyName, suffix, true); 328635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 329635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 330635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov private void assertJoinedName(String expected, int nameStyle, String prefix, String givenNames, 331635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov String middleName, String familyName, String suffix, boolean givenNameFirst) { 332635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov Name name = new Name(); 333635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.fullNameStyle = nameStyle; 334635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.prefix = prefix; 335635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.givenNames = givenNames; 336635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.middleName = middleName; 337635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.familyName = familyName; 338635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.suffix = suffix; 33955e5cbf566edd89fc55f4a7f0ef2847084da9b16Dmitri Plotnikov String actual = mNameSplitter.join(name, givenNameFirst, true); 340635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertEquals(expected, actual); 341635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 342635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 343635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov private void assertFullNameStyle(int expectedFullNameStyle, String fullName) { 344635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov Name name = new Name(); 345635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov mNameSplitter.split(name, fullName); 346635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov mNameSplitter.guessNameStyle(name); 347635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 348635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertEquals(expectedFullNameStyle, name.fullNameStyle); 349635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 350635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 351635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov private void assertFullNameStyle(int expectedFullNameStyle, String fullName, 352635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov String phoneticFamilyName, String phoneticMiddleName, String phoneticGivenName) { 353635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov Name name = new Name(); 354635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov mNameSplitter.split(name, fullName); 355635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.phoneticFamilyName = phoneticFamilyName; 356635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.phoneticMiddleName = phoneticMiddleName; 357635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.phoneticGivenName = phoneticGivenName; 358635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 359635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov mNameSplitter.guessNameStyle(name); 360635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 361635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertEquals(expectedFullNameStyle, name.fullNameStyle); 362635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov } 363635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 364635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov private void assertPhoneticNameStyle(int expectedPhoneticNameStyle, String phoneticFamilyName, 365635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov String phoneticMiddleName, String phoneticGivenName) { 366635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov Name name = new Name(); 367635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.phoneticFamilyName = phoneticFamilyName; 368635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.phoneticMiddleName = phoneticMiddleName; 369635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov name.phoneticGivenName = phoneticGivenName; 370635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 371635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov mNameSplitter.guessNameStyle(name); 372635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov 373635a11c53a532d9b5aba5fd7c51a8d47dcb0aaf2Dmitri Plotnikov assertEquals(expectedPhoneticNameStyle, name.phoneticNameStyle); 3744097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 37556f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee 37656f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee public void testSplitKoreanName() { 37756f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee createNameSplitter(Locale.KOREA); 37856f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee 37956f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee // Lee - Sang Il 38056f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee assertSplitName("\uC774\uC0C1\uC77C", null, "\uC0C1\uC77C", null, "\uC774", null); 38156f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee // Dok Go - Young Jae 38256f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee assertSplitName("\uB3C5\uACE0\uC601\uC7AC", 38356f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee null, "\uC601\uC7AC", null, "\uB3C5\uACE0", null); 38456f2638b49e6bca97f6aa7b0768a8f1fe6e7b72eSang-il, Lee } 3854097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov} 386