14fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa/*
24fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa * Copyright (C) 2009 The Android Open Source Project
34fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa *
44fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License");
54fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa * you may not use this file except in compliance with the License.
64fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa * You may obtain a copy of the License at
74fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa *
84fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa *      http://www.apache.org/licenses/LICENSE-2.0
94fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa *
104fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa * Unless required by applicable law or agreed to in writing, software
114fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS,
124fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa * See the License for the specific language governing permissions and
144fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa * limitations under the License.
154fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa */
161a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.pim.vcard;
174fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
184fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawaimport android.content.ContentValues;
193bd9b8f04cece37ab4405abc382e2810006b9f97Daisuke Miyakawaimport android.pim.vcard.test_utils.ContactEntry;
203bd9b8f04cece37ab4405abc382e2810006b9f97Daisuke Miyakawaimport android.pim.vcard.test_utils.ContentValuesBuilder;
213bd9b8f04cece37ab4405abc382e2810006b9f97Daisuke Miyakawaimport android.pim.vcard.test_utils.PropertyNodesVerifierElem;
2269831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawaimport android.pim.vcard.test_utils.PropertyNodesVerifierElem.TypeSet;
233bd9b8f04cece37ab4405abc382e2810006b9f97Daisuke Miyakawaimport android.pim.vcard.test_utils.VCardTestsBase;
24a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.Nickname;
25839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.Note;
26839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.Phone;
274fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.StructuredName;
285a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
294fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
304fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawaimport java.util.Arrays;
314fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
324fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawapublic class VCardJapanizationTests extends VCardTestsBase {
334fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    private void testNameUtf8Common(int vcardType) {
34673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.initForExportTest(vcardType);
35673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
36673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
374fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069")
384fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B")
394fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.MIDDLE_NAME, "B")
404fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.PREFIX, "Dr.")
414fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.SUFFIX, "Ph.D");
424fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        ContentValues contentValues =
4369831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa            (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndUtf8 : null);
44673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
45673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("FN", "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D",
464fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        contentValues)
47673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("N", "\u3075\u308B\u3069;\u3091\u308A\u304B;B;Dr.;Ph.D",
484fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        Arrays.asList(
494fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                                "\u3075\u308B\u3069", "\u3091\u308A\u304B", "B", "Dr.", "Ph.D"),
504fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                                null, contentValues, null, null);
514fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
524fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
534fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    public void testNameUtf8V21() {
5469831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        testNameUtf8Common(VCardConfig.VCARD_TYPE_V21_JAPANESE);
554fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
564fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
574fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    public void testNameUtf8V30() {
5869831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        testNameUtf8Common(VCardConfig.VCARD_TYPE_V30_JAPANESE);
594fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
604fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
614fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    public void testNameShiftJis() {
6269831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V30_JAPANESE, "Shift_JIS");
63673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
64673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
654fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069")
664fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B")
674fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.MIDDLE_NAME, "B")
684fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.PREFIX, "Dr.")
694fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.SUFFIX, "Ph.D");
704fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
71673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
72673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("FN", "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D",
734fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        mContentValuesForSJis)
74673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("N", "\u3075\u308B\u3069;\u3091\u308A\u304B;B;Dr.;Ph.D",
754fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        Arrays.asList(
764fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                                "\u3075\u308B\u3069", "\u3091\u308A\u304B", "B", "Dr.", "Ph.D"),
774fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                                null, mContentValuesForSJis, null, null);
784fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
794fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
804fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    /**
814fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa     * DoCoMo phones require all name elements should be in "family name" field.
824fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa     */
834fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    public void testNameDoCoMo() {
8469831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
85673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
86673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
874fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069")
884fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B")
894fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.MIDDLE_NAME, "B")
904fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.PREFIX, "Dr.")
914fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.SUFFIX, "Ph.D");
924fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
934fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        final String fullName = "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D";
94673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
95673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("N", fullName + ";;;;",
964fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        Arrays.asList(fullName, "", "", "", ""),
974fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        null, mContentValuesForSJis, null, null)
98673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("FN", fullName, mContentValuesForSJis)
99673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("SOUND", ";;;;", new TypeSet("X-IRMC-N"))
100673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
101673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
102673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("ADR", "", new TypeSet("HOME"))
103673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
104673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
105673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-NO", "")
106673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "");
1074fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
108592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
10969831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa    private void testPhoneticNameCommon(int vcardType, String charset) {
11069831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(vcardType, charset);
111673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
112673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
113592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
114592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0")
115592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046");
116592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
117592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        final ContentValues contentValues =
11869831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa            ("SHIFT_JIS".equalsIgnoreCase(charset) ?
11969831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa                    (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndSJis :
12069831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa                        mContentValuesForSJis) :
12169831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa                    (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndUtf8 : null));
122673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElemWithEmptyName();
123673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        elem.addExpectedNode("X-PHONETIC-LAST-NAME", "\u3084\u307E\u3060",
124592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        contentValues)
125673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-PHONETIC-MIDDLE-NAME",
126592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0",
127592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        contentValues)
128673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-PHONETIC-FIRST-NAME", "\u305F\u308D\u3046",
129592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        contentValues);
13069831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        if (!VCardConfig.isVersion21(vcardType)) {
131673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa            elem.addExpectedNode("SORT-STRING",
132592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                    "\u3084\u307E\u3060 \u30DF\u30C9\u30EB\u30CD\u30FC\u30E0 \u305F\u308D\u3046",
133592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                    contentValues);
134592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        }
135673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContentValuesBuilder builder = mVerifier.addContentValuesVerifierElem()
136592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addExpected(StructuredName.CONTENT_ITEM_TYPE);
137592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
138592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0")
139592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046")
140592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.DISPLAY_NAME,
141592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\u3084\u307E\u3060 \u30DF\u30C9\u30EB\u30CD\u30FC\u30E0 " +
142592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\u305F\u308D\u3046");
143592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
144592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
145592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForJapaneseV21Utf8() {
14669831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE, null);
147592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
148592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
149592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForJapaneseV21Sjis() {
15069831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE, "Shift_JIS");
151592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
152592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
153592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForJapaneseV30Utf8() {
15469831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE, null);
155592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
156592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
157592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForJapaneseV30SJis() {
15869831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE, "Shift_JIS");
159592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
160592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
161592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForMobileV21_1() {
16269831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V21_JAPANESE_MOBILE, "Shift_JIS");
163673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
164673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
165592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
166592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0")
167592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046");
168592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
169673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
170673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("SOUND",
171592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF94\uFF8F\uFF80\uFF9E \uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91 " +
172592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF80\uFF9B\uFF73;;;;",
173592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        mContentValuesForSJis, new TypeSet("X-IRMC-N"));
174673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContentValuesBuilder builder = mVerifier.addContentValuesVerifierElem()
175592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addExpected(StructuredName.CONTENT_ITEM_TYPE);
176592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\uFF94\uFF8F\uFF80\uFF9E")
177592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME,
178592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91")
179592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\uFF80\uFF9B\uFF73")
180592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.DISPLAY_NAME,
181592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF94\uFF8F\uFF80\uFF9E \uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91 " +
182592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF80\uFF9B\uFF73");
183592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
184592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
185592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForMobileV21_2() {
18669831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V21_JAPANESE_MOBILE, "Shift_JIS");
187673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
188673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredName.CONTENT_ITEM_TYPE)
189592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
190592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046");
191592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
192673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElem()
193673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("SOUND", "\uFF94\uFF8F\uFF80\uFF9E \uFF80\uFF9B\uFF73;;;;",
194592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                                mContentValuesForSJis, new TypeSet("X-IRMC-N"));
195673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContentValuesBuilder builder = mVerifier.addContentValuesVerifierElem()
196592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addExpected(StructuredName.CONTENT_ITEM_TYPE);
197592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\uFF94\uFF8F\uFF80\uFF9E")
198592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\uFF80\uFF9B\uFF73")
199592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.DISPLAY_NAME, "\uFF94\uFF8F\uFF80\uFF9E \uFF80\uFF9B\uFF73");
200592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
2015a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
20269831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa    private void testPostalAddressWithJapaneseCommon(int vcardType, String charset) {
20369831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(vcardType, charset);
204673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
205673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
206c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.POBOX, "\u79C1\u66F8\u7BB107")
207c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751")
208c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.CITY, "\u9E7F\u9AA8\u5E02")
209c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.REGION, "\u00D7\u00D7\u770C")
210c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.POSTCODE, "494-1313")
211c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.COUNTRY, "\u65E5\u672C")
212c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.FORMATTED_ADDRESS,
213c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                        "\u3053\u3093\u306A\u3068\u3053\u308D\u3092\u898B"
214c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                        + "\u308B\u306A\u3093\u3066\u6687\u4EBA\u3067\u3059\u304B\uFF1F")
215c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
216c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.LABEL, "\u304A\u3082\u3061\u304B\u3048\u308A");
217c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa
21869831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        ContentValues contentValues = ("UTF-8".equalsIgnoreCase(charset) ?
21969831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa                (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndSJis :
22069831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa                    mContentValuesForSJis) :
22169831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa                (VCardConfig.isVersion21(vcardType) ? mContentValuesForQPAndUtf8 :
22269831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa                    mContentValuesForUtf8));
223c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa
224673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        PropertyNodesVerifierElem elem = mVerifier.addPropertyNodesVerifierElemWithEmptyName();
225c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        // LABEL must be ignored in vCard 2.1. As for vCard 3.0, the current behavior is
226c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        // same as that in vCard 3.0, which can be changed in the future.
227673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        elem.addExpectedNode("ADR", Arrays.asList("\u79C1\u66F8\u7BB107",
228639b0f032bd933286a89812544460680a6a01ae4Daisuke Miyakawa                "", "\u96DB\u898B\u6CA2\u6751", "\u9E7F\u9AA8\u5E02", "\u00D7\u00D7\u770C",
229c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                "494-1313", "\u65E5\u672C"),
230c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                contentValues);
231673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addContentValuesVerifierElem().addExpected(StructuredPostal.CONTENT_ITEM_TYPE)
232a6d81e3ee4cf12ade1ef6701b5f1fcdd390fc98aDaisuke Miyakawa                .put(StructuredPostal.POBOX, "\u79C1\u66F8\u7BB107")
233639b0f032bd933286a89812544460680a6a01ae4Daisuke Miyakawa                .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751")
234639b0f032bd933286a89812544460680a6a01ae4Daisuke Miyakawa                .put(StructuredPostal.CITY, "\u9E7F\u9AA8\u5E02")
235a6d81e3ee4cf12ade1ef6701b5f1fcdd390fc98aDaisuke Miyakawa                .put(StructuredPostal.REGION, "\u00D7\u00D7\u770C")
236a6d81e3ee4cf12ade1ef6701b5f1fcdd390fc98aDaisuke Miyakawa                .put(StructuredPostal.POSTCODE, "494-1313")
237a6d81e3ee4cf12ade1ef6701b5f1fcdd390fc98aDaisuke Miyakawa                .put(StructuredPostal.COUNTRY, "\u65E5\u672C")
238a6d81e3ee4cf12ade1ef6701b5f1fcdd390fc98aDaisuke Miyakawa                .put(StructuredPostal.FORMATTED_ADDRESS,
239a6d81e3ee4cf12ade1ef6701b5f1fcdd390fc98aDaisuke Miyakawa                        "\u65E5\u672C 494-1313 \u00D7\u00D7\u770C \u9E7F\u9AA8\u5E02 " +
240639b0f032bd933286a89812544460680a6a01ae4Daisuke Miyakawa                        "\u96DB\u898B\u6CA2\u6751 " + "\u79C1\u66F8\u7BB107")
241a6d81e3ee4cf12ade1ef6701b5f1fcdd390fc98aDaisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME);
242c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    }
243c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    public void testPostalAddresswithJapaneseV21() {
24469831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        testPostalAddressWithJapaneseCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE, "Shift_JIS");
245c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    }
246c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa
2475a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    /**
2485a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa     * Verifies that only one address field is emitted toward DoCoMo phones.
2495a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa     * Prefered type must (should?) be: HOME > WORK > OTHER > CUSTOM
2505a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa     */
251c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_1() {
25269831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
253673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
254673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2555a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK)
2565a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
257673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2585a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
2595a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
260673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2615a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME)
2625a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
263673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2645a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
2655a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom")
2665a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "4");
2675a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
268673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
269673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
270673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
271673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
272673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
273673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-NO", "")
274673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
275673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("ADR",
2765a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                        Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME"));
2775a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    }
2785a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
279c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_2() {
28069831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
281673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
282673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2835a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
2845a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
285673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2865a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK)
2875a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
288673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
2895a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
2905a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom")
2915a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
2925a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
293673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
294673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
295673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
296673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
297673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
298673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-NO", "")
299673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
300673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("ADR",
3015a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                        Arrays.asList("2", "", "", "", "", "", ""), new TypeSet("WORK"));
3025a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    }
3035a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
304c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_3() {
30569831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
306673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
307673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3085a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
3095a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom1")
3105a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
311673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3125a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
3135a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
314673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3155a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
3165a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom2")
3175a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
3185a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
319673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
320673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
321673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
322673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
323673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
324673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-NO", "")
325673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
326673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("ADR", Arrays.asList("2", "", "", "", "", "", ""));
3275a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    }
3285a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
3295a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    /**
3305a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa     * Verifies the vCard exporter tolerates null TYPE.
3315a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa     */
332c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_4() {
33369831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
334673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
335673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3365a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
337673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3385a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
3395a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
340673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3415a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME)
3425a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
343673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3445a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK)
3455a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "4");
346673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(StructuredPostal.CONTENT_ITEM_TYPE)
3475a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "5");
3485a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
349673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
350673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
351673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
352673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
353673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
354673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-NO", "")
355673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
356673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("ADR",
3575a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                        Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME"));
3585a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    }
359839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
360839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    private void testJapanesePhoneNumberCommon(int vcardType) {
361673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.initForExportTest(vcardType);
362673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
363673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(Phone.CONTENT_ITEM_TYPE)
364839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Phone.NUMBER, "0312341234")
365839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_HOME);
366673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(Phone.CONTENT_ITEM_TYPE)
367839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Phone.NUMBER, "09012341234")
368839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_MOBILE);
369673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
370673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "03-1234-1234", new TypeSet("HOME"))
371673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "090-1234-1234", new TypeSet("CELL"));
372839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    }
373839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
374839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    public void testJapanesePhoneNumberV21_1() {
37569831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        testJapanesePhoneNumberCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE);
376839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    }
377839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
378839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    public void testJapanesePhoneNumberV30() {
37969831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        testJapanesePhoneNumberCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE);
380839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    }
381839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
382673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa    public void testJapanesePhoneNumberDoCoMo() {
38369831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
384673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
385673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(Phone.CONTENT_ITEM_TYPE)
386673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .put(Phone.NUMBER, "0312341234")
387673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_HOME);
388673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(Phone.CONTENT_ITEM_TYPE)
389673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .put(Phone.NUMBER, "09012341234")
390673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_MOBILE);
391673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
392673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
393673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
394673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
395673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-NO", "")
396673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
397673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("ADR", "", new TypeSet("HOME"))
398673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "03-1234-1234", new TypeSet("HOME"))
399673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "090-1234-1234", new TypeSet("CELL"));
400673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa    }
401673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa
402839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    public void testNoteDoCoMo() {
40369831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_DOCOMO, "Shift_JIS");
404673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        ContactEntry entry = mVerifier.addInputEntry();
405673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(Note.CONTENT_ITEM_TYPE)
406839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Note.NOTE, "note1");
407673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(Note.CONTENT_ITEM_TYPE)
408839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Note.NOTE, "note2");
409673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        entry.addContentValues(Note.CONTENT_ITEM_TYPE)
410839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Note.NOTE, "note3");
411839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
412839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        // More than one note fields must be aggregated into one note.
413673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
414673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("TEL", "", new TypeSet("HOME"))
415673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("EMAIL", "", new TypeSet("HOME"))
416673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-CLASS", "PUBLIC")
417673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-REDUCTION", "")
418673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-NO", "")
419673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("X-DCM-HMN-MODE", "")
420673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("ADR", "", new TypeSet("HOME"))
421673c1d1fc9f3c004e999f763a9c718e656497d32Daisuke Miyakawa                .addExpectedNode("NOTE", "note1\nnote2\nnote3", mContentValuesForQP);
422839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    }
423a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa
424a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa    public void testAndroidCustomV21() {
42569831d9dc16c1d36739328910e5d7c0fb7d327feDaisuke Miyakawa        mVerifier.initForExportTest(VCardConfig.VCARD_TYPE_V21_GENERIC);
426a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa        mVerifier.addInputEntry().addContentValues(Nickname.CONTENT_ITEM_TYPE)
427a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa                .put(Nickname.NAME, "\u304D\u3083\u30FC\u30A8\u30C3\u30C1\u30FC");
428a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa        mVerifier.addPropertyNodesVerifierElemWithEmptyName()
429a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa                .addExpectedNode("X-ANDROID-CUSTOM",
430a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa                        Arrays.asList(Nickname.CONTENT_ITEM_TYPE,
431a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa                                "\u304D\u3083\u30FC\u30A8\u30C3\u30C1\u30FC",
432a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa                                "", "", "", "", "", "", "", "", "", "", "", "", "", ""),
433a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa                        mContentValuesForQPAndUtf8);
434a750fdd765ec253ffa8bf3d4848d5c3a35e1979bDaisuke Miyakawa    }
435839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa}
436