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