NameSplitterTest.java revision 622e0a2f00b3de248926ec9e89b11a6425919819
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 194097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikovimport junit.framework.TestCase; 204097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 2128f8857b1b46bde18b85c6d3c2a63ac44c3c2e1cEvan Millarimport com.android.providers.contacts.NameSplitter.Name; 224097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 23622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkeyimport android.content.ContentValues; 244097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikovimport android.test.suitebuilder.annotation.SmallTest; 254097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 26622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkeyimport java.util.Locale; 27622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey 284097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov/** 294097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov * Tests for {@link NameSplitter}. 304097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov */ 314097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov@SmallTest 324097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikovpublic class NameSplitterTest extends TestCase { 334097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov private NameSplitter mNameSplitter; 344097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 354097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov @Override 364097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov protected void setUp() throws Exception { 374097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov super.setUp(); 384097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 394097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov mNameSplitter = new NameSplitter("Mr, Ms, Mrs", "d', st, st., von", "Jr, M.D., MD, D.D.S.", 40622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey "&, AND", Locale.getDefault()); 414097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 424097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 434097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testNull() { 444097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName(null, null, null, null, null, null); 45622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName(null, null, null, null, null, null); 464097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 474097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 484097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testEmpty() { 494097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("", null, null, null, null, null); 50622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName(null, null, null, null, null, null); 514097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 524097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 534097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testSpaces() { 544097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName(" ", null, null, null, null, null); 55622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName(null, null, null, null, null, null); 564097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 574097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 584097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testLastName() { 594097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("Smith", null, null, null, "Smith", null); 60622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("Smith", null, null, null, "Smith", null); 614097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 624097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 63c19e02a37399c55b852d6570f73553e859b0139aDmitri Plotnikov public void testIgnoreSuffix() { 64c19e02a37399c55b852d6570f73553e859b0139aDmitri Plotnikov assertSplitName("Ms MD", "Ms", null, null, "MD", null); 65622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("MD", "Ms", null, null, "MD", null); 66c19e02a37399c55b852d6570f73553e859b0139aDmitri Plotnikov } 67c19e02a37399c55b852d6570f73553e859b0139aDmitri Plotnikov 684097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testFirstLastName() { 694097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Smith", null, "John", null, "Smith", null); 70622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", null, "John", null, "Smith", null); 714097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 724097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 734097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testFirstMiddleLastName() { 744097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Edward Smith", null, "John", "Edward", "Smith", null); 75622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", null, "John", "Edward", "Smith", null); 764097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 774097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 784097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testThreeNamesAndLastName() { 794097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Edward Kevin Smith", null, "John Edward", "Kevin", "Smith", null); 80622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Edward Smith", null, "John Edward", "Kevin", "Smith", null); 814097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 824097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 834097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testPrefixFirstLastName() { 844097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("Mr. John Smith", "Mr", "John", null, "Smith", null); 85622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", "Mr", "John", null, "Smith", null); 864097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("Mr.John Smith", "Mr", "John", null, "Smith", null); 87622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", "Mr", "John", null, "Smith", null); 884097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 894097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 904097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testFirstLastNameSuffix() { 914097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Smith Jr.", null, "John", null, "Smith", "Jr"); 92622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", null, "John", null, "Smith", "Jr"); 934097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 944097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 954097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testFirstLastNameSuffixWithDot() { 964097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Smith M.D.", null, "John", null, "Smith", "M.D."); 97622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", null, "John", null, "Smith", "M.D."); 984097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Smith D D S", null, "John", null, "Smith", "D D S"); 99622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", null, "John", null, "Smith", "D D S"); 1004097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1014097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1024097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testFirstSuffixLastName() { 1034097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John von Smith", null, "John", null, "von Smith", null); 104622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John von Smith", null, "John", null, "von Smith", null); 1054097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1064097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1074097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testFirstSuffixLastNameWithDot() { 1084097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John St.Smith", null, "John", null, "St. Smith", null); 109622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John St. Smith", null, "John", null, "St. Smith", null); 1104097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1114097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1124097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testPrefixFirstMiddleLast() { 1134097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("Mr. John Kevin Smith", "Mr", "John", "Kevin", "Smith", null); 114622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", "Mr", "John", "Kevin", "Smith", null); 1154097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("Mr.John Kevin Smith", "Mr", "John", "Kevin", "Smith", null); 116622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", "Mr", "John", "Kevin", "Smith", null); 1174097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1184097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1194097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testPrefixFirstMiddleLastSuffix() { 1204097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("Mr. John Kevin Smith Jr.", "Mr", "John", "Kevin", "Smith", "Jr"); 121622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", "Mr", "John", "Kevin", "Smith", "Jr"); 1224097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1234097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1244097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testPrefixFirstMiddlePrefixLastSuffixWrongCapitalization() { 1254097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("MR. john keVin VON SmiTh JR.", "MR", "john", "keVin", "VON SmiTh", "JR"); 126622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("john VON SmiTh", "MR", "john", "keVin", "VON SmiTh", "JR"); 1274097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1284097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1294097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testPrefixLastSuffix() { 1304097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("von Smith Jr.", null, null, null, "von Smith", "Jr"); 131622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("von Smith", null, null, null, "von Smith", "Jr"); 1324097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1334097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1344097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testTwoNamesAndLastNameWithAmpersand() { 1354097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John & Edward Smith", null, "John & Edward", null, "Smith", null); 136622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John & Edward Smith", null, "John & Edward", null, "Smith", null); 1374097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John and Edward Smith", null, "John and Edward", null, "Smith", null); 138622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John and Edward Smith", null, "John and Edward", null, "Smith", null); 1394097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1404097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1414097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testWithMiddleInitialAndNoDot() { 1424097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John E. Smith", null, "John", "E", "Smith", null); 143622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Smith", null, "John", "E", "Smith", null); 1444097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1454097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1464097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov public void testWithLongFirstNameAndDot() { 1474097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertSplitName("John Ed. K. Smith", null, "John Ed.", "K", "Smith", null); 148622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertJoinedName("John Ed. Smith", null, "John Ed.", "K", "Smith", null); 149622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey } 1504097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 1514097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov private void assertSplitName(String fullName, String prefix, String givenNames, 1524097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov String middleName, String lastName, String suffix) { 153622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey final Name name = new Name(); 154622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey mNameSplitter.split(name, fullName); 155622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(prefix, name.getPrefix()); 156622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(givenNames, name.getGivenNames()); 157622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(middleName, name.getMiddleName()); 158622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(lastName, name.getFamilyName()); 159622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(suffix, name.getSuffix()); 160622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey } 161622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey 162622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey private void assertJoinedName(String fullName, String prefix, String givenNames, String middleName, 163622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey String lastName, String suffix) { 164622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey final Name name = new Name(prefix, givenNames, middleName, lastName, suffix); 165622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey final String joined = mNameSplitter.join(name); 166622e0a2f00b3de248926ec9e89b11a6425919819Jeff Sharkey assertEquals(fullName, joined); 1674097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 1684097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov} 169