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