VCardJapanizationTests.java revision c4b51712d89e9fb742b598911e611c80ad51de82
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 */
164fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
174fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawapackage com.android.unit_tests.vcard;
184fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
194fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawaimport android.content.ContentValues;
204fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawaimport android.pim.vcard.VCardConfig;
21839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.Note;
22839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.Phone;
234fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.StructuredName;
245a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawaimport android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
254fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
264fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawaimport com.android.unit_tests.vcard.PropertyNodesVerifierElem.TypeSet;
27839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawaimport com.android.unit_tests.vcard.VCardTestsBase.ContactEntry;
28839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawaimport com.android.unit_tests.vcard.VCardTestsBase.VCardVerifier;
294fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
304fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawaimport java.util.Arrays;
314fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
324fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawapublic class VCardJapanizationTests extends VCardTestsBase {
334fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    private void testNameUtf8Common(int vcardType) {
348c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(vcardType);
358c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
368c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        entry.buildData(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 =
434fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa            (VCardConfig.isV30(vcardType) ? null : mContentValuesForQPAndUtf8);
444fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        verifier.addPropertyNodesVerifierElem()
454fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("FN", "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D",
464fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        contentValues)
474fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("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        verifier.verify();
524fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
534fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
544fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    public void testNameUtf8V21() {
554fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        testNameUtf8Common(VCardConfig.VCARD_TYPE_V21_JAPANESE_UTF8);
564fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
574fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
584fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    public void testNameUtf8V30() {
594fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        testNameUtf8Common(VCardConfig.VCARD_TYPE_V30_JAPANESE_UTF8);
604fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
614fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
624fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    public void testNameShiftJis() {
638c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(VCardConfig.VCARD_TYPE_V30_JAPANESE_SJIS);
648c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
658c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        entry.buildData(StructuredName.CONTENT_ITEM_TYPE)
664fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069")
674fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B")
684fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.MIDDLE_NAME, "B")
694fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.PREFIX, "Dr.")
704fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.SUFFIX, "Ph.D");
714fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
724fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        verifier.addPropertyNodesVerifierElem()
734fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("FN", "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D",
744fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        mContentValuesForSJis)
754fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("N", "\u3075\u308B\u3069;\u3091\u308A\u304B;B;Dr.;Ph.D",
764fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        Arrays.asList(
774fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                                "\u3075\u308B\u3069", "\u3091\u308A\u304B", "B", "Dr.", "Ph.D"),
784fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                                null, mContentValuesForSJis, null, null);
794fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        verifier.verify();
804fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
814fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
824fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    /**
834fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa     * DoCoMo phones require all name elements should be in "family name" field.
844fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa     */
854fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    public void testNameDoCoMo() {
868c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(VCardConfig.VCARD_TYPE_DOCOMO);
878c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
888c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        entry.buildData(StructuredName.CONTENT_ITEM_TYPE)
894fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.FAMILY_NAME, "\u3075\u308B\u3069")
904fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.GIVEN_NAME, "\u3091\u308A\u304B")
914fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.MIDDLE_NAME, "B")
924fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.PREFIX, "Dr.")
934fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .put(StructuredName.SUFFIX, "Ph.D");
944fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa
954fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        final String fullName = "Dr. \u3075\u308B\u3069 B \u3091\u308A\u304B Ph.D";
964fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        verifier.addPropertyNodesVerifierElem()
974fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("N", fullName + ";;;;",
984fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        Arrays.asList(fullName, "", "", "", ""),
994fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                        null, mContentValuesForSJis, null, null)
1004fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("FN", fullName, mContentValuesForSJis)
1014fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("SOUND", ";;;;", new TypeSet("X-IRMC-N"))
1024fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("TEL", "", new TypeSet("HOME"))
1034fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME"))
1044fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("ADR", "", new TypeSet("HOME"))
1054fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("X-CLASS", "PUBLIC")
1064fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("X-REDUCTION", "")
1074fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("X-NO", "")
1084fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa                .addNodeWithoutOrder("X-DCM-HMN-MODE", "");
1094fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa        verifier.verify();
1104fe2c57c3c123dfd0c335b2390a661bcb7b546fbDaisuke Miyakawa    }
111592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
112592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    private void testPhoneticNameCommon(int vcardType) {
1138c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(vcardType);
1148c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
1158c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        entry.buildData(StructuredName.CONTENT_ITEM_TYPE)
116592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
117592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0")
118592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046");
119592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
120592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        final ContentValues contentValues =
121592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa            (VCardConfig.usesShiftJis(vcardType) ?
122592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                    (VCardConfig.isV30(vcardType) ? mContentValuesForSJis :
123592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                            mContentValuesForQPAndSJis) :
124592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                    (VCardConfig.isV30(vcardType) ? null : mContentValuesForQPAndUtf8));
125592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        PropertyNodesVerifierElem elem = verifier.addPropertyNodesVerifierElemWithEmptyName();
126592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        elem.addNodeWithoutOrder("X-PHONETIC-LAST-NAME", "\u3084\u307E\u3060",
127592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        contentValues)
128592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addNodeWithoutOrder("X-PHONETIC-MIDDLE-NAME",
129592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0",
130592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        contentValues)
131592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addNodeWithoutOrder("X-PHONETIC-FIRST-NAME", "\u305F\u308D\u3046",
132592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        contentValues);
133592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        if (VCardConfig.isV30(vcardType)) {
134592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa            elem.addNodeWithoutOrder("SORT-STRING",
135592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                    "\u3084\u307E\u3060 \u30DF\u30C9\u30EB\u30CD\u30FC\u30E0 \u305F\u308D\u3046",
136592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                    contentValues);
137592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        }
138592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        ContentValuesBuilder builder = verifier.addImportVerifier()
139592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addExpected(StructuredName.CONTENT_ITEM_TYPE);
140592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
141592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0")
142592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046")
143592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.DISPLAY_NAME,
144592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\u3084\u307E\u3060 \u30DF\u30C9\u30EB\u30CD\u30FC\u30E0 " +
145592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\u305F\u308D\u3046");
146592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        verifier.verify();
147592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
148592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
149592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForJapaneseV21Utf8() {
150592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE_UTF8);
151592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
152592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
153592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForJapaneseV21Sjis() {
154592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE_SJIS);
155592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
156592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
157592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForJapaneseV30Utf8() {
158592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE_UTF8);
159592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
160592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
161592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForJapaneseV30SJis() {
162592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        testPhoneticNameCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE_SJIS);
163592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
164592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
165592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForMobileV21_1() {
1668c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(VCardConfig.VCARD_TYPE_V21_JAPANESE_MOBILE);
1678c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
1688c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        entry.buildData(StructuredName.CONTENT_ITEM_TYPE)
169592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
170592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME, "\u30DF\u30C9\u30EB\u30CD\u30FC\u30E0")
171592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046");
172592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
173592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        verifier.addPropertyNodesVerifierElem()
174592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addNodeWithoutOrder("SOUND",
175592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF94\uFF8F\uFF80\uFF9E \uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91 " +
176592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF80\uFF9B\uFF73;;;;",
177592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        mContentValuesForSJis, new TypeSet("X-IRMC-N"));
178592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        ContentValuesBuilder builder = verifier.addImportVerifier()
179592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addExpected(StructuredName.CONTENT_ITEM_TYPE);
180592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\uFF94\uFF8F\uFF80\uFF9E")
181592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_MIDDLE_NAME,
182592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91")
183592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\uFF80\uFF9B\uFF73")
184592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.DISPLAY_NAME,
185592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF94\uFF8F\uFF80\uFF9E \uFF90\uFF84\uFF9E\uFF99\uFF88\uFF70\uFF91 " +
186592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                        "\uFF80\uFF9B\uFF73");
187592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        verifier.verify();
188592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
189592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
190592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    public void testPhoneticNameForMobileV21_2() {
1918c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(VCardConfig.VCARD_TYPE_V21_JAPANESE_MOBILE);
1928c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
1938c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        entry.buildData(StructuredName.CONTENT_ITEM_TYPE)
194592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_FAMILY_NAME, "\u3084\u307E\u3060")
195592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\u305F\u308D\u3046");
196592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa
197592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        verifier.addPropertyNodesVerifierElem()
198592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addNodeWithoutOrder("SOUND", "\uFF94\uFF8F\uFF80\uFF9E \uFF80\uFF9B\uFF73;;;;",
199592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                                mContentValuesForSJis, new TypeSet("X-IRMC-N"));
200592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        ContentValuesBuilder builder = verifier.addImportVerifier()
201592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .addExpected(StructuredName.CONTENT_ITEM_TYPE);
202592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        builder.put(StructuredName.PHONETIC_FAMILY_NAME, "\uFF94\uFF8F\uFF80\uFF9E")
203592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.PHONETIC_GIVEN_NAME, "\uFF80\uFF9B\uFF73")
204592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa                .put(StructuredName.DISPLAY_NAME, "\uFF94\uFF8F\uFF80\uFF9E \uFF80\uFF9B\uFF73");
205592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa        verifier.verify();
206592988d307e8d305ca163c4e58da0fb350054194Daisuke Miyakawa    }
2075a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
208c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    private void testPostalAddressWithJapaneseCommon(int vcardType) {
209c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(vcardType);
210c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
211c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
212c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.POBOX, "\u79C1\u66F8\u7BB107")
213c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.NEIGHBORHOOD,
214c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                        "\u30A2\u30D1\u30FC\u30C8\u0020\u0033\u0034\u53F7\u5BA4")
215c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.STREET, "\u96DB\u898B\u6CA2\u6751")
216c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.CITY, "\u9E7F\u9AA8\u5E02")
217c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.REGION, "\u00D7\u00D7\u770C")
218c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.POSTCODE, "494-1313")
219c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.COUNTRY, "\u65E5\u672C")
220c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.FORMATTED_ADDRESS,
221c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                        "\u3053\u3093\u306A\u3068\u3053\u308D\u3092\u898B"
222c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                        + "\u308B\u306A\u3093\u3066\u6687\u4EBA\u3067\u3059\u304B\uFF1F")
223c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
224c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                .put(StructuredPostal.LABEL, "\u304A\u3082\u3061\u304B\u3048\u308A");
225c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa
226c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        ContentValues contentValues = (VCardConfig.usesShiftJis(vcardType) ?
227c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                (VCardConfig.isV30(vcardType) ? mContentValuesForSJis :
228c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                    mContentValuesForQPAndSJis) :
229c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                (VCardConfig.isV30(vcardType) ? mContentValuesForUtf8 :
230c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                    mContentValuesForQPAndUtf8));
231c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa
232c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        PropertyNodesVerifierElem elem = verifier.addPropertyNodesVerifierElemWithEmptyName();
233c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        // LABEL must be ignored in vCard 2.1. As for vCard 3.0, the current behavior is
234c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        // same as that in vCard 3.0, which can be changed in the future.
235c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        elem.addNodeWithoutOrder("ADR", Arrays.asList("\u79C1\u66F8\u7BB107",
236c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                "\u30A2\u30D1\u30FC\u30C8\u0020\u0033\u0034\u53F7\u5BA4",
237c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                "\u96DB\u898B\u6CA2\u6751", "\u9E7F\u9AA8\u5E02", "\u00D7\u00D7\u770C",
238c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                "494-1313", "\u65E5\u672C"),
239c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa                contentValues);
240c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        verifier.verify();
241c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    }
242c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa
243c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    public void testPostalAddresswithJapaneseV21() {
244c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa        testPostalAddressWithJapaneseCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE_SJIS);
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() {
2528c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(VCardConfig.VCARD_TYPE_DOCOMO);
2538c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
2545a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
2555a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK)
2565a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
2575a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
2585a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
2595a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
2605a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
2615a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME)
2625a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
2635a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(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
2685a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        verifier.addPropertyNodesVerifierElemWithEmptyName()
2695a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("TEL", "", new TypeSet("HOME"))
2705a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME"))
2715a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-CLASS", "PUBLIC")
2725a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-REDUCTION", "")
2735a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-NO", "")
2745a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-DCM-HMN-MODE", "")
2755a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("ADR",
2765a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                        Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME"));
2775a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        verifier.verify();
2785a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    }
2795a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
280c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_2() {
2818c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(VCardConfig.VCARD_TYPE_DOCOMO);
2828c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
2835a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
2845a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
2855a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
2865a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
2875a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK)
2885a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
2895a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
2905a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
2915a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom")
2925a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
2935a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
2945a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        verifier.addPropertyNodesVerifierElemWithEmptyName()
2955a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("TEL", "", new TypeSet("HOME"))
2965a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME"))
2975a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-CLASS", "PUBLIC")
2985a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-REDUCTION", "")
2995a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-NO", "")
3005a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-DCM-HMN-MODE", "")
3015a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("ADR",
3025a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                        Arrays.asList("2", "", "", "", "", "", ""), new TypeSet("WORK"));
3035a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        verifier.verify();
3045a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    }
3055a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
306c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_3() {
3078c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(VCardConfig.VCARD_TYPE_DOCOMO);
3088c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
3095a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
3105a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
3115a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom1")
3125a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
3135a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
3145a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
3155a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
3165a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
3175a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM)
3185a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.LABEL, "custom2")
3195a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
3205a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
3215a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        verifier.addPropertyNodesVerifierElemWithEmptyName()
3225a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("TEL", "", new TypeSet("HOME"))
3235a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME"))
3245a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-CLASS", "PUBLIC")
3255a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-REDUCTION", "")
3265a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-NO", "")
3275a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-DCM-HMN-MODE", "")
3285a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("ADR", Arrays.asList("2", "", "", "", "", "", ""));
3295a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        verifier.verify();
3305a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    }
3315a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
3325a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    /**
3335a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa     * Verifies the vCard exporter tolerates null TYPE.
3345a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa     */
335c4b51712d89e9fb742b598911e611c80ad51de82Daisuke Miyakawa    public void testPostalAdrressForDoCoMo_4() {
3368c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(VCardConfig.VCARD_TYPE_DOCOMO);
3378c808187249f473702e0f4bee2147da292490963Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
3385a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
3395a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "1");
3405a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
3415a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER)
3425a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "2");
3435a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
3445a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME)
3455a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "3");
3465a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
3475a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK)
3485a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "4");
3495a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE)
3505a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .put(StructuredPostal.POBOX, "5");
3515a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa
3525a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        verifier.addPropertyNodesVerifierElemWithEmptyName()
3535a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("TEL", "", new TypeSet("HOME"))
3545a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME"))
3555a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-CLASS", "PUBLIC")
3565a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-REDUCTION", "")
3575a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-NO", "")
3585a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("X-DCM-HMN-MODE", "")
3595a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                .addNodeWithoutOrder("ADR",
3605a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa                        Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME"));
3615a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa        verifier.verify();
3625a1f2d2de026b582fbe8b1a46a83ad33760a2c48Daisuke Miyakawa    }
363839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
364839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    private void testJapanesePhoneNumberCommon(int vcardType) {
365839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(vcardType);
366839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
367839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        entry.buildData(Phone.CONTENT_ITEM_TYPE)
368839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Phone.NUMBER, "0312341234")
369839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_HOME);
370839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        entry.buildData(Phone.CONTENT_ITEM_TYPE)
371839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Phone.NUMBER, "09012341234")
372839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Phone.TYPE, Phone.TYPE_MOBILE);
373839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        verifier.addPropertyNodesVerifierElemWithEmptyName()
374839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("TEL", "03-1234-1234", new TypeSet("HOME"))
375839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("TEL", "090-1234-1234", new TypeSet("WORK"));
376839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    }
377839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
378839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    public void testJapanesePhoneNumberV21_1() {
379839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        testJapanesePhoneNumberCommon(VCardConfig.VCARD_TYPE_V21_JAPANESE_UTF8);
380839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    }
381839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
382839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    public void testJapanesePhoneNumberDoCoMo() {
383839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        testJapanesePhoneNumberCommon(VCardConfig.VCARD_TYPE_DOCOMO);
384839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    }
385839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
386839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    public void testJapanesePhoneNumberV30() {
387839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        testJapanesePhoneNumberCommon(VCardConfig.VCARD_TYPE_V30_JAPANESE_UTF8);
388839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    }
389839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
390839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    public void testNoteDoCoMo() {
391839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        VCardVerifier verifier = new VCardVerifier(VCardConfig.VCARD_TYPE_DOCOMO);
392839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        ContactEntry entry = verifier.addInputEntry();
393839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        entry.buildData(Note.CONTENT_ITEM_TYPE)
394839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Note.NOTE, "note1");
395839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        entry.buildData(Note.CONTENT_ITEM_TYPE)
396839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Note.NOTE, "note2");
397839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        entry.buildData(Note.CONTENT_ITEM_TYPE)
398839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .put(Note.NOTE, "note3");
399839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa
400839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        // More than one note fields must be aggregated into one note.
401839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        verifier.addPropertyNodesVerifierElemWithEmptyName()
402839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("TEL", "", new TypeSet("HOME"))
403839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME"))
404839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("X-CLASS", "PUBLIC")
405839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("X-REDUCTION", "")
406839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("X-NO", "")
407839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("X-DCM-HMN-MODE", "")
408839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("ADR", "", new TypeSet("HOME"))
409839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa                .addNodeWithoutOrder("NOTE", "note1\nnote2\nnote3", mContentValuesForQP);
410839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa        verifier.verify();
411839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa    }
412839c036444c8a5335cc557e174acc7ee28baafc4Daisuke Miyakawa}
413