OSDN Git Service

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