1/* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16package com.android.vcard.tests; 17 18import android.content.ContentValues; 19import android.provider.ContactsContract.CommonDataKinds.Nickname; 20import android.provider.ContactsContract.CommonDataKinds.Note; 21import android.provider.ContactsContract.CommonDataKinds.Phone; 22import android.provider.ContactsContract.CommonDataKinds.StructuredName; 23import android.provider.ContactsContract.CommonDataKinds.StructuredPostal; 24 25import com.android.vcard.VCardConfig; 26import com.android.vcard.tests.testutils.ContactEntry; 27import com.android.vcard.tests.testutils.ContentValuesBuilder; 28import com.android.vcard.tests.testutils.PropertyNodesVerifierElem; 29import com.android.vcard.tests.testutils.VCardTestsBase; 30import com.android.vcard.tests.testutils.PropertyNodesVerifierElem.TypeSet; 31 32import java.util.Arrays; 33 34public class VCardJapanizationTests extends VCardTestsBase { 35 private void testNameUtf8Common(int vcardType) { 36 mVerifier.initForExportTest(vcardType); 37 ContactEntry entry = mVerifier.addInputEntry(); 38 entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 39 .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069") 40 .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B") 41 .put(StructuredName.MIDDLE_NAME, "B") 42 .put(StructuredName.PREFIX, "Dr.") 43 .put(StructuredName.SUFFIX, "Ph.D"); 44 ContentValues contentValues = 45 (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndUtf8 : null); 46 mVerifier.addPropertyNodesVerifierElem() 47 .addExpectedNode("FN", "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D", 48 contentValues) 49 .addExpectedNode("N", "\u3075\u308B\u3069;\u3091\u308A\u304B;B;Dr.;Ph.D", 50 Arrays.asList( 51 "\u3075\u308B\u3069", "\u3091\u308A\u304B", "B", "Dr.", "Ph.D"), 52 null, contentValues, null, null); 53 } 54 55 public void testNameUtf8V21() { 56 testNameUtf8Common(VCardConfig.VCARD_TYPE_V21_JAPANESE); 57 } 58 59 public void testNameUtf8V30() { 60 testNameUtf8Common(VCardConfig.VCARD_TYPE_V30_JAPANESE); 61 } 62 63 public void testNameShiftJis() { 64 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V30_JAPANESE, "Shift_JIS"); 65 ContactEntry entry = mVerifier.addInputEntry(); 66 entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 67 .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069") 68 .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B") 69 .put(StructuredName.MIDDLE_NAME, "B") 70 .put(StructuredName.PREFIX, "Dr.") 71 .put(StructuredName.SUFFIX, "Ph.D"); 72 73 mVerifier.addPropertyNodesVerifierElem() 74 .addExpectedNode("FN", "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D", 75 mContentValuesForSJis) 76 .addExpectedNode("N", "\u3075\u308B\u3069;\u3091\u308A\u304B;B;Dr.;Ph.D", 77 Arrays.asList( 78 "\u3075\u308B\u3069", "\u3091\u308A\u304B", "B", "Dr.", "Ph.D"), 79 null, mContentValuesForSJis, null, null); 80 } 81 82 /** 83 * DoCoMo phones require all name elements should be in "family name" field. 84 */ 85 public void testNameDoCoMo() { 86 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS"); 87 ContactEntry entry = mVerifier.addInputEntry(); 88 entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 89 .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069") 90 .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B") 91 .put(StructuredName.MIDDLE_NAME, "B") 92 .put(StructuredName.PREFIX, "Dr.") 93 .put(StructuredName.SUFFIX, "Ph.D"); 94 95 final String fullName = "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D"; 96 mVerifier.addPropertyNodesVerifierElem() 97 .addExpectedNode("N", fullName + ";;;;", 98 Arrays.asList(fullName, "", "", "", ""), 99 null, mContentValuesForSJis, null, null) 100 .addExpectedNode("FN", fullName, mContentValuesForSJis) 101 .addExpectedNode("SOUND", ";;;;", new TypeSet("X-IRMC-N")) 102 .addExpectedNode("TEL", "", new TypeSet("HOME")) 103 .addExpectedNode("EMAIL", "", new TypeSet("HOME")) 104 .addExpectedNode("ADR", "", new TypeSet("HOME")) 105 .addExpectedNode("X-CLASS", "PUBLIC") 106 .addExpectedNode("X-REDUCTION", "") 107 .addExpectedNode("X-NO", "") 108 .addExpectedNode("X-DCM-HMN-MODE", ""); 109 } 110 111 private void testPhoneticNameCommon(int vcardType, String charset) { 112 mVerifier.initForExportTest(vcardType, charset); 113 ContactEntry entry = mVerifier.addInputEntry(); 114 entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 115 .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060") 116 .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0") 117 .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046"); 118 119 final ContentValues contentValues = 120 ("SHIFT_JIS".equalsIgnoreCase(charset) ? 121 (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndSJis : 122 mContentValuesForSJis) : 123 (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndUtf8 : null)); 124 PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElemWithEmptyName(); 125 elem.addExpectedNode("X-PHONETIC-LAST-NAME", "\u3084\u307E\u3060", 126 contentValues) 127 .addExpectedNode("X-PHONETIC-MIDDLE-NAME", 128 "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0", 129 contentValues) 130 .addExpectedNode("X-PHONETIC-FIRST-NAME", "\u305F\u308D\u3046", 131 contentValues); 132 if (!VCardConfig.isVersion21(vcardType)) { 133 elem.addExpectedNode("SORT-STRING", 134 "\u3084\u307E\u3060 \u30DF\u30C9\u30EB\u30CD\u30FC\u30E0 \u305F\u308D\u3046", 135 contentValues); 136 } 137 ContentValuesBuilder builder = mVerifier.addContentValuesVerifierElem() 138 .addExpected(StructuredName.CONTENT_ITEM_TYPE); 139 builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060") 140 .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0") 141 .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046") 142 .put(StructuredName.DISPLAY_NAME, 143 "\u3084\u307E\u3060 \u30DF\u30C9\u30EB\u30CD\u30FC\u30E0 " + 144 "\u305F\u308D\u3046"); 145 } 146 147 public void testPhoneticNameForJapaneseV21Utf8() { 148 testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE, null); 149 } 150 151 public void testPhoneticNameForJapaneseV21Sjis() { 152 testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE, "Shift_JIS"); 153 } 154 155 public void testPhoneticNameForJapaneseV30Utf8() { 156 testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE, null); 157 } 158 159 public void testPhoneticNameForJapaneseV30SJis() { 160 testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE, "Shift_JIS"); 161 } 162 163 public void testPhoneticNameForMobileV21_1() { 164 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V21_JAPANESE_MOBILE, "Shift_JIS"); 165 ContactEntry entry = mVerifier.addInputEntry(); 166 entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 167 .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060") 168 .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0") 169 .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046"); 170 171 mVerifier.addPropertyNodesVerifierElem() 172 .addExpectedNode("SOUND", 173 "\uFF94\uFF8F\uFF80\uFF9E \uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91 " + 174 "\uFF80\uFF9B\uFF73;;;;", 175 mContentValuesForSJis, new TypeSet("X-IRMC-N")); 176 ContentValuesBuilder builder = mVerifier.addContentValuesVerifierElem() 177 .addExpected(StructuredName.CONTENT_ITEM_TYPE); 178 builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\uFF94\uFF8F\uFF80\uFF9E") 179 .put(StructuredName.PHONETIC_MIDDLE_NAME, 180 "\uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91") 181 .put(StructuredName.PHONETIC_GIVEN_NAME, "\uFF80\uFF9B\uFF73") 182 .put(StructuredName.DISPLAY_NAME, 183 "\uFF94\uFF8F\uFF80\uFF9E \uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91 " + 184 "\uFF80\uFF9B\uFF73"); 185 } 186 187 public void testPhoneticNameForMobileV21_2() { 188 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V21_JAPANESE_MOBILE, "Shift_JIS"); 189 ContactEntry entry = mVerifier.addInputEntry(); 190 entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE) 191 .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060") 192 .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046"); 193 194 mVerifier.addPropertyNodesVerifierElem() 195 .addExpectedNode("SOUND", "\uFF94\uFF8F\uFF80\uFF9E \uFF80\uFF9B\uFF73;;;;", 196 mContentValuesForSJis, new TypeSet("X-IRMC-N")); 197 ContentValuesBuilder builder = mVerifier.addContentValuesVerifierElem() 198 .addExpected(StructuredName.CONTENT_ITEM_TYPE); 199 builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\uFF94\uFF8F\uFF80\uFF9E") 200 .put(StructuredName.PHONETIC_GIVEN_NAME, "\uFF80\uFF9B\uFF73") 201 .put(StructuredName.DISPLAY_NAME, "\uFF94\uFF8F\uFF80\uFF9E \uFF80\uFF9B\uFF73"); 202 } 203 204 private void testPostalAddressWithJapaneseCommon(int vcardType, String charset) { 205 mVerifier.initForExportTest(vcardType, charset); 206 ContactEntry entry = mVerifier.addInputEntry(); 207 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 208 .put(StructuredPostal.POBOX, "\u79C1\u66F8\u7BB107") 209 .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751") 210 .put(StructuredPostal.CITY, "\u9E7F\u9AA8\u5E02") 211 .put(StructuredPostal.REGION, "\u00D7\u00D7\u770C") 212 .put(StructuredPostal.POSTCODE, "494-1313") 213 .put(StructuredPostal.COUNTRY, "\u65E5\u672C") 214 .put(StructuredPostal.FORMATTED_ADDRESS, 215 "\u3053\u3093\u306A\u3068\u3053\u308D\u3092\u898B" 216 + "\u308B\u306A\u3093\u3066\u6687\u4EBA\u3067\u3059\u304B\uFF1F") 217 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM) 218 .put(StructuredPostal.LABEL, "\u304A\u3082\u3061\u304B\u3048\u308A"); 219 220 ContentValues contentValues = ("UTF-8".equalsIgnoreCase(charset) ? 221 (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndSJis : 222 mContentValuesForSJis) : 223 (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndUtf8 : 224 mContentValuesForUtf8)); 225 226 PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElemWithEmptyName(); 227 // LABEL must be ignored in vCard 2.1. As for vCard 3.0, the current behavior is 228 // same as that in vCard 3.0, which can be changed in the future. 229 elem.addExpectedNode("ADR", Arrays.asList("\u79C1\u66F8\u7BB107", 230 "", "\u96DB\u898B\u6CA2\u6751", "\u9E7F\u9AA8\u5E02", "\u00D7\u00D7\u770C", 231 "494-1313", "\u65E5\u672C"), 232 contentValues); 233 mVerifier.addContentValuesVerifierElem().addExpected(StructuredPostal.CONTENT_ITEM_TYPE) 234 .put(StructuredPostal.POBOX, "\u79C1\u66F8\u7BB107") 235 .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751") 236 .put(StructuredPostal.CITY, "\u9E7F\u9AA8\u5E02") 237 .put(StructuredPostal.REGION, "\u00D7\u00D7\u770C") 238 .put(StructuredPostal.POSTCODE, "494-1313") 239 .put(StructuredPostal.COUNTRY, "\u65E5\u672C") 240 .put(StructuredPostal.FORMATTED_ADDRESS, 241 "\u65E5\u672C 494-1313 \u00D7\u00D7\u770C \u9E7F\u9AA8\u5E02 " + 242 "\u96DB\u898B\u6CA2\u6751 " + "\u79C1\u66F8\u7BB107") 243 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME); 244 } 245 public void testPostalAddresswithJapaneseV21() { 246 testPostalAddressWithJapaneseCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE, "Shift_JIS"); 247 } 248 249 /** 250 * Verifies that only one address field is emitted toward DoCoMo phones. 251 * Prefered type must (should?) be: HOME > WORK > OTHER > CUSTOM 252 */ 253 public void testPostalAdrressForDoCoMo_1() { 254 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS"); 255 ContactEntry entry = mVerifier.addInputEntry(); 256 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 257 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK) 258 .put(StructuredPostal.POBOX, "1"); 259 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 260 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER) 261 .put(StructuredPostal.POBOX, "2"); 262 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 263 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME) 264 .put(StructuredPostal.POBOX, "3"); 265 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 266 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM) 267 .put(StructuredPostal.LABEL, "custom") 268 .put(StructuredPostal.POBOX, "4"); 269 270 mVerifier.addPropertyNodesVerifierElemWithEmptyName() 271 .addExpectedNode("TEL", "", new TypeSet("HOME")) 272 .addExpectedNode("EMAIL", "", new TypeSet("HOME")) 273 .addExpectedNode("X-CLASS", "PUBLIC") 274 .addExpectedNode("X-REDUCTION", "") 275 .addExpectedNode("X-NO", "") 276 .addExpectedNode("X-DCM-HMN-MODE", "") 277 .addExpectedNode("ADR", 278 Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME")); 279 } 280 281 public void testPostalAdrressForDoCoMo_2() { 282 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS"); 283 ContactEntry entry = mVerifier.addInputEntry(); 284 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 285 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER) 286 .put(StructuredPostal.POBOX, "1"); 287 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 288 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK) 289 .put(StructuredPostal.POBOX, "2"); 290 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 291 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM) 292 .put(StructuredPostal.LABEL, "custom") 293 .put(StructuredPostal.POBOX, "3"); 294 295 mVerifier.addPropertyNodesVerifierElemWithEmptyName() 296 .addExpectedNode("TEL", "", new TypeSet("HOME")) 297 .addExpectedNode("EMAIL", "", new TypeSet("HOME")) 298 .addExpectedNode("X-CLASS", "PUBLIC") 299 .addExpectedNode("X-REDUCTION", "") 300 .addExpectedNode("X-NO", "") 301 .addExpectedNode("X-DCM-HMN-MODE", "") 302 .addExpectedNode("ADR", 303 Arrays.asList("2", "", "", "", "", "", ""), new TypeSet("WORK")); 304 } 305 306 public void testPostalAdrressForDoCoMo_3() { 307 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS"); 308 ContactEntry entry = mVerifier.addInputEntry(); 309 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 310 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM) 311 .put(StructuredPostal.LABEL, "custom1") 312 .put(StructuredPostal.POBOX, "1"); 313 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 314 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER) 315 .put(StructuredPostal.POBOX, "2"); 316 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 317 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM) 318 .put(StructuredPostal.LABEL, "custom2") 319 .put(StructuredPostal.POBOX, "3"); 320 321 mVerifier.addPropertyNodesVerifierElemWithEmptyName() 322 .addExpectedNode("TEL", "", new TypeSet("HOME")) 323 .addExpectedNode("EMAIL", "", new TypeSet("HOME")) 324 .addExpectedNode("X-CLASS", "PUBLIC") 325 .addExpectedNode("X-REDUCTION", "") 326 .addExpectedNode("X-NO", "") 327 .addExpectedNode("X-DCM-HMN-MODE", "") 328 .addExpectedNode("ADR", Arrays.asList("2", "", "", "", "", "", "")); 329 } 330 331 /** 332 * Verifies the vCard exporter tolerates null TYPE. 333 */ 334 public void testPostalAdrressForDoCoMo_4() { 335 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS"); 336 ContactEntry entry = mVerifier.addInputEntry(); 337 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 338 .put(StructuredPostal.POBOX, "1"); 339 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 340 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER) 341 .put(StructuredPostal.POBOX, "2"); 342 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 343 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME) 344 .put(StructuredPostal.POBOX, "3"); 345 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 346 .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK) 347 .put(StructuredPostal.POBOX, "4"); 348 entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE) 349 .put(StructuredPostal.POBOX, "5"); 350 351 mVerifier.addPropertyNodesVerifierElemWithEmptyName() 352 .addExpectedNode("TEL", "", new TypeSet("HOME")) 353 .addExpectedNode("EMAIL", "", new TypeSet("HOME")) 354 .addExpectedNode("X-CLASS", "PUBLIC") 355 .addExpectedNode("X-REDUCTION", "") 356 .addExpectedNode("X-NO", "") 357 .addExpectedNode("X-DCM-HMN-MODE", "") 358 .addExpectedNode("ADR", 359 Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME")); 360 } 361 362 private void testJapanesePhoneNumberCommon(int vcardType) { 363 mVerifier.initForExportTest(vcardType); 364 ContactEntry entry = mVerifier.addInputEntry(); 365 entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 366 .put(Phone.NUMBER, "0312341234") 367 .put(Phone.TYPE, Phone.TYPE_HOME); 368 entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 369 .put(Phone.NUMBER, "09012341234") 370 .put(Phone.TYPE, Phone.TYPE_MOBILE); 371 mVerifier.addPropertyNodesVerifierElemWithEmptyName() 372 .addExpectedNode("TEL", "03-1234-1234", new TypeSet("HOME")) 373 .addExpectedNode("TEL", "090-1234-1234", new TypeSet("CELL")); 374 } 375 376 public void testJapanesePhoneNumberV21_1() { 377 testJapanesePhoneNumberCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE); 378 } 379 380 public void testJapanesePhoneNumberV30() { 381 testJapanesePhoneNumberCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE); 382 } 383 384 public void testJapanesePhoneNumberDoCoMo() { 385 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS"); 386 ContactEntry entry = mVerifier.addInputEntry(); 387 entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 388 .put(Phone.NUMBER, "0312341234") 389 .put(Phone.TYPE, Phone.TYPE_HOME); 390 entry.addContentValues(Phone.CONTENT_ITEM_TYPE) 391 .put(Phone.NUMBER, "09012341234") 392 .put(Phone.TYPE, Phone.TYPE_MOBILE); 393 mVerifier.addPropertyNodesVerifierElemWithEmptyName() 394 .addExpectedNode("EMAIL", "", new TypeSet("HOME")) 395 .addExpectedNode("X-CLASS", "PUBLIC") 396 .addExpectedNode("X-REDUCTION", "") 397 .addExpectedNode("X-NO", "") 398 .addExpectedNode("X-DCM-HMN-MODE", "") 399 .addExpectedNode("ADR", "", new TypeSet("HOME")) 400 .addExpectedNode("TEL", "03-1234-1234", new TypeSet("HOME")) 401 .addExpectedNode("TEL", "090-1234-1234", new TypeSet("CELL")); 402 } 403 404 public void testNoteDoCoMo() { 405 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS"); 406 ContactEntry entry = mVerifier.addInputEntry(); 407 entry.addContentValues(Note.CONTENT_ITEM_TYPE) 408 .put(Note.NOTE, "note1"); 409 entry.addContentValues(Note.CONTENT_ITEM_TYPE) 410 .put(Note.NOTE, "note2"); 411 entry.addContentValues(Note.CONTENT_ITEM_TYPE) 412 .put(Note.NOTE, "note3"); 413 414 // More than one note fields must be aggregated into one note. 415 mVerifier.addPropertyNodesVerifierElemWithEmptyName() 416 .addExpectedNode("TEL", "", new TypeSet("HOME")) 417 .addExpectedNode("EMAIL", "", new TypeSet("HOME")) 418 .addExpectedNode("X-CLASS", "PUBLIC") 419 .addExpectedNode("X-REDUCTION", "") 420 .addExpectedNode("X-NO", "") 421 .addExpectedNode("X-DCM-HMN-MODE", "") 422 .addExpectedNode("ADR", "", new TypeSet("HOME")) 423 .addExpectedNode("NOTE", "note1\nnote2\nnote3", mContentValuesForQP); 424 } 425 426 public void testAndroidCustomV21() { 427 mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V21_GENERIC); 428 mVerifier.addInputEntry().addContentValues(Nickname.CONTENT_ITEM_TYPE) 429 .put(Nickname.NAME, "\u304D\u3083\u30FC\u30A8\u30C3\u30C1\u30FC"); 430 mVerifier.addPropertyNodesVerifierElemWithEmptyName() 431 .addExpectedNode("X-ANDROID-CUSTOM", 432 Arrays.asList(Nickname.CONTENT_ITEM_TYPE, 433 "\u304D\u3083\u30FC\u30A8\u30C3\u30C1\u30FC", 434 "", "", "", "", "", "", "", "", "", "", "", "", "", ""), 435 mContentValuesForQPAndUtf8); 436 } 437} 438