14199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa/*
24199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Copyright (C) 2009 The Android Open Source Project
34199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *
44199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License");
54199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * you may not use this file except in compliance with the License.
64199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * You may obtain a copy of the License at
74199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *
84199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *      http://www.apache.org/licenses/LICENSE-2.0
94199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa *
104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * Unless required by applicable law or agreed to in writing, software
114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS,
124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * See the License for the specific language governing permissions and
144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa * limitations under the License.
154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa */
164199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawapackage com.android.vcard.tests;
174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport android.content.ContentValues;
194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.Nickname;
204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.Note;
214199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.Phone;
224199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.StructuredName;
234199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport com.android.vcard.VCardConfig;
26677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawaimport com.android.vcard.tests.testutils.ContactEntry;
27677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawaimport com.android.vcard.tests.testutils.ContentValuesBuilder;
28677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawaimport com.android.vcard.tests.testutils.PropertyNodesVerifierElem;
29677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawaimport com.android.vcard.tests.testutils.VCardTestsBase;
30677ef21613a9d35053ec098444832ce4125a847eDaisuke Miyakawaimport com.android.vcard.tests.testutils.PropertyNodesVerifierElem.TypeSet;
314199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
324199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawaimport java.util.Arrays;
334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawapublic class VCardJapanizationTests extends VCardTestsBase {
354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    private void testNameUtf8Common(int vcardType) {
364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(vcardType);
374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069")
404199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B")
414199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.MIDDLE_NAME, "B")
424199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PREFIX, "Dr.")
434199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.SUFFIX, "Ph.D");
444199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContentValues contentValues =
45be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa            (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndUtf8 : null);
464199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
474199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("FN", "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D",
484199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        contentValues)
494199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("N", "\u3075\u308B\u3069;\u3091\u308A\u304B;B;Dr.;Ph.D",
504199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        Arrays.asList(
514199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                                "\u3075\u308B\u3069", "\u3091\u308A\u304B", "B", "Dr.", "Ph.D"),
524199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                                null, contentValues, null, null);
534199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
544199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
554199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testNameUtf8V21() {
564199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        testNameUtf8Common(VCardConfig.VCARD_TYPE_V21_JAPANESE);
574199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
584199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
594199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testNameUtf8V30() {
604199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        testNameUtf8Common(VCardConfig.VCARD_TYPE_V30_JAPANESE);
614199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
624199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
634199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testNameShiftJis() {
644199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V30_JAPANESE, "Shift_JIS");
654199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
664199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
674199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069")
684199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B")
694199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.MIDDLE_NAME, "B")
704199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PREFIX, "Dr.")
714199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.SUFFIX, "Ph.D");
724199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
734199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
744199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("FN", "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D",
754199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        mContentValuesForSJis)
764199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("N", "\u3075\u308B\u3069;\u3091\u308A\u304B;B;Dr.;Ph.D",
774199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        Arrays.asList(
784199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                                "\u3075\u308B\u3069", "\u3091\u308A\u304B", "B", "Dr.", "Ph.D"),
794199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                                null, mContentValuesForSJis, null, null);
804199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
814199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
824199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    /**
834199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * DoCoMo phones require all name elements should be in "family name" field.
844199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
854199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testNameDoCoMo() {
864199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
874199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
884199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
894199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069")
904199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B")
914199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.MIDDLE_NAME, "B")
924199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PREFIX, "Dr.")
934199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.SUFFIX, "Ph.D");
944199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
954199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        final String fullName = "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D";
964199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
974199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("N", fullName + ";;;;",
984199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        Arrays.asList(fullName, "", "", "", ""),
994199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        null, mContentValuesForSJis, null, null)
1004199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("FN", fullName, mContentValuesForSJis)
1014199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("SOUND", ";;;;", new TypeSet("X-IRMC-N"))
1024199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
1034199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
1044199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("ADR", "", new TypeSet("HOME"))
1054199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
1064199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
1074199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-NO", "")
1084199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "");
1094199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
1104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    private void testPhoneticNameCommon(int vcardType, String charset) {
1124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(vcardType, charset);
1134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
1144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
1154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
1164199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0")
1174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046");
1184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        final ContentValues contentValues =
1204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa            ("SHIFT_JIS".equalsIgnoreCase(charset) ?
121be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa                    (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndSJis :
122be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa                        mContentValuesForSJis) :
123be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa                    (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndUtf8 : null));
1244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElemWithEmptyName();
1254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        elem.addExpectedNode("X-PHONETIC-LAST-NAME", "\u3084\u307E\u3060",
1264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        contentValues)
1274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-PHONETIC-MIDDLE-NAME",
1284199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0",
1294199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        contentValues)
1304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-PHONETIC-FIRST-NAME", "\u305F\u308D\u3046",
1314199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        contentValues);
132be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa        if (!VCardConfig.isVersion21(vcardType)) {
1334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa            elem.addExpectedNode("SORT-STRING",
1344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                    "\u3084\u307E\u3060 \u30DF\u30C9\u30EB\u30CD\u30FC\u30E0 \u305F\u308D\u3046",
1354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                    contentValues);
1364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        }
1374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContentValuesBuilder builder = mVerifier.addContentValuesVerifierElem()
1384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpected(StructuredName.CONTENT_ITEM_TYPE);
1394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
1404199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0")
1414199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046")
1424199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.DISPLAY_NAME,
1434199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\u3084\u307E\u3060 \u30DF\u30C9\u30EB\u30CD\u30FC\u30E0 " +
1444199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\u305F\u308D\u3046");
1454199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
1464199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1474199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPhoneticNameForJapaneseV21Utf8() {
1484199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE, null);
1494199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
1504199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1514199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPhoneticNameForJapaneseV21Sjis() {
1524199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE, "Shift_JIS");
1534199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
1544199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1554199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPhoneticNameForJapaneseV30Utf8() {
1564199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE, null);
1574199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
1584199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1594199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPhoneticNameForJapaneseV30SJis() {
1604199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE, "Shift_JIS");
1614199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
1624199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1634199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPhoneticNameForMobileV21_1() {
1644199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V21_JAPANESE_MOBILE, "Shift_JIS");
1654199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
1664199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
1674199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
1684199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0")
1694199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046");
1704199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1714199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
1724199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("SOUND",
1734199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\uFF94\uFF8F\uFF80\uFF9E \uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91 " +
1744199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\uFF80\uFF9B\uFF73;;;;",
1754199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        mContentValuesForSJis, new TypeSet("X-IRMC-N"));
1764199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContentValuesBuilder builder = mVerifier.addContentValuesVerifierElem()
1774199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpected(StructuredName.CONTENT_ITEM_TYPE);
1784199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\uFF94\uFF8F\uFF80\uFF9E")
1794199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME,
1804199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91")
1814199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\uFF80\uFF9B\uFF73")
1824199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.DISPLAY_NAME,
1834199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\uFF94\uFF8F\uFF80\uFF9E \uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91 " +
1844199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\uFF80\uFF9B\uFF73");
1854199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
1864199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1874199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPhoneticNameForMobileV21_2() {
1884199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V21_JAPANESE_MOBILE, "Shift_JIS");
1894199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
1904199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
1914199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
1924199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046");
1934199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
1944199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
1954199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("SOUND", "\uFF94\uFF8F\uFF80\uFF9E \uFF80\uFF9B\uFF73;;;;",
1964199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                                mContentValuesForSJis, new TypeSet("X-IRMC-N"));
1974199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContentValuesBuilder builder = mVerifier.addContentValuesVerifierElem()
1984199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpected(StructuredName.CONTENT_ITEM_TYPE);
1994199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\uFF94\uFF8F\uFF80\uFF9E")
2004199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\uFF80\uFF9B\uFF73")
2014199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredName.DISPLAY_NAME, "\uFF94\uFF8F\uFF80\uFF9E \uFF80\uFF9B\uFF73");
2024199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
2034199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
2044199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    private void testPostalAddressWithJapaneseCommon(int vcardType, String charset) {
2054199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(vcardType, charset);
2064199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
2074199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2084199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "\u79C1\u66F8\u7BB107")
2094199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751")
2104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.CITY, "\u9E7F\u9AA8\u5E02")
2114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.REGION, "\u00D7\u00D7\u770C")
2124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POSTCODE, "494-1313")
2134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.COUNTRY, "\u65E5\u672C")
2144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.FORMATTED_ADDRESS,
2154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\u3053\u3093\u306A\u3068\u3053\u308D\u3092\u898B"
2164199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        + "\u308B\u306A\u3093\u3066\u6687\u4EBA\u3067\u3059\u304B\uFF1F")
2174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
2184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.LABEL, "\u304A\u3082\u3061\u304B\u3048\u308A");
2194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
2204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContentValues contentValues = ("UTF-8".equalsIgnoreCase(charset) ?
221be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa                (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndSJis :
222be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa                    mContentValuesForSJis) :
223be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa                (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndUtf8 :
224be378d5b188f51cf717e5309e3c39180e85833a8Daisuke Miyakawa                    mContentValuesForUtf8));
2254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
2264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElemWithEmptyName();
2274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        // LABEL must be ignored in vCard 2.1. As for vCard 3.0, the current behavior is
2284199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        // same as that in vCard 3.0, which can be changed in the future.
2294199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        elem.addExpectedNode("ADR", Arrays.asList("\u79C1\u66F8\u7BB107",
2304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                "", "\u96DB\u898B\u6CA2\u6751", "\u9E7F\u9AA8\u5E02", "\u00D7\u00D7\u770C",
2314199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                "494-1313", "\u65E5\u672C"),
2324199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                contentValues);
2334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addContentValuesVerifierElem().addExpected(StructuredPostal.CONTENT_ITEM_TYPE)
2344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "\u79C1\u66F8\u7BB107")
2354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751")
2364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.CITY, "\u9E7F\u9AA8\u5E02")
2374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.REGION, "\u00D7\u00D7\u770C")
2384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POSTCODE, "494-1313")
2394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.COUNTRY, "\u65E5\u672C")
2404199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.FORMATTED_ADDRESS,
2414199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\u65E5\u672C 494-1313 \u00D7\u00D7\u770C \u9E7F\u9AA8\u5E02 " +
2424199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        "\u96DB\u898B\u6CA2\u6751 " + "\u79C1\u66F8\u7BB107")
2434199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME);
2444199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
2454199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPostalAddresswithJapaneseV21() {
2464199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        testPostalAddressWithJapaneseCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE, "Shift_JIS");
2474199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
2484199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
2494199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    /**
2504199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Verifies that only one address field is emitted toward DoCoMo phones.
2514199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Prefered type must (should?) be: HOME > WORK > OTHER > CUSTOM
2524199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
2534199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_1() {
2544199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
2554199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
2564199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2574199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK)
2584199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
2594199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2604199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
2614199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
2624199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2634199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME)
2644199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
2654199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2664199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
2674199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom")
2684199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "4");
2694199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
2704199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
2714199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
2724199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
2734199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
2744199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
2754199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-NO", "")
2764199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
2774199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("ADR",
2784199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME"));
2794199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
2804199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
2814199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_2() {
2824199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
2834199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
2844199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2854199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
2864199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
2874199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2884199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK)
2894199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
2904199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2914199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
2924199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom")
2934199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
2944199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
2954199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
2964199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
2974199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
2984199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
2994199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
3004199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-NO", "")
3014199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
3024199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("ADR",
3034199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        Arrays.asList("2", "", "", "", "", "", ""), new TypeSet("WORK"));
3044199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
3054199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
3064199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_3() {
3074199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
3084199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
3094199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
3114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom1")
3124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
3134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
3154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
3164199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
3184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom2")
3194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
3204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
3214199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
3224199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
3234199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
3244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
3254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
3264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-NO", "")
3274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
3284199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("ADR", Arrays.asList("2", "", "", "", "", "", ""));
3294199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
3304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
3314199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    /**
3324199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     * Verifies the vCard exporter tolerates null TYPE.
3334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa     */
3344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_4() {
3354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
3364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
3374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3384199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
3394199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3404199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
3414199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
3424199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3434199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME)
3444199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
3454199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3464199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK)
3474199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "4");
3484199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3494199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(StructuredPostal.POBOX, "5");
3504199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
3514199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
3524199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
3534199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
3544199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
3554199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
3564199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-NO", "")
3574199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
3584199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("ADR",
3594199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME"));
3604199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
3614199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
3624199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    private void testJapanesePhoneNumberCommon(int vcardType) {
3634199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(vcardType);
3644199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
3654199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(Phone.CONTENT_ITEM_TYPE)
3664199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Phone.NUMBER, "0312341234")
3674199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_HOME);
3684199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(Phone.CONTENT_ITEM_TYPE)
3694199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Phone.NUMBER, "09012341234")
3704199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_MOBILE);
3714199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
3724199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "03-1234-1234", new TypeSet("HOME"))
3734199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "090-1234-1234", new TypeSet("CELL"));
3744199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
3754199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
3764199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testJapanesePhoneNumberV21_1() {
3774199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        testJapanesePhoneNumberCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE);
3784199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
3794199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
3804199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testJapanesePhoneNumberV30() {
3814199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        testJapanesePhoneNumberCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE);
3824199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
3834199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
3844199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testJapanesePhoneNumberDoCoMo() {
3854199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
3864199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
3874199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(Phone.CONTENT_ITEM_TYPE)
3884199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Phone.NUMBER, "0312341234")
3894199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_HOME);
3904199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(Phone.CONTENT_ITEM_TYPE)
3914199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Phone.NUMBER, "09012341234")
3924199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_MOBILE);
3934199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
3944199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
3954199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
3964199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
3974199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-NO", "")
3984199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
3994199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("ADR", "", new TypeSet("HOME"))
4004199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "03-1234-1234", new TypeSet("HOME"))
4014199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "090-1234-1234", new TypeSet("CELL"));
4024199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
4034199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
4044199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testNoteDoCoMo() {
4054199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
4064199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
4074199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(Note.CONTENT_ITEM_TYPE)
4084199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Note.NOTE, "note1");
4094199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(Note.CONTENT_ITEM_TYPE)
4104199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Note.NOTE, "note2");
4114199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        entry.addContentValues(Note.CONTENT_ITEM_TYPE)
4124199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Note.NOTE, "note3");
4134199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
4144199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        // More than one note fields must be aggregated into one note.
4154199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
4164199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
4174199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
4184199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
4194199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
4204199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-NO", "")
4214199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
4224199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("ADR", "", new TypeSet("HOME"))
4234199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("NOTE", "note1\nnote2\nnote3", mContentValuesForQP);
4244199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
4254199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa
4264199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    public void testAndroidCustomV21() {
4274199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V21_GENERIC);
4284199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addInputEntry().addContentValues(Nickname.CONTENT_ITEM_TYPE)
4294199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .put(Nickname.NAME, "\u304D\u3083\u30FC\u30A8\u30C3\u30C1\u30FC");
4304199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
4314199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                .addExpectedNode("X-ANDROID-CUSTOM",
4324199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        Arrays.asList(Nickname.CONTENT_ITEM_TYPE,
4334199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                                "\u304D\u3083\u30FC\u30A8\u30C3\u30C1\u30FC",
4344199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                                "", "", "", "", "", "", "", "", "", "", "", "", "", ""),
4354199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa                        mContentValuesForQPAndUtf8);
4364199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa    }
4374199c54c527330ac01699b176e7bca186a3aa3a4Daisuke Miyakawa}
438