Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc0f9efd authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change I0d442f0d into eclair-mr2

* changes:
  Add tests for Japanization part of vCard.
parents 20777fae 4fe2c57c
Loading
Loading
Loading
Loading
+100 −73
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.nio.charset.UnsupportedCharsetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -144,6 +145,7 @@ public class VCardComposer {
    private static final String VCARD_PARAM_ENCODING_BASE64_V30 = "ENCODING=b";

    private static final String SHIFT_JIS = "SHIFT_JIS";
    private static final String UTF_8 = "UTF-8";

    /**
     * Special URI for testing.
@@ -359,12 +361,9 @@ public class VCardComposer {
        mIsV30 = VCardConfig.isV30(vcardType);
        mUsesQuotedPrintable = VCardConfig.usesQuotedPrintable(vcardType);
        mIsDoCoMo = VCardConfig.isDoCoMo(vcardType);
        mIsJapaneseMobilePhone = VCardConfig
                .needsToConvertPhoneticString(vcardType);
        mOnlyOneNoteFieldIsAvailable = VCardConfig
                .onlyOneNoteFieldIsAvailable(vcardType);
        mUsesAndroidProperty = VCardConfig
                .usesAndroidSpecificProperty(vcardType);
        mIsJapaneseMobilePhone = VCardConfig.needsToConvertPhoneticString(vcardType);
        mOnlyOneNoteFieldIsAvailable = VCardConfig.onlyOneNoteFieldIsAvailable(vcardType);
        mUsesAndroidProperty = VCardConfig.usesAndroidSpecificProperty(vcardType);
        mUsesDefactProperty = VCardConfig.usesDefactProperty(vcardType);
        mUsesUtf8 = VCardConfig.usesUtf8(vcardType);
        mUsesShiftJis = VCardConfig.usesShiftJis(vcardType);
@@ -374,17 +373,31 @@ public class VCardComposer {
        mHandlerList = new ArrayList<OneEntryHandler>();

        if (mIsDoCoMo) {
            mCharsetString = CharsetUtils.charsetForVendor(SHIFT_JIS, "docomo").name();
            String charset;
            try {
                charset = CharsetUtils.charsetForVendor(SHIFT_JIS, "docomo").name();
            } catch (UnsupportedCharsetException e) {
                Log.e(LOG_TAG, "DoCoMo-specific SHIFT_JIS was not found. Use SHIFT_JIS as is.");
                charset = SHIFT_JIS;
            }
            mCharsetString = charset;
            // Do not use mCharsetString bellow since it is different from "SHIFT_JIS" but
            // may be "DOCOMO_SHIFT_JIS" or something like that (internal expression used in
            // Android, not shown to the public).
            mVCardCharsetParameter = "CHARSET=" + SHIFT_JIS;
        } else if (mUsesShiftJis) {
            mCharsetString = CharsetUtils.charsetForVendor(SHIFT_JIS).name();
            String charset;
            try {
                charset = CharsetUtils.charsetForVendor(SHIFT_JIS).name();
            } catch (UnsupportedCharsetException e) {
                Log.e(LOG_TAG, "Vendor-specific SHIFT_JIS was not found. Use SHIFT_JIS as is.");
                charset = SHIFT_JIS;
            }
            mCharsetString = charset;
            mVCardCharsetParameter = "CHARSET=" + SHIFT_JIS;
        } else {
            mCharsetString = "UTF-8";
            mVCardCharsetParameter = "CHARSET=UTF-8";
            mCharsetString = UTF_8;
            mVCardCharsetParameter = "CHARSET=" + UTF_8;
        }
    }

@@ -702,26 +715,18 @@ public class VCardComposer {
            }
        }

        final String familyName = primaryContentValues
                .getAsString(StructuredName.FAMILY_NAME);
        final String middleName = primaryContentValues
                .getAsString(StructuredName.MIDDLE_NAME);
        final String givenName = primaryContentValues
                .getAsString(StructuredName.GIVEN_NAME);
        final String prefix = primaryContentValues
                .getAsString(StructuredName.PREFIX);
        final String suffix = primaryContentValues
                .getAsString(StructuredName.SUFFIX);
        final String displayName = primaryContentValues
                .getAsString(StructuredName.DISPLAY_NAME);
        final String familyName = primaryContentValues.getAsString(StructuredName.FAMILY_NAME);
        final String middleName = primaryContentValues.getAsString(StructuredName.MIDDLE_NAME);
        final String givenName = primaryContentValues.getAsString(StructuredName.GIVEN_NAME);
        final String prefix = primaryContentValues.getAsString(StructuredName.PREFIX);
        final String suffix = primaryContentValues.getAsString(StructuredName.SUFFIX);
        final String displayName = primaryContentValues.getAsString(StructuredName.DISPLAY_NAME);

        if (!TextUtils.isEmpty(familyName) || !TextUtils.isEmpty(givenName)) {
            final String encodedFamily;
            final String encodedGiven;
            final String encodedMiddle;
            final String encodedPrefix;
            final String encodedSuffix;

            final boolean shouldAppendCharsetParameterToName =
                !(mIsV30 && UTF_8.equalsIgnoreCase(mCharsetString)) &&
                shouldAppendCharsetParameters(Arrays.asList(
                        familyName, givenName, middleName, prefix, suffix));
            final boolean reallyUseQuotedPrintableToName =
                    (!mRefrainsQPToPrimaryProperties &&
                            !(VCardUtils.containsOnlyNonCrLfPrintableAscii(familyName) &&
@@ -730,6 +735,26 @@ public class VCardComposer {
                                    VCardUtils.containsOnlyNonCrLfPrintableAscii(prefix) &&
                                    VCardUtils.containsOnlyNonCrLfPrintableAscii(suffix)));

            final String formattedName;
            if (!TextUtils.isEmpty(displayName)) {
                formattedName = displayName;
            } else {
                formattedName = VCardUtils.constructNameFromElements(
                        VCardConfig.getNameOrderType(mVCardType),
                        familyName, middleName, givenName, prefix, suffix);
            }
            final boolean shouldAppendCharsetParameterToFN =
                    !(mIsV30 && UTF_8.equalsIgnoreCase(mCharsetString)) &&
                    shouldAppendCharsetParameter(formattedName);
            final boolean reallyUseQuotedPrintableToFN =
                    !mRefrainsQPToPrimaryProperties &&
                    !VCardUtils.containsOnlyNonCrLfPrintableAscii(formattedName);

            final String encodedFamily;
            final String encodedGiven;
            final String encodedMiddle;
            final String encodedPrefix;
            final String encodedSuffix;
            if (reallyUseQuotedPrintableToName) {
                encodedFamily = encodeQuotedPrintable(familyName);
                encodedGiven = encodeQuotedPrintable(givenName);
@@ -744,9 +769,29 @@ public class VCardComposer {
                encodedSuffix = escapeCharacters(suffix);
            }

            final String encodedFormattedname =
                    (reallyUseQuotedPrintableToFN ?
                            encodeQuotedPrintable(formattedName) : escapeCharacters(formattedName));

            builder.append(Constants.PROPERTY_N);
            if (shouldAppendCharsetParameters(Arrays.asList(
                    encodedFamily, encodedGiven, encodedMiddle, encodedPrefix, encodedSuffix))) {
            if (mIsDoCoMo) {
                if (shouldAppendCharsetParameterToName) {
                    builder.append(VCARD_PARAM_SEPARATOR);
                    builder.append(mVCardCharsetParameter);
                }
                if (reallyUseQuotedPrintableToName) {
                    builder.append(VCARD_PARAM_SEPARATOR);
                    builder.append(VCARD_PARAM_ENCODING_QP);
                }
                builder.append(VCARD_DATA_SEPARATOR);
                // DoCoMo phones require that all the elements in the "family name" field.
                builder.append(formattedName);
                builder.append(VCARD_ITEM_SEPARATOR);
                builder.append(VCARD_ITEM_SEPARATOR);
                builder.append(VCARD_ITEM_SEPARATOR);
                builder.append(VCARD_ITEM_SEPARATOR);
            } else {
                if (shouldAppendCharsetParameterToName) {
                    builder.append(VCARD_PARAM_SEPARATOR);
                    builder.append(mVCardCharsetParameter);
                }
@@ -754,7 +799,6 @@ public class VCardComposer {
                    builder.append(VCARD_PARAM_SEPARATOR);
                    builder.append(VCARD_PARAM_ENCODING_QP);
                }

                builder.append(VCARD_DATA_SEPARATOR);
                builder.append(encodedFamily);
                builder.append(VCARD_ITEM_SEPARATOR);
@@ -765,38 +809,21 @@ public class VCardComposer {
                builder.append(encodedPrefix);
                builder.append(VCARD_ITEM_SEPARATOR);
                builder.append(encodedSuffix);
            builder.append(VCARD_END_OF_LINE);

            final String formattedName;
            if (!TextUtils.isEmpty(displayName)) {
                formattedName = displayName;
            } else {
                formattedName = VCardUtils.constructNameFromElements(
                    VCardConfig.getNameOrderType(mVCardType),
                    encodedFamily, encodedMiddle, encodedGiven, encodedPrefix, encodedSuffix);
            }

            final boolean reallyUseQuotedPrintableToFullname =
                !mRefrainsQPToPrimaryProperties &&
                !VCardUtils.containsOnlyNonCrLfPrintableAscii(formattedName);

            final String encodedFullname =
                reallyUseQuotedPrintableToFullname ?
                        encodeQuotedPrintable(formattedName) :
                            escapeCharacters(formattedName);
            builder.append(VCARD_END_OF_LINE);

            // FN property
            builder.append(Constants.PROPERTY_FN);
            if (shouldAppendCharsetParameter(encodedFullname)) {
            if (shouldAppendCharsetParameterToFN) {
                builder.append(VCARD_PARAM_SEPARATOR);
                builder.append(mVCardCharsetParameter);
            }
            if (reallyUseQuotedPrintableToFullname) {
            if (reallyUseQuotedPrintableToFN) {
                builder.append(VCARD_PARAM_SEPARATOR);
                builder.append(VCARD_PARAM_ENCODING_QP);
            }
            builder.append(VCARD_DATA_SEPARATOR);
            builder.append(encodedFullname);
            builder.append(encodedFormattedname);
            builder.append(VCARD_END_OF_LINE);
        } else if (!TextUtils.isEmpty(displayName)) {
            final boolean reallyUseQuotedPrintableToDisplayName =
@@ -808,7 +835,7 @@ public class VCardComposer {
                                escapeCharacters(displayName);

            builder.append(Constants.PROPERTY_N);
            if (shouldAppendCharsetParameter(encodedDisplayName)) {
            if (shouldAppendCharsetParameter(displayName)) {
                builder.append(VCARD_PARAM_SEPARATOR);
                builder.append(mVCardCharsetParameter);
            }
@@ -826,7 +853,7 @@ public class VCardComposer {
            if (mIsV30) {
                builder.append(Constants.PROPERTY_FN);
                // TODO: Not allowed formally...
                if (shouldAppendCharsetParameter(encodedDisplayName)) {
                if (shouldAppendCharsetParameter(displayName)) {
                    builder.append(VCARD_PARAM_SEPARATOR);
                    builder.append(mVCardCharsetParameter);
                }
+43 −22
Original line number Diff line number Diff line
@@ -124,23 +124,19 @@ class PropertyNodesVerifierElem {
        return addNodeWithOrder(propName, propValue, null, null, null, null, null);
    }

    public PropertyNodesVerifierElem addNodeWithOrder(String propName, String propValue,
            ContentValues contentValues) {
        return addNodeWithOrder(propName, propValue, null, null, contentValues, null, null);
    }

    public PropertyNodesVerifierElem addNodeWithOrder(String propName, String propValue,
            List<String> propValueList) {
        return addNodeWithOrder(propName, propValue, propValueList, null, null, null, null);
    }

    public PropertyNodesVerifierElem addNodeWithOrder(String propName, List<String> propValueList) {
        StringBuffer buffer = new StringBuffer();
        boolean first = true;
        for (String propValueElem : propValueList) {
            if (first) {
                first = false;
            } else {
                buffer.append(';');
            }
            buffer.append(propValueElem);
        }
        return addNodeWithOrder(propName, buffer.toString(), propValueList,
        final String propValue = concatinateListWithSemiColon(propValueList);
        return addNodeWithOrder(propName, propValue.toString(), propValueList,
                null, null, null, null);
    }

@@ -149,6 +145,13 @@ class PropertyNodesVerifierElem {
        return addNodeWithOrder(propName, propValue, null, null, null, paramMap_TYPE, null);
    }

    public PropertyNodesVerifierElem addNodeWithOrder(String propName,
            List<String> propValueList, TypeSet paramMap_TYPE) {
        final String propValue = concatinateListWithSemiColon(propValueList);
        return addNodeWithOrder(propName, propValue, propValueList, null, null,
                paramMap_TYPE, null);
    }

    public PropertyNodesVerifierElem addNodeWithOrder(String propName, String propValue,
            List<String> propValueList, TypeSet paramMap_TYPE) {
        return addNodeWithOrder(propName, propValue, propValueList, null, null,
@@ -176,23 +179,19 @@ class PropertyNodesVerifierElem {
        return addNodeWithoutOrder(propName, propValue, null, null, null, null, null);
    }

    public PropertyNodesVerifierElem addNodeWithoutOrder(String propName, String propValue,
            ContentValues contentValues) {
        return addNodeWithoutOrder(propName, propValue, null, null, contentValues, null, null);
    }

    public PropertyNodesVerifierElem addNodeWithoutOrder(String propName, String propValue,
            List<String> propValueList) {
        return addNodeWithoutOrder(propName, propValue, propValueList, null, null, null, null);
    }

    public PropertyNodesVerifierElem addNodeWithoutOrder(String propName, List<String> propValueList) {
        StringBuffer buffer = new StringBuffer();
        boolean first = true;
        for (String propValueElem : propValueList) {
            if (first) {
                first = false;
            } else {
                buffer.append(';');
            }
            buffer.append(propValueElem);
        }
        return addNodeWithoutOrder(propName, buffer.toString(), propValueList,
        final String propValue = concatinateListWithSemiColon(propValueList);
        return addNodeWithoutOrder(propName, propValue, propValueList,
                null, null, null, null);
    }

@@ -201,6 +200,13 @@ class PropertyNodesVerifierElem {
        return addNodeWithoutOrder(propName, propValue, null, null, null, paramMap_TYPE, null);
    }

    public PropertyNodesVerifierElem addNodeWithoutOrder(String propName,
            List<String> propValueList, TypeSet paramMap_TYPE) {
        final String propValue = concatinateListWithSemiColon(propValueList);
        return addNodeWithoutOrder(propName, propValue, propValueList, null, null,
                paramMap_TYPE, null);
    }

    public PropertyNodesVerifierElem addNodeWithoutOrder(String propName, String propValue,
            List<String> propValueList, TypeSet paramMap_TYPE) {
        return addNodeWithoutOrder(propName, propValue, propValueList, null, null,
@@ -291,6 +297,21 @@ class PropertyNodesVerifierElem {
        }
    }

    private String concatinateListWithSemiColon(List<String> array) {
        StringBuffer buffer = new StringBuffer();
        boolean first = true;
        for (String propValueElem : array) {
            if (first) {
                first = false;
            } else {
                buffer.append(';');
            }
            buffer.append(propValueElem);
        }

        return buffer.toString();
    }

    private boolean tryFoundExpectedNodeFromUnorderedList(PropertyNode actualNode,
            List<PropertyNode> expectedButDifferentValueList) {
        final String propName = actualNode.propName;
+17 −31
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.unit_tests.vcard;

import android.content.ContentValues;
import android.pim.vcard.VCardConfig;
import android.pim.vcard.exception.VCardException;
import android.provider.ContactsContract.Data;
@@ -569,10 +568,6 @@ public class VCardImporterTests extends VCardTestsBase {
     * Tests all the properties in a complicated vCard are correctly parsed by the VCardParser.
     */
    public void testV21ComplicatedCase_Parsing() throws IOException, VCardException {
        ContentValues contentValuesForQP = new ContentValues();
        contentValuesForQP.put("ENCODING", "QUOTED-PRINTABLE");
        ContentValues contentValuesForPhoto = new ContentValues();
        contentValuesForPhoto.put("ENCODING", "BASE64");
        PropertyNodesVerifier verifier = new PropertyNodesVerifier(this);
        verifier.addPropertyNodesVerifierElem()
                .addNodeWithOrder("VERSION", "2.1")
@@ -596,7 +591,7 @@ public class VCardImporterTests extends VCardTestsBase {
                                null, null, new TypeSet("WORK"), null)
                .addNodeWithOrder("LABEL",
                        "100 Waters Edge\r\nBaytown, LA 30314\r\nUnited  States of America",
                        null, null, contentValuesForQP, new TypeSet("WORK"), null)
                        null, null, mContentValuesForQP, new TypeSet("WORK"), null)
                .addNodeWithOrder("ADR",
                        ";;42 Plantation St.;Baytown;LA;30314;United States of America",
                        Arrays.asList("", "", "42 Plantation St.", "Baytown",
@@ -604,7 +599,7 @@ public class VCardImporterTests extends VCardTestsBase {
                                new TypeSet("HOME"), null)
                .addNodeWithOrder("LABEL",
                        "42 Plantation St.\r\nBaytown, LA 30314\r\nUnited  States of America",
                        null, null, contentValuesForQP,
                        null, null, mContentValuesForQP,
                        new TypeSet("HOME"), null)
                .addNodeWithOrder("EMAIL", "forrestgump@walladalla.com",
                        new TypeSet("PREF", "INTERNET"))
@@ -612,9 +607,9 @@ public class VCardImporterTests extends VCardTestsBase {
                .addNodeWithOrder("NOTE", "The following note is the example from RFC 2045.")
                .addNodeWithOrder("NOTE",
                        "Now's the time for all folk to come to the aid of their country.",
                        null, null, contentValuesForQP, null, null)
                        null, null, mContentValuesForQP, null, null)
                .addNodeWithOrder("PHOTO", null,
                        null, sPhotoByteArrayForComplicatedCase, contentValuesForPhoto,
                        null, sPhotoByteArrayForComplicatedCase, mContentValuesForBase64V21,
                        new TypeSet("JPEG"), null)
                .addNodeWithOrder("X-ATTRIBUTE", "Some String")
                .addNodeWithOrder("BDAY", "19800101")
@@ -762,17 +757,15 @@ public class VCardImporterTests extends VCardTestsBase {
        // Though Japanese careers append ";;;;" at the end of the value of "SOUND",
        // vCard 2.1/3.0 specification does not allow multiple values.
        // Do not need to handle it as multiple values.
        ContentValues contentValuesForShiftJis = new ContentValues();
        contentValuesForShiftJis.put("CHARSET", "SHIFT_JIS");
        PropertyNodesVerifier verifier = new PropertyNodesVerifier(this);
        verifier.addPropertyNodesVerifierElem()
                .addNodeWithOrder("VERSION", "2.1", null, null, null, null, null)
                .addNodeWithOrder("N", "\u5B89\u85E4\u30ED\u30A4\u30C9;;;;",
                        Arrays.asList("\u5B89\u85E4\u30ED\u30A4\u30C9", "", "", "", ""),
                        null, contentValuesForShiftJis, null, null)
                        null, mContentValuesForSJis, null, null)
                .addNodeWithOrder("SOUND",
                        "\uFF71\uFF9D\uFF84\uFF9E\uFF73\uFF9B\uFF72\uFF84\uFF9E;;;;",
                        null, null, contentValuesForShiftJis,
                        null, null, mContentValuesForSJis,
                        new TypeSet("X-IRMC-N"), null)
                .addNodeWithOrder("TEL", "0300000000", null, null, null,
                        new TypeSet("VOICE", "PREF"), null);
@@ -829,23 +822,18 @@ public class VCardImporterTests extends VCardTestsBase {
    }

    public void testV21Japanese2_Parsing() throws IOException, VCardException {
        ContentValues contentValuesForShiftJis = new ContentValues();
        contentValuesForShiftJis.put("CHARSET", "SHIFT_JIS");
        ContentValues contentValuesForQPAndSJ = new ContentValues();
        contentValuesForQPAndSJ.put("ENCODING", "QUOTED-PRINTABLE");
        contentValuesForQPAndSJ.put("CHARSET", "SHIFT_JIS");
        PropertyNodesVerifier verifier = new PropertyNodesVerifier(this);
        verifier.addPropertyNodesVerifierElem()
                .addNodeWithOrder("VERSION", "2.1")
                .addNodeWithOrder("N", "\u5B89\u85E4;\u30ED\u30A4\u30C9\u0031;;;",
                        Arrays.asList("\u5B89\u85E4", "\u30ED\u30A4\u30C9\u0031",
                                "", "", ""),
                        null, contentValuesForShiftJis, null, null)
                        null, mContentValuesForSJis, null, null)
                .addNodeWithOrder("FN", "\u5B89\u85E4\u0020\u30ED\u30A4\u30C9\u0020\u0031",
                        null, null, contentValuesForShiftJis, null, null)
                        null, null, mContentValuesForSJis, null, null)
                .addNodeWithOrder("SOUND",
                        "\uFF71\uFF9D\uFF84\uFF9E\uFF73;\uFF9B\uFF72\uFF84\uFF9E\u0031;;;",
                        null, null, contentValuesForShiftJis,
                        null, null, mContentValuesForSJis,
                        new TypeSet("X-IRMC-N"), null)
                .addNodeWithOrder("ADR",
                        ";\u6771\u4EAC\u90FD\u6E0B\u8C37\u533A\u685C" +
@@ -857,9 +845,9 @@ public class VCardImporterTests extends VCardTestsBase {
                                "\u4E18\u753A\u0032\u0036\u002D\u0031\u30BB" +
                                "\u30EB\u30EA\u30A2\u30F3\u30BF\u30EF\u30FC" +
                                "\u0036\u968E", "", "", "", "150-8512", ""),
                        null, contentValuesForQPAndSJ, new TypeSet("HOME"), null)
                        null, mContentValuesForQPAndSJis, new TypeSet("HOME"), null)
                .addNodeWithOrder("NOTE", "\u30E1\u30E2", null, null,
                        contentValuesForQPAndSJ, null, null);
                        mContentValuesForQPAndSJis, null, null);
        verifier.verify(R.raw.v21_japanese_2, VCardConfig.VCARD_TYPE_V21_JAPANESE_SJIS);
    }

@@ -895,17 +883,15 @@ public class VCardImporterTests extends VCardTestsBase {
    }

    public void testV21MultipleEntryCase_Parse() throws IOException, VCardException {
        ContentValues contentValuesForShiftJis = new ContentValues();
        contentValuesForShiftJis.put("CHARSET", "SHIFT_JIS");
        PropertyNodesVerifier verifier = new PropertyNodesVerifier(this);
        verifier.addPropertyNodesVerifierElem()
                .addNodeWithOrder("VERSION", "2.1")
                .addNodeWithOrder("N", "\u5B89\u85E4\u30ED\u30A4\u30C9\u0033;;;;",
                        Arrays.asList("\u5B89\u85E4\u30ED\u30A4\u30C9\u0033", "", "", "", ""),
                        null, contentValuesForShiftJis, null, null)
                        null, mContentValuesForSJis, null, null)
                .addNodeWithOrder("SOUND",
                        "\uFF71\uFF9D\uFF84\uFF9E\uFF73\uFF9B\uFF72\uFF84\uFF9E\u0033;;;;",
                        null, null, contentValuesForShiftJis,
                        null, null, mContentValuesForSJis,
                        new TypeSet("X-IRMC-N"), null)
                .addNodeWithOrder("TEL", "9", new TypeSet("X-NEC-SECRET"))
                .addNodeWithOrder("TEL", "10", new TypeSet("X-NEC-HOTEL"))
@@ -916,10 +902,10 @@ public class VCardImporterTests extends VCardTestsBase {
                .addNodeWithOrder("VERSION", "2.1")
                .addNodeWithOrder("N", "\u5B89\u85E4\u30ED\u30A4\u30C9\u0034;;;;",
                        Arrays.asList("\u5B89\u85E4\u30ED\u30A4\u30C9\u0034", "", "", "", ""),
                        null, contentValuesForShiftJis, null, null)
                        null, mContentValuesForSJis, null, null)
                .addNodeWithOrder("SOUND",
                        "\uFF71\uFF9D\uFF84\uFF9E\uFF73\uFF9B\uFF72\uFF84\uFF9E\u0034;;;;",
                        null, null, contentValuesForShiftJis,
                        null, null, mContentValuesForSJis,
                        new TypeSet("X-IRMC-N"), null)
                .addNodeWithOrder("TEL", "13", new TypeSet("MODEM"))
                .addNodeWithOrder("TEL", "14", new TypeSet("PAGER"))
@@ -930,10 +916,10 @@ public class VCardImporterTests extends VCardTestsBase {
                .addNodeWithOrder("VERSION", "2.1")
                .addNodeWithOrder("N", "\u5B89\u85E4\u30ED\u30A4\u30C9\u0035;;;;",
                        Arrays.asList("\u5B89\u85E4\u30ED\u30A4\u30C9\u0035", "", "", "", ""),
                        null, contentValuesForShiftJis, null, null)
                        null, mContentValuesForSJis, null, null)
                .addNodeWithOrder("SOUND",
                        "\uFF71\uFF9D\uFF84\uFF9E\uFF73\uFF9B\uFF72\uFF84\uFF9E\u0035;;;;",
                        null, null, contentValuesForShiftJis,
                        null, null, mContentValuesForSJis,
                        new TypeSet("X-IRMC-N"), null)
                .addNodeWithOrder("TEL", "17", new TypeSet("X-NEC-BOY"))
                .addNodeWithOrder("TEL", "18", new TypeSet("X-NEC-FRIEND"))
+109 −0

File added.

Preview size limit exceeded, changes collapsed.

+32 −2

File changed.

Preview size limit exceeded, changes collapsed.

+2 −2

File changed.

Contains only whitespace changes.

+1 −1

File changed.

Contains only whitespace changes.

Loading