VCardExporterTests.java revision 237dd947f2e22d34f490bf35ef4b850d05cfffa9
1bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* 2bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Copyright (C) 2009 The Android Open Source Project 3bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * 4bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Licensed under the Apache License, Version 2.0 (the "License"); 5bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * you may not use this file except in compliance with the License. 6bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * You may obtain a copy of the License at 7bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * 8bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * http://www.apache.org/licenses/LICENSE-2.0 9bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * 10bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Unless required by applicable law or agreed to in writing, software 11bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * distributed under the License is distributed on an "AS IS" BASIS, 12bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * See the License for the specific language governing permissions and 14bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * limitations under the License. 15bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */ 16bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 17bd8388b4555645b3d29abc6a94c303638064d69awonjong.leepackage com.android.vcard.tests; 18bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 19bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.content.ContentValues; 20bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Email; 21bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Event; 22bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Im; 23bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Nickname; 24bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Note; 25bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Organization; 26bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Phone; 27bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Photo; 28bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Relation; 29bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.StructuredName; 30bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal; 31bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport android.provider.ContactsContract.CommonDataKinds.Website; 32bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 33bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport com.android.vcard.VCardConfig; 34bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport com.android.vcard.tests.test_utils.ContactEntry; 35bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport com.android.vcard.tests.test_utils.PropertyNodesVerifierElem; 36bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport com.android.vcard.tests.test_utils.PropertyNodesVerifierElem.TypeSet; 37bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport com.android.vcard.tests.test_utils.VCardTestsBase; 38bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 39bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeimport java.util.Arrays; 40bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 41bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/** 42bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Tests for the code related to vCard exporter, inculding vCard composer. 43bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * This test class depends on vCard importer code, so if tests for vCard importer fail, 44bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * the result of this class will not be reliable. 45bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */ 46bd8388b4555645b3d29abc6a94c303638064d69awonjong.leepublic class VCardExporterTests extends VCardTestsBase { 47bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private static final byte[] sPhotoByteArray = 48bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee VCardImporterTests.sPhotoByteArrayForComplicatedCase; 49bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 50bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testSimpleV21() { 51bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(V21); 52bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(StructuredName.CONTENT_ITEM_TYPE) 53bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "Ando") 54bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, "Roid"); 55bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElem() 56bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("FN", "Roid Ando") 57bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("N", "Ando;Roid;;;", 58bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("Ando", "Roid", "", "", "")); 59bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 60bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 61bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testStructuredNameBasic(int vcardType) { 62bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee final boolean isV21 = VCardConfig.isVersion21(vcardType); 63bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 64bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(StructuredName.CONTENT_ITEM_TYPE) 65bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "AppropriateFamilyName") 66bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, "AppropriateGivenName") 67bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.MIDDLE_NAME, "AppropriateMiddleName") 68bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PREFIX, "AppropriatePrefix") 69bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.SUFFIX, "AppropriateSuffix") 70bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_FAMILY_NAME, "AppropriatePhoneticFamily") 71bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_GIVEN_NAME, "AppropriatePhoneticGiven") 72bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_MIDDLE_NAME, "AppropriatePhoneticMiddle"); 73bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 74bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElem() 75bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("N", 76bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriateFamilyName;AppropriateGivenName;AppropriateMiddleName;" 77bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + "AppropriatePrefix;AppropriateSuffix", 78bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("AppropriateFamilyName", "AppropriateGivenName", 79bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriateMiddleName", "AppropriatePrefix", "AppropriateSuffix")) 80bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("FN", 81bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriatePrefix AppropriateGivenName " 82bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + "AppropriateMiddleName AppropriateFamilyName AppropriateSuffix") 83bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-PHONETIC-FIRST-NAME", "AppropriatePhoneticGiven") 84bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-PHONETIC-MIDDLE-NAME", "AppropriatePhoneticMiddle") 85bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-PHONETIC-LAST-NAME", "AppropriatePhoneticFamily"); 86bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 87bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee if (!isV21) { 88bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee elem.addExpectedNode("SORT-STRING", 89bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriatePhoneticGiven AppropriatePhoneticMiddle " 90bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + "AppropriatePhoneticFamily"); 91bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 92bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 93bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 94bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testStructuredNameBasicV21() { 95bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testStructuredNameBasic(V21); 96bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 97bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 98bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testStructuredNameBasicV30() { 99bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testStructuredNameBasic(V30); 100bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 101bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 102bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /** 103bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Test that only "primary" StructuredName is emitted, so that our vCard file 104bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * will not confuse the external importer, assuming there may be some importer 105bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * which presume that there's only one property toward each of "N", "FN", etc. 106bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Note that more than one "N", "FN", etc. properties are acceptable in vCard spec. 107bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */ 108bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testStructuredNameUsePrimaryCommon(int vcardType) { 109bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee final boolean isV30 = (vcardType == V30); 110bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 111bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 112bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 113bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "DoNotEmitFamilyName1") 114bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, "DoNotEmitGivenName1") 115bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.MIDDLE_NAME, "DoNotEmitMiddleName1") 116bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PREFIX, "DoNotEmitPrefix1") 117bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.SUFFIX, "DoNotEmitSuffix1") 118bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_FAMILY_NAME, "DoNotEmitPhoneticFamily1") 119bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_GIVEN_NAME, "DoNotEmitPhoneticGiven1") 120bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_MIDDLE_NAME, "DoNotEmitPhoneticMiddle1"); 121bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 122bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // With "IS_PRIMARY=1". This is what we should use. 123bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 124bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "AppropriateFamilyName") 125bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, "AppropriateGivenName") 126bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.MIDDLE_NAME, "AppropriateMiddleName") 127bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PREFIX, "AppropriatePrefix") 128bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.SUFFIX, "AppropriateSuffix") 129bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_FAMILY_NAME, "AppropriatePhoneticFamily") 130bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_GIVEN_NAME, "AppropriatePhoneticGiven") 131bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_MIDDLE_NAME, "AppropriatePhoneticMiddle") 132bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.IS_PRIMARY, 1); 133bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 134bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // With "IS_PRIMARY=1", but we should ignore this time, since this is second, not first. 135bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 136bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "DoNotEmitFamilyName2") 137bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, "DoNotEmitGivenName2") 138bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.MIDDLE_NAME, "DoNotEmitMiddleName2") 139bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PREFIX, "DoNotEmitPrefix2") 140bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.SUFFIX, "DoNotEmitSuffix2") 141bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_FAMILY_NAME, "DoNotEmitPhoneticFamily2") 142bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_GIVEN_NAME, "DoNotEmitPhoneticGiven2") 143bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_MIDDLE_NAME, "DoNotEmitPhoneticMiddle2") 144bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.IS_PRIMARY, 1); 145bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 146bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElem() 147bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("N", 148bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriateFamilyName;AppropriateGivenName;AppropriateMiddleName;" 149bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + "AppropriatePrefix;AppropriateSuffix", 150bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("AppropriateFamilyName", "AppropriateGivenName", 151bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriateMiddleName", "AppropriatePrefix", "AppropriateSuffix")) 152bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("FN", 153bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriatePrefix AppropriateGivenName " 154bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + "AppropriateMiddleName AppropriateFamilyName AppropriateSuffix") 155bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-PHONETIC-FIRST-NAME", "AppropriatePhoneticGiven") 156bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-PHONETIC-MIDDLE-NAME", "AppropriatePhoneticMiddle") 157bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-PHONETIC-LAST-NAME", "AppropriatePhoneticFamily"); 158bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 159bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee if (isV30) { 160bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee elem.addExpectedNode("SORT-STRING", 161bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriatePhoneticGiven AppropriatePhoneticMiddle " 162bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + "AppropriatePhoneticFamily"); 163bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 164bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 165bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 166bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testStructuredNameUsePrimaryV21() { 167bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testStructuredNameUsePrimaryCommon(V21); 168bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 169bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 170bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testStructuredNameUsePrimaryV30() { 171bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testStructuredNameUsePrimaryCommon(V30); 172bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 173bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 174bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /** 175bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Tests that only "super primary" StructuredName is emitted. 176bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * See also the comment in {@link #testStructuredNameUsePrimaryCommon(int)}. 177bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */ 178bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testStructuredNameUseSuperPrimaryCommon(int vcardType) { 179bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee final boolean isV30 = (vcardType == V30); 180bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 181bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 182bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 183bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "DoNotEmitFamilyName1") 184bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, "DoNotEmitGivenName1") 185bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.MIDDLE_NAME, "DoNotEmitMiddleName1") 186bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PREFIX, "DoNotEmitPrefix1") 187bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.SUFFIX, "DoNotEmitSuffix1") 188bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_FAMILY_NAME, "DoNotEmitPhoneticFamily1") 189bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_GIVEN_NAME, "DoNotEmitPhoneticGiven1") 190bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_MIDDLE_NAME, "DoNotEmitPhoneticMiddle1"); 191bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 192bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // With "IS_PRIMARY=1", but we should ignore this time. 193bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 194bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "DoNotEmitFamilyName2") 195bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, "DoNotEmitGivenName2") 196bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.MIDDLE_NAME, "DoNotEmitMiddleName2") 197bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PREFIX, "DoNotEmitPrefix2") 198bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.SUFFIX, "DoNotEmitSuffix2") 199bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_FAMILY_NAME, "DoNotEmitPhoneticFamily2") 200bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_GIVEN_NAME, "DoNotEmitPhoneticGiven2") 201bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_MIDDLE_NAME, "DoNotEmitPhoneticMiddle2") 202bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.IS_PRIMARY, 1); 203bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 204bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // With "IS_SUPER_PRIMARY=1". This is what we should use. 205bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 206bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "AppropriateFamilyName") 207bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, "AppropriateGivenName") 208bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.MIDDLE_NAME, "AppropriateMiddleName") 209bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PREFIX, "AppropriatePrefix") 210bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.SUFFIX, "AppropriateSuffix") 211bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_FAMILY_NAME, "AppropriatePhoneticFamily") 212bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_GIVEN_NAME, "AppropriatePhoneticGiven") 213bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_MIDDLE_NAME, "AppropriatePhoneticMiddle") 214bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.IS_SUPER_PRIMARY, 1); 215bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 216bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 217bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "DoNotEmitFamilyName3") 218bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, "DoNotEmitGivenName3") 219bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.MIDDLE_NAME, "DoNotEmitMiddleName3") 220bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PREFIX, "DoNotEmitPrefix3") 221bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.SUFFIX, "DoNotEmitSuffix3") 222bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_FAMILY_NAME, "DoNotEmitPhoneticFamily3") 223bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_GIVEN_NAME, "DoNotEmitPhoneticGiven3") 224bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PHONETIC_MIDDLE_NAME, "DoNotEmitPhoneticMiddle3") 225bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.IS_PRIMARY, 1); 226bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 227bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElem() 228bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("N", 229bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriateFamilyName;AppropriateGivenName;AppropriateMiddleName;" 230bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + "AppropriatePrefix;AppropriateSuffix", 231bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("AppropriateFamilyName", "AppropriateGivenName", 232bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriateMiddleName", "AppropriatePrefix", "AppropriateSuffix")) 233bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("FN", 234bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriatePrefix AppropriateGivenName " 235bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + "AppropriateMiddleName AppropriateFamilyName AppropriateSuffix") 236bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-PHONETIC-FIRST-NAME", "AppropriatePhoneticGiven") 237bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-PHONETIC-MIDDLE-NAME", "AppropriatePhoneticMiddle") 238bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-PHONETIC-LAST-NAME", "AppropriatePhoneticFamily"); 239bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 240bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee if (isV30) { 241bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee elem.addExpectedNode("SORT-STRING", 242bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "AppropriatePhoneticGiven AppropriatePhoneticMiddle" 243bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + " AppropriatePhoneticFamily"); 244bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 245bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 246bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 247bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testStructuredNameUseSuperPrimaryV21() { 248bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testStructuredNameUseSuperPrimaryCommon(V21); 249bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 250bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 251bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testStructuredNameUseSuperPrimaryV30() { 252bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testStructuredNameUseSuperPrimaryCommon(V30); 253bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 254bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 255bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testNickNameV30() { 256bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(V30); 257bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(Nickname.CONTENT_ITEM_TYPE) 258bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Nickname.NAME, "Nicky"); 259bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 260bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 261bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("NICKNAME", "Nicky"); 262bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 263bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 264bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPhoneBasicCommon(int vcardType) { 265bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 266bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(Phone.CONTENT_ITEM_TYPE) 267bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "1") 268bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_HOME); 269bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 270bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "1", new TypeSet("HOME")); 271bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 272bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 273bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhoneBasicV21() { 274bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPhoneBasicCommon(V21); 275bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 276bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 277bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhoneBasicV30() { 278bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPhoneBasicCommon(V30); 279bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 280bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 281bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhoneRefrainFormatting() { 282bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(V21 | VCardConfig.FLAG_REFRAIN_PHONE_NUMBER_FORMATTING); 283bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(Phone.CONTENT_ITEM_TYPE) 284bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "1234567890(abcdefghijklmnopqrstuvwxyz)") 285bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_HOME); 286bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 287bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "1234567890(abcdefghijklmnopqrstuvwxyz)", 288bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee new TypeSet("HOME")); 289bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 290bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 291bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /** 292bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Tests that vCard composer emits corresponding type param which we expect. 293bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */ 294bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPhoneVariousTypeSupport(int vcardType) { 295bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 296bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 297bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 298bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "10") 299bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_HOME); 300bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 301bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "20") 302bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_WORK); 303bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 304bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "30") 305bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_FAX_HOME); 306bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 307bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "40") 308bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_FAX_WORK); 309bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 310bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "50") 311bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_MOBILE); 312bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 313bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "60") 314bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_PAGER); 315bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 316bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "70") 317bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_OTHER); 318bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 319bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "80") 320bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CAR); 321bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 322bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "90") 323bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_COMPANY_MAIN); 324bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 325bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "100") 326bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_ISDN); 327bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 328bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "110") 329bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_MAIN); 330bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 331bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "120") 332bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_OTHER_FAX); 333bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 334bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "130") 335bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_TELEX); 336bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 337bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "140") 338bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_WORK_MOBILE); 339bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 340bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "150") 341bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_WORK_PAGER); 342bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 343bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "160") 344bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_MMS); 345bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 346bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 347bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "10", new TypeSet("HOME")) 348bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "20", new TypeSet("WORK")) 349bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "30", new TypeSet("HOME", "FAX")) 350bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "40", new TypeSet("WORK", "FAX")) 351bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "50", new TypeSet("CELL")) 352bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "60", new TypeSet("PAGER")) 353bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "70", new TypeSet("VOICE")) 354bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "80", new TypeSet("CAR")) 355bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "90", new TypeSet("WORK", "PREF")) 356bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "100", new TypeSet("ISDN")) 357bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "110", new TypeSet("PREF")) 358bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "120", new TypeSet("FAX")) 359bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "130", new TypeSet("TLX")) 360bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "140", new TypeSet("WORK", "CELL")) 361bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "150", new TypeSet("WORK", "PAGER")) 362bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "160", new TypeSet("MSG")); 363bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 364bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 365bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhoneVariousTypeSupportV21() { 366bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPhoneVariousTypeSupport(V21); 367bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 368bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 369bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhoneVariousTypeSupportV30() { 370bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPhoneVariousTypeSupport(V30); 371bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 372bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 373bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /** 374bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Tests that "PREF"s are emitted appropriately. 375bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */ 376bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPhonePrefHandlingCommon(int vcardType) { 377bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 378bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 379bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 380bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "1") 381bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_HOME); 382bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 383bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "2") 384bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_WORK) 385bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.IS_PRIMARY, 1); 386bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 387bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "3") 388bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_FAX_HOME) 389bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.IS_PRIMARY, 1); 390bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 391bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "4") 392bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_FAX_WORK); 393bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 394bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 395bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "4", new TypeSet("WORK", "FAX")) 396bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "3", new TypeSet("HOME", "FAX", "PREF")) 397bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "2", new TypeSet("WORK", "PREF")) 398bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "1", new TypeSet("HOME")); 399bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 400bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 401bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhonePrefHandlingV21() { 402bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPhonePrefHandlingCommon(V21); 403bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 404bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 405bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhonePrefHandlingV30() { 406bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPhonePrefHandlingCommon(V30); 407bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 408bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 409bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testMiscPhoneTypeHandling(int vcardType) { 410bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 411bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 412bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 413bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "1") 414bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CUSTOM) 415bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.LABEL, "Modem"); 416bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 417bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "2") 418bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CUSTOM) 419bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.LABEL, "MSG"); 420bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 421bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "3") 422bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CUSTOM) 423bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.LABEL, "BBS"); 424bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 425bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "4") 426bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CUSTOM) 427bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.LABEL, "VIDEO"); 428bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 429bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "5") 430bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CUSTOM); 431bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 432bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "6") 433bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CUSTOM) 434bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.LABEL, "_AUTO_CELL"); // The old indicator for the type mobile. 435bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 436bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "7") 437bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CUSTOM) 438bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.LABEL, "\u643A\u5E2F"); // Mobile phone in Japanese Kanji 439bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 440bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "8") 441bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CUSTOM) 442bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.LABEL, "invalid"); 443bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElemWithEmptyName(); 444bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee if (VCardConfig.isVersion30(vcardType)) { 445bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // vCard 3.0 accepts "invalid". Also stop using toUpper() 446bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee elem.addExpectedNode("TEL", "1", new TypeSet("Modem")) 447bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "2", new TypeSet("MSG")) 448bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "3", new TypeSet("BBS")) 449bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "4", new TypeSet("VIDEO")) 450bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "5", new TypeSet("VOICE")) 451bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "6", new TypeSet("CELL")) 452bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "7", new TypeSet("CELL")) 453bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "8", new TypeSet("invalid")); 454bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } else { 455bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee elem.addExpectedNode("TEL", "1", new TypeSet("MODEM")) 456bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "2", new TypeSet("MSG")) 457bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "3", new TypeSet("BBS")) 458bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "4", new TypeSet("VIDEO")) 459bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "5", new TypeSet("VOICE")) 460bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "6", new TypeSet("CELL")) 461bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "7", new TypeSet("CELL")) 462bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "8", new TypeSet("X-invalid")); 463bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 464bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 465bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 466bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhoneTypeHandlingV21() { 467bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testMiscPhoneTypeHandling(V21); 468bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 469bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 470bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhoneTypeHandlingV30() { 471bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testMiscPhoneTypeHandling(V30); 472bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 473bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 474bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testEmailBasicCommon(int vcardType) { 475bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 476bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(Email.CONTENT_ITEM_TYPE) 477bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.DATA, "sample@example.com"); 478bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 479bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("EMAIL", "sample@example.com"); 480bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 481bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 482bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testEmailBasicV21() { 483bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testEmailBasicCommon(V21); 484bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 485bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 486bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testEmailBasicV30() { 487bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testEmailBasicCommon(V30); 488bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 489bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 490bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testEmailVariousTypeSupportCommon(int vcardType) { 491bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 492bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 493bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Email.CONTENT_ITEM_TYPE) 494bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.DATA, "type_home@example.com") 495bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.TYPE, Email.TYPE_HOME); 496bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Email.CONTENT_ITEM_TYPE) 497bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.DATA, "type_work@example.com") 498bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.TYPE, Email.TYPE_WORK); 499bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Email.CONTENT_ITEM_TYPE) 500bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.DATA, "type_mobile@example.com") 501bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.TYPE, Email.TYPE_MOBILE); 502bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Email.CONTENT_ITEM_TYPE) 503bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.DATA, "type_other@example.com") 504bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.TYPE, Email.TYPE_OTHER); 505bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 506bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("EMAIL", "type_home@example.com", new TypeSet("HOME")) 507bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("EMAIL", "type_work@example.com", new TypeSet("WORK")) 508bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("EMAIL", "type_mobile@example.com", new TypeSet("CELL")) 509bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("EMAIL", "type_other@example.com"); 510bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 511bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 512bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testEmailVariousTypeSupportV21() { 513bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testEmailVariousTypeSupportCommon(V21); 514bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 515bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 516bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testEmailVariousTypeSupportV30() { 517bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testEmailVariousTypeSupportCommon(V30); 518bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 519bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 520bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testEmailPrefHandlingCommon(int vcardType) { 521bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 522bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 523bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Email.CONTENT_ITEM_TYPE) 524bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.DATA, "type_home@example.com") 525bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.TYPE, Email.TYPE_HOME) 526bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.IS_PRIMARY, 1); 527bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Email.CONTENT_ITEM_TYPE) 528bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.DATA, "type_notype@example.com") 529bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Email.IS_PRIMARY, 1); 530bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 531bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 532bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("EMAIL", "type_notype@example.com", new TypeSet("PREF")) 533bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("EMAIL", "type_home@example.com", new TypeSet("HOME", "PREF")); 534bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 535bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 536bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testEmailPrefHandlingV21() { 537bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testEmailPrefHandlingCommon(V21); 538bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 539bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 540bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testEmailPrefHandlingV30() { 541bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testEmailPrefHandlingCommon(V30); 542bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 543bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 544bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPostalAddressCommon(int vcardType) { 545bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 546bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 547bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.POBOX, "Pobox") 548bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.NEIGHBORHOOD, "Neighborhood") 549bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.STREET, "Street") 550bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.CITY, "City") 551bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.REGION, "Region") 552bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.POSTCODE, "100") 553bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.COUNTRY, "Country") 554bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.FORMATTED_ADDRESS, "Formatted Address") 555bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK); 556bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // adr-value = 0*6(text-value ";") text-value 557bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // ; PO Box, Extended Address, Street, Locality, Region, Postal Code, 558bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // ; Country Name 559bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // 560bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // The NEIGHBORHOOD field is appended after the CITY field. 561bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 562bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("ADR", 563bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("Pobox", "", "Street", "City Neighborhood", 564bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "Region", "100", "Country"), new TypeSet("WORK")); 565bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 566bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 567bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalAddressV21() { 568bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalAddressCommon(V21); 569bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 570bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 571bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalAddressV30() { 572bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalAddressCommon(V30); 573bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 574bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 575bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPostalAddressNonNeighborhood(int vcardType) { 576bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 577bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 578bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.CITY, "City"); 579bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 580bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("ADR", 581bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("", "", "", "City", "", "", ""), new TypeSet("HOME")); 582bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 583bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 584bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalAddressNonNeighborhoodV21() { 585bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalAddressNonNeighborhood(V21); 586bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 587bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 588bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalAddressNonNeighborhoodV30() { 589bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalAddressNonNeighborhood(V30); 590bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 591bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 592bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPostalAddressNonCity(int vcardType) { 593bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 594bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 595bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.NEIGHBORHOOD, "Neighborhood"); 596bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 597bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("ADR", 598bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("", "", "", "Neighborhood", "", "", ""), new TypeSet("HOME")); 599bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 600bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 601bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalAddressNonCityV21() { 602bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalAddressNonCity(V21); 603bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 604bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 605bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalAddressNonCityV30() { 606bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalAddressNonCity(V30); 607bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 608bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 609bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPostalOnlyWithFormattedAddressCommon(int vcardType) { 610bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 611bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 612bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.REGION, "") // Must be ignored. 613bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.FORMATTED_ADDRESS, 614bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "Formatted address CA 123-334 United Statue"); 615bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 616bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("ADR", ";Formatted address CA 123-334 United Statue;;;;;", 617bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("", "Formatted address CA 123-334 United Statue", 618bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "", "", "", "", ""), new TypeSet("HOME")); 619bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 620bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 621bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalOnlyWithFormattedAddressV21() { 622bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalOnlyWithFormattedAddressCommon(V21); 623bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 624bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 625bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalOnlyWithFormattedAddressV30() { 626bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalOnlyWithFormattedAddressCommon(V30); 627bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 628bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 629bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /** 630bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * Tests that the vCard composer honors formatted data when it is available 631bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * even when it is partial. 632bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */ 633bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPostalWithBothStructuredAndFormattedCommon(int vcardType) { 634bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 635bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 636bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.POBOX, "Pobox") 637bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.COUNTRY, "Country") 638bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredPostal.FORMATTED_ADDRESS, 639bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "Formatted address CA 123-334 United Statue"); // Should be ignored 640bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 641bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("ADR", "Pobox;;;;;;Country", 642bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("Pobox", "", "", "", "", "", "Country"), 643bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee new TypeSet("HOME")); 644bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 645bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 646bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalWithBothStructuredAndFormattedV21() { 647bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalWithBothStructuredAndFormattedCommon(V21); 648bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 649bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 650bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPostalWithBothStructuredAndFormattedV30() { 651bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPostalWithBothStructuredAndFormattedCommon(V30); 652bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 653bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 654bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testOrganizationCommon(int vcardType) { 655bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 656bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 657bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Organization.CONTENT_ITEM_TYPE) 658bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.COMPANY, "CompanyX") 659bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.DEPARTMENT, "DepartmentY") 660bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.TITLE, "TitleZ") 661bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.JOB_DESCRIPTION, "Description Rambda") // Ignored. 662bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.OFFICE_LOCATION, "Mountain View") // Ignored. 663bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.PHONETIC_NAME, "PhoneticName!") // Ignored 664bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.SYMBOL, "(^o^)/~~"); // Ignore him (her). 665bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Organization.CONTENT_ITEM_TYPE) 666bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .putNull(Organization.COMPANY) 667bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.DEPARTMENT, "DepartmentXX") 668bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .putNull(Organization.TITLE); 669bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Organization.CONTENT_ITEM_TYPE) 670bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.COMPANY, "CompanyXYZ") 671bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .putNull(Organization.DEPARTMENT) 672bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Organization.TITLE, "TitleXYZYX"); 673bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // Currently we do not use group but depend on the order. 674bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 675bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("ORG", "CompanyX;DepartmentY", 676bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("CompanyX", "DepartmentY")) 677bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("TITLE", "TitleZ") 678bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("ORG", "DepartmentXX") 679bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("ORG", "CompanyXYZ") 680bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("TITLE", "TitleXYZYX"); 681bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 682bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 683bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testOrganizationV21() { 684bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testOrganizationCommon(V21); 685bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 686bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 687bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testOrganizationV30() { 688bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testOrganizationCommon(V30); 689bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 690bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 691bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testImVariousTypeSupportCommon(int vcardType) { 692bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 693bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 694bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 695bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_AIM) 696bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "aim"); 697bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 698bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_MSN) 699bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "msn"); 700bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 701bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_YAHOO) 702bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "yahoo"); 703bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 704bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_SKYPE) 705bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "skype"); 706bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 707bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_QQ) 708bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "qq"); 709bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 710bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_GOOGLE_TALK) 711bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "google talk"); 712bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 713bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_ICQ) 714bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "icq"); 715bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 716bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_JABBER) 717bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "jabber"); 718bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 719bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_NETMEETING) 720bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "netmeeting"); 721bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 722bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // No determined way to express unknown type... 723bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 724bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-JABBER", "jabber") 725bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-ICQ", "icq") 726bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-GOOGLE-TALK", "google talk") 727bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-QQ", "qq") 728bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-SKYPE-USERNAME", "skype") 729bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-YAHOO", "yahoo") 730bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-MSN", "msn") 731bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-NETMEETING", "netmeeting") 732bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-AIM", "aim"); 733bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 734bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 735bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testImBasiV21() { 736bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testImVariousTypeSupportCommon(V21); 737bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 738bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 739bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testImBasicV30() { 740bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testImVariousTypeSupportCommon(V30); 741bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 742bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 743bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testImPrefHandlingCommon(int vcardType) { 744bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 745bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 746bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 747bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_AIM) 748bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "aim1"); 749bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Im.CONTENT_ITEM_TYPE) 750bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.PROTOCOL, Im.PROTOCOL_AIM) 751bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.DATA, "aim2") 752bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.TYPE, Im.TYPE_HOME) 753bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Im.IS_PRIMARY, 1); 754bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 755bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 756bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-AIM", "aim1") 757bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-AIM", "aim2", new TypeSet("HOME", "PREF")); 758bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 759bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 760bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testImPrefHandlingV21() { 761bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testImPrefHandlingCommon(V21); 762bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 763bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 764bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testImPrefHandlingV30() { 765bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testImPrefHandlingCommon(V30); 766bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 767bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 768bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testWebsiteCommon(int vcardType) { 769bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 770bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 771bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Website.CONTENT_ITEM_TYPE) 772bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Website.URL, "http://website.example.android.com/index.html") 773bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Website.TYPE, Website.TYPE_BLOG); 774bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Website.CONTENT_ITEM_TYPE) 775bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Website.URL, "ftp://ftp.example.android.com/index.html") 776bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Website.TYPE, Website.TYPE_FTP); 777bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 778bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // We drop TYPE information since vCard (especially 3.0) does not allow us to emit it. 779bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 780bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("URL", "ftp://ftp.example.android.com/index.html") 781bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("URL", "http://website.example.android.com/index.html"); 782bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 783bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 784bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testWebsiteV21() { 785bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testWebsiteCommon(V21); 786bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 787bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 788bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testWebsiteV30() { 789bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testWebsiteCommon(V30); 790bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 791bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 792bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private String getAndroidPropValue(final String mimeType, String value, Integer type) { 793bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee return getAndroidPropValue(mimeType, value, type, null); 794bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 795bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 796bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private String getAndroidPropValue(final String mimeType, String value, 797bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Integer type, String label) { 798bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee return (mimeType + ";" + value + ";" 799bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + (type != null ? type : "") + ";" 800bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + (label != null ? label : "") + ";;;;;;;;;;;;"); 801bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 802bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 803bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testEventCommon(int vcardType) { 804bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 805bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 806bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Event.CONTENT_ITEM_TYPE) 807bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.TYPE, Event.TYPE_ANNIVERSARY) 808bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.START_DATE, "1982-06-16"); 809bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Event.CONTENT_ITEM_TYPE) 810bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.TYPE, Event.TYPE_BIRTHDAY) 811bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.START_DATE, "2008-10-22"); 812bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Event.CONTENT_ITEM_TYPE) 813bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.TYPE, Event.TYPE_OTHER) 814bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.START_DATE, "2018-03-12"); 815bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Event.CONTENT_ITEM_TYPE) 816bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.TYPE, Event.TYPE_CUSTOM) 817bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.LABEL, "The last day") 818bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.START_DATE, "When the Tower of Hanoi with 64 rings is completed."); 819bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Event.CONTENT_ITEM_TYPE) 820bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.TYPE, Event.TYPE_BIRTHDAY) 821bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Event.START_DATE, "2009-05-19"); // Should be ignored. 822bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 823bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("BDAY", "2008-10-22") 824bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-ANDROID-CUSTOM", 825bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee getAndroidPropValue( 826bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Event.CONTENT_ITEM_TYPE, "1982-06-16", Event.TYPE_ANNIVERSARY)) 827bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-ANDROID-CUSTOM", 828bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee getAndroidPropValue( 829bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Event.CONTENT_ITEM_TYPE, "2018-03-12", Event.TYPE_OTHER)) 830bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-ANDROID-CUSTOM", 831bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee getAndroidPropValue( 832bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Event.CONTENT_ITEM_TYPE, 833bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee "When the Tower of Hanoi with 64 rings is completed.", 834bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Event.TYPE_CUSTOM, "The last day")); 835bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 836bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 837bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testEventV21() { 838bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testEventCommon(V21); 839bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 840bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 841bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testEventV30() { 842bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testEventCommon(V30); 843bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 844bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 845bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testNoteCommon(int vcardType) { 846bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 847bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 848bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Note.CONTENT_ITEM_TYPE) 849bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Note.NOTE, "note1"); 850bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Note.CONTENT_ITEM_TYPE) 851bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Note.NOTE, "note2") 852bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Note.IS_PRIMARY, 1); // Just ignored. 853bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 854bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("NOTE", "note1") 855bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("NOTE", "note2"); 856bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 857bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 858bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testNoteV21() { 859bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testNoteCommon(V21); 860bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 861bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 862bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testNoteV30() { 863bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testNoteCommon(V30); 864bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 865bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 866bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPhotoCommon(int vcardType) { 867bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee final boolean isV30 = vcardType == V30; 868bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 869bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 870bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 871bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "PhotoTest"); 872bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Photo.CONTENT_ITEM_TYPE) 873bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Photo.PHOTO, sPhotoByteArray); 874bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 875bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContentValues contentValuesForPhoto = new ContentValues(); 876bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee contentValuesForPhoto.put("ENCODING", (isV30 ? "b" : "BASE64")); 877bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElem() 878bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("FN", "PhotoTest") 879bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("N", "PhotoTest;;;;", 880bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Arrays.asList("PhotoTest", "", "", "", "")) 881bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNodeWithOrder("PHOTO", null, null, sPhotoByteArray, 882bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee contentValuesForPhoto, new TypeSet("JPEG"), null); 883bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 884bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 885bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhotoV21() { 886bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPhotoCommon(V21); 887bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 888bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 889bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPhotoV30() { 890bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPhotoCommon(V30); 891bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 892bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 893bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testRelationCommon(int vcardType) { 894bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 895bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(Relation.CONTENT_ITEM_TYPE) 896bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Relation.TYPE, Relation.TYPE_MOTHER) 897bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Relation.NAME, "Ms. Mother"); 898bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addContentValuesVerifierElem().addExpected(Relation.CONTENT_ITEM_TYPE) 899bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Relation.TYPE, Relation.TYPE_MOTHER) 900bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Relation.NAME, "Ms. Mother"); 901bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 902bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 903bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testRelationV21() { 904bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testRelationCommon(V21); 905bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 906bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 907bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testRelationV30() { 908bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testRelationCommon(V30); 909bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 910bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 911bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testV30HandleEscape() { 912bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(V30); 913bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(StructuredName.CONTENT_ITEM_TYPE) 914bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "\\") 915bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.GIVEN_NAME, ";") 916bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.MIDDLE_NAME, ",") 917bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.PREFIX, "\n") 918bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.DISPLAY_NAME, "[<{Unescaped:Asciis}>]"); 919bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee // Verifies the vCard String correctly escapes each character which must be escaped. 920bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addLineVerifierElem() 921bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpected("N:\\\\;\\;;\\,;\\n;") 922bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpected("FN:[<{Unescaped:Asciis}>]"); 923bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElem() 924bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("FN", "[<{Unescaped:Asciis}>]") 925bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("N", Arrays.asList("\\", ";", ",", "\n", "")); 926bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 927bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 928bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee /** 929bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * There's no "NICKNAME" property in vCard 2.1, while there is in vCard 3.0. 930bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * We use Android-specific "X-ANDROID-CUSTOM" property. 931bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * This test verifies the functionality. 932bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */ 933bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testNickNameV21() { 934bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(V21); 935bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addInputEntry().addContentValues(Nickname.CONTENT_ITEM_TYPE) 936bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Nickname.NAME, "Nicky"); 937bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 938bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("X-ANDROID-CUSTOM", 939bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Nickname.CONTENT_ITEM_TYPE + ";Nicky;;;;;;;;;;;;;;"); 940bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addContentValuesVerifierElem().addExpected(Nickname.CONTENT_ITEM_TYPE) 941bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Nickname.NAME, "Nicky"); 942bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 943bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 944bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testTolerateBrokenPhoneNumberEntryV21() { 945bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(V21); 946bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 947bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 948bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_HOME) 949bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "111-222-3333 (Miami)\n444-5555-666 (Tokyo);" 950bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee + "777-888-9999 (Chicago);111-222-3333 (Miami)"); 951bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 952bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "111-222-3333", new TypeSet("HOME")) 953bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "444-555-5666", new TypeSet("HOME")) 954bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "777-888-9999", new TypeSet("HOME")); 955bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 956bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 957bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee private void testPickUpNonEmptyContentValuesCommon(int vcardType) { 958bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(vcardType); 959bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee ContactEntry entry = mVerifier.addInputEntry(); 960bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 961bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.IS_PRIMARY, 1); // Empty name. Should be ignored. 962bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 963bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "family1"); // Not primary. Should be ignored. 964bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 965bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.IS_PRIMARY, 1) 966bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "family2"); // This entry is what we want. 967bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 968bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.IS_PRIMARY, 1) 969bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "family3"); 970bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 971bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(StructuredName.FAMILY_NAME, "family4"); 972bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElem() 973bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("N", Arrays.asList("family2", "", "", "", "")) 974bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("FN", "family2"); 975bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 976bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 977bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPickUpNonEmptyContentValuesV21() { 978bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPickUpNonEmptyContentValuesCommon(V21); 979bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 980bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 981bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testPickUpNonEmptyContentValuesV30() { 982bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee testPickUpNonEmptyContentValuesCommon(V30); 983bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 984bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 985bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee public void testUseMultiByteTypeV30() { 986bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.initForExportTest(V30); 987bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee final ContactEntry entry = mVerifier.addInputEntry(); 988bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 989bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.TYPE, Phone.TYPE_CUSTOM) 990bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.LABEL, "\u96FB\u8A71") 991bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .put(Phone.NUMBER, "1"); 992bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addLineVerifierElem() 993bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpected("N:") 994bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpected("FN:") 995bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpected("TEL;TYPE=\u96FB\u8A71:1"); 996bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee mVerifier.addPropertyNodesVerifierElemWithEmptyName() 997bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee .addExpectedNode("TEL", "1", new TypeSet("\u96FB\u8A71")); 998bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } 999bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} 1000bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee