diff options
author | Daisuke Miyakawa <dmiyakawa@google.com> | 2009-11-16 15:58:32 +0900 |
---|---|---|
committer | Daisuke Miyakawa <dmiyakawa@google.com> | 2009-11-16 16:31:32 +0900 |
commit | 5a1f2d2de026b582fbe8b1a46a83ad33760a2c48 (patch) | |
tree | 306171225691aed3c9cac73be19ffd9af49c3249 /tests/AndroidTests/src/com/android | |
parent | e3cfe2d92868513c9524804a362c3c3c8b8cc4e5 (diff) | |
download | frameworks_base-5a1f2d2de026b582fbe8b1a46a83ad33760a2c48.zip frameworks_base-5a1f2d2de026b582fbe8b1a46a83ad33760a2c48.tar.gz frameworks_base-5a1f2d2de026b582fbe8b1a46a83ad33760a2c48.tar.bz2 |
Rename several files so that readers would not be confused.
Add unit tests around Phone-number handling and fix some bugs.
Internal issue number: 2195990
Diffstat (limited to 'tests/AndroidTests/src/com/android')
5 files changed, 242 insertions, 33 deletions
diff --git a/tests/AndroidTests/src/com/android/unit_tests/vcard/PropertyNode.java b/tests/AndroidTests/src/com/android/unit_tests/vcard/PropertyNode.java index d93a41b..89134a1 100644 --- a/tests/AndroidTests/src/com/android/unit_tests/vcard/PropertyNode.java +++ b/tests/AndroidTests/src/com/android/unit_tests/vcard/PropertyNode.java @@ -16,7 +16,8 @@ package com.android.unit_tests.vcard; import android.content.ContentValues; -import android.pim.vcard.ContactStruct; +import android.pim.vcard.VCardEntry; +import android.util.Log; import java.util.ArrayList; import java.util.Arrays; @@ -28,7 +29,7 @@ import java.util.Set; * Previously used in main vCard handling code but now exists only for testing. * * Especially useful for testing parser code (VCardParser), since all properties can be - * checked via this class unlike {@link ContactStruct}, which only emits the result of + * checked via this class unlike {@link VCardEntry}, which only emits the result of * interpretation of the content of each vCard. We cannot know whether vCard parser or * ContactStruct is wrong withouth this class. */ @@ -123,7 +124,10 @@ public class PropertyNode { return false; } else if (!paramMap.equals(node.paramMap)) { return false; - } else if (!paramMap_TYPE.equals(node.paramMap_TYPE)) { + } else if (!(paramMap_TYPE.size() == node.paramMap_TYPE.size()) && + !paramMap_TYPE.equals(node.paramMap_TYPE)) { + Log.d("@@@", "paramMap_Type: " + paramMap_TYPE.size() + ", " + + node.paramMap_TYPE.size()); return false; } else if (!propGroupSet.equals(node.propGroupSet)) { return false; @@ -154,10 +158,33 @@ public class PropertyNode { builder.append(propName); builder.append(", paramMap: "); builder.append(paramMap.toString()); - builder.append(", propmMap_TYPE: "); - builder.append(paramMap_TYPE.toString()); - builder.append(", propGroupSet: "); - builder.append(propGroupSet.toString()); + builder.append(", paramMap_TYPE: ["); + boolean first = true; + for (String elem : paramMap_TYPE) { + if (first) { + first = false; + } else { + builder.append(", "); + } + builder.append('"'); + builder.append(elem); + builder.append('"'); + } + builder.append("]"); + if (!propGroupSet.isEmpty()) { + builder.append(", propGroupSet: ["); + for (String elem : propGroupSet) { + if (first) { + first = false; + } else { + builder.append(", "); + } + builder.append('"'); + builder.append(elem); + builder.append('"'); + } + builder.append("]"); + } if (propValue_vector != null && propValue_vector.size() > 1) { builder.append(", propValue_vector size: "); builder.append(propValue_vector.size()); diff --git a/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardExporterTests.java b/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardExporterTests.java index c8289dc..c1727de 100644 --- a/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardExporterTests.java +++ b/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardExporterTests.java @@ -419,6 +419,62 @@ public class VCardExporterTests extends VCardTestsBase { testPhonePrefHandlingCommon(V30); } + private void testMiscPhoneTypeHandling(int vcardType) { + ExportTestResolver resolver = new ExportTestResolver(); + ContactEntry entry = resolver.buildContactEntry(); + entry.buildData(Phone.CONTENT_ITEM_TYPE) + .put(Phone.NUMBER, "1") + .put(Phone.TYPE, Phone.TYPE_CUSTOM) + .put(Phone.LABEL, "Modem"); + entry.buildData(Phone.CONTENT_ITEM_TYPE) + .put(Phone.NUMBER, "2") + .put(Phone.TYPE, Phone.TYPE_CUSTOM) + .put(Phone.LABEL, "MSG"); + entry.buildData(Phone.CONTENT_ITEM_TYPE) + .put(Phone.NUMBER, "3") + .put(Phone.TYPE, Phone.TYPE_CUSTOM) + .put(Phone.LABEL, "BBS"); + entry.buildData(Phone.CONTENT_ITEM_TYPE) + .put(Phone.NUMBER, "4") + .put(Phone.TYPE, Phone.TYPE_CUSTOM) + .put(Phone.LABEL, "VIDEO"); + entry.buildData(Phone.CONTENT_ITEM_TYPE) + .put(Phone.NUMBER, "5") + .put(Phone.TYPE, Phone.TYPE_CUSTOM); + entry.buildData(Phone.CONTENT_ITEM_TYPE) + .put(Phone.NUMBER, "6") + .put(Phone.TYPE, Phone.TYPE_CUSTOM) + .put(Phone.LABEL, "_AUTO_CELL"); // The old indicator for the type mobile. + entry.buildData(Phone.CONTENT_ITEM_TYPE) + .put(Phone.NUMBER, "7") + .put(Phone.TYPE, Phone.TYPE_CUSTOM) + .put(Phone.LABEL, "\u643A\u5E2F"); // Mobile phone in Japanese Kanji + entry.buildData(Phone.CONTENT_ITEM_TYPE) + .put(Phone.NUMBER, "8") + .put(Phone.TYPE, Phone.TYPE_CUSTOM) + .put(Phone.LABEL, "invalid"); + + VCardVerifier verifier = new VCardVerifier(resolver, vcardType); + PropertyNodesVerifierElem elem = verifier.addPropertyNodesVerifierElemWithEmptyName(); + elem.addNodeWithoutOrder("TEL", "1", new TypeSet("MODEM")) + .addNodeWithoutOrder("TEL", "2", new TypeSet("MSG")) + .addNodeWithoutOrder("TEL", "3", new TypeSet("BBS")) + .addNodeWithoutOrder("TEL", "4", new TypeSet("VIDEO")) + .addNodeWithoutOrder("TEL", "5", new TypeSet("VOICE")) + .addNodeWithoutOrder("TEL", "6", new TypeSet("CELL")) + .addNodeWithoutOrder("TEL", "7", new TypeSet("CELL")) + .addNodeWithoutOrder("TEL", "8", new TypeSet("X-invalid")); + verifier.verify(); + } + + public void testPhoneTypeHandlingV21() { + testMiscPhoneTypeHandling(V21); + } + + public void testPhoneTypeHandlingV30() { + testMiscPhoneTypeHandling(V30); + } + private void testEmailBasicCommon(int version) { ExportTestResolver resolver = new ExportTestResolver(); resolver.buildContactEntry().buildData(Email.CONTENT_ITEM_TYPE) diff --git a/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardJapanizationTests.java b/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardJapanizationTests.java index 70e4966..e561782 100644 --- a/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardJapanizationTests.java +++ b/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardJapanizationTests.java @@ -19,6 +19,7 @@ package com.android.unit_tests.vcard; import android.content.ContentValues; import android.pim.vcard.VCardConfig; import android.provider.ContactsContract.CommonDataKinds.StructuredName; +import android.provider.ContactsContract.CommonDataKinds.StructuredPostal; import com.android.unit_tests.vcard.PropertyNodesVerifierElem.TypeSet; @@ -204,4 +205,125 @@ public class VCardJapanizationTests extends VCardTestsBase { .put(StructuredName.DISPLAY_NAME, "\uFF94\uFF8F\uFF80\uFF9E \uFF80\uFF9B\uFF73"); verifier.verify(); } + + /** + * Verifies that only one address field is emitted toward DoCoMo phones. + * Prefered type must (should?) be: HOME > WORK > OTHER > CUSTOM + */ + public void testAdrressFieldEmittionForDoCoMo_1() { + ExportTestResolver resolver = new ExportTestResolver(); + ContactEntry entry = resolver.buildContactEntry(); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK) + .put(StructuredPostal.POBOX, "1"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER) + .put(StructuredPostal.POBOX, "2"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME) + .put(StructuredPostal.POBOX, "3"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM) + .put(StructuredPostal.LABEL, "custom") + .put(StructuredPostal.POBOX, "4"); + + VCardVerifier verifier = new VCardVerifier(resolver, VCardConfig.VCARD_TYPE_DOCOMO); + verifier.addPropertyNodesVerifierElemWithEmptyName() + .addNodeWithoutOrder("TEL", "", new TypeSet("HOME")) + .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME")) + .addNodeWithoutOrder("X-CLASS", "PUBLIC") + .addNodeWithoutOrder("X-REDUCTION", "") + .addNodeWithoutOrder("X-NO", "") + .addNodeWithoutOrder("X-DCM-HMN-MODE", "") + .addNodeWithoutOrder("ADR", + Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME")); + verifier.verify(); + } + + public void testAdrressFieldEmittionForDoCoMo_2() { + ExportTestResolver resolver = new ExportTestResolver(); + ContactEntry entry = resolver.buildContactEntry(); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER) + .put(StructuredPostal.POBOX, "1"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK) + .put(StructuredPostal.POBOX, "2"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM) + .put(StructuredPostal.LABEL, "custom") + .put(StructuredPostal.POBOX, "3"); + + VCardVerifier verifier = new VCardVerifier(resolver, VCardConfig.VCARD_TYPE_DOCOMO); + verifier.addPropertyNodesVerifierElemWithEmptyName() + .addNodeWithoutOrder("TEL", "", new TypeSet("HOME")) + .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME")) + .addNodeWithoutOrder("X-CLASS", "PUBLIC") + .addNodeWithoutOrder("X-REDUCTION", "") + .addNodeWithoutOrder("X-NO", "") + .addNodeWithoutOrder("X-DCM-HMN-MODE", "") + .addNodeWithoutOrder("ADR", + Arrays.asList("2", "", "", "", "", "", ""), new TypeSet("WORK")); + verifier.verify(); + } + + public void testAdrressFieldEmittionForDoCoMo_3() { + ExportTestResolver resolver = new ExportTestResolver(); + ContactEntry entry = resolver.buildContactEntry(); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM) + .put(StructuredPostal.LABEL, "custom1") + .put(StructuredPostal.POBOX, "1"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER) + .put(StructuredPostal.POBOX, "2"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_CUSTOM) + .put(StructuredPostal.LABEL, "custom2") + .put(StructuredPostal.POBOX, "3"); + + VCardVerifier verifier = new VCardVerifier(resolver, VCardConfig.VCARD_TYPE_DOCOMO); + verifier.addPropertyNodesVerifierElemWithEmptyName() + .addNodeWithoutOrder("TEL", "", new TypeSet("HOME")) + .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME")) + .addNodeWithoutOrder("X-CLASS", "PUBLIC") + .addNodeWithoutOrder("X-REDUCTION", "") + .addNodeWithoutOrder("X-NO", "") + .addNodeWithoutOrder("X-DCM-HMN-MODE", "") + .addNodeWithoutOrder("ADR", Arrays.asList("2", "", "", "", "", "", "")); + verifier.verify(); + } + + /** + * Verifies the vCard exporter tolerates null TYPE. + */ + public void testAdrressFieldEmittionForDoCoMo_4() { + ExportTestResolver resolver = new ExportTestResolver(); + ContactEntry entry = resolver.buildContactEntry(); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.POBOX, "1"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_OTHER) + .put(StructuredPostal.POBOX, "2"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME) + .put(StructuredPostal.POBOX, "3"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK) + .put(StructuredPostal.POBOX, "4"); + entry.buildData(StructuredPostal.CONTENT_ITEM_TYPE) + .put(StructuredPostal.POBOX, "5"); + + VCardVerifier verifier = new VCardVerifier(resolver, VCardConfig.VCARD_TYPE_DOCOMO); + verifier.addPropertyNodesVerifierElemWithEmptyName() + .addNodeWithoutOrder("TEL", "", new TypeSet("HOME")) + .addNodeWithoutOrder("EMAIL", "", new TypeSet("HOME")) + .addNodeWithoutOrder("X-CLASS", "PUBLIC") + .addNodeWithoutOrder("X-REDUCTION", "") + .addNodeWithoutOrder("X-NO", "") + .addNodeWithoutOrder("X-DCM-HMN-MODE", "") + .addNodeWithoutOrder("ADR", + Arrays.asList("3", "", "", "", "", "", ""), new TypeSet("HOME")); + verifier.verify(); + } }
\ No newline at end of file diff --git a/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardTestsBase.java b/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardTestsBase.java index af8b718..6590855 100644 --- a/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardTestsBase.java +++ b/tests/AndroidTests/src/com/android/unit_tests/vcard/VCardTestsBase.java @@ -33,14 +33,14 @@ import android.net.Uri; import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.os.RemoteException; -import android.pim.vcard.ContactStruct; -import android.pim.vcard.EntryCommitter; -import android.pim.vcard.EntryHandler; -import android.pim.vcard.VCardBuilder; -import android.pim.vcard.VCardBuilderCollection; +import android.pim.vcard.VCardEntry; +import android.pim.vcard.VCardEntryCommitter; +import android.pim.vcard.VCardEntryHandler; +import android.pim.vcard.VCardInterpreter; +import android.pim.vcard.VCardInterPreterCollection; import android.pim.vcard.VCardComposer; import android.pim.vcard.VCardConfig; -import android.pim.vcard.VCardDataBuilder; +import android.pim.vcard.VCardEntryConstructor; import android.pim.vcard.VCardParser; import android.pim.vcard.VCardParser_V21; import android.pim.vcard.VCardParser_V30; @@ -385,11 +385,11 @@ class CustomMockContext extends MockContext { class ImportVerifierElem { private final ImportTestResolver mResolver; - private final EntryHandler mHandler; + private final VCardEntryHandler mHandler; public ImportVerifierElem() { mResolver = new ImportTestResolver(); - mHandler = new EntryCommitter(mResolver); + mHandler = new VCardEntryCommitter(mResolver); } public ContentValuesBuilder addExpected(String mimeType) { @@ -411,8 +411,8 @@ class CustomMockContext extends MockContext { } else { vCardParser = new VCardParser_V21(); } - VCardDataBuilder builder = - new VCardDataBuilder(null, null, false, vCardType, null); + VCardEntryConstructor builder = + new VCardEntryConstructor(null, null, false, vCardType, null); builder.addEntryHandler(mHandler); try { vCardParser.parse(is, builder); @@ -432,19 +432,19 @@ class CustomMockContext extends MockContext { } public void onParsingStart() { - mHandler.onParsingStart(); + mHandler.onStart(); } - public void onEntryCreated(ContactStruct entry) { + public void onEntryCreated(VCardEntry entry) { mHandler.onEntryCreated(entry); } public void onParsingEnd() { - mHandler.onParsingEnd(); + mHandler.onEnd(); } } - class ImportVerifier implements EntryHandler { + class ImportVerifier implements VCardEntryHandler { private List<ImportVerifierElem> mImportVerifierElemList = new ArrayList<ImportVerifierElem>(); private int mIndex; @@ -476,8 +476,8 @@ class CustomMockContext extends MockContext { public void verify(InputStream is, int vCardType, final VCardParser vCardParser) throws IOException, VCardException { - VCardDataBuilder builder = - new VCardDataBuilder(null, null, false, vCardType, null); + VCardEntryConstructor builder = + new VCardEntryConstructor(null, null, false, vCardType, null); builder.addEntryHandler(this); try { vCardParser.parse(is, builder); @@ -491,19 +491,19 @@ class CustomMockContext extends MockContext { } } - public void onParsingStart() { + public void onStart() { for (ImportVerifierElem elem : mImportVerifierElemList) { elem.onParsingStart(); } } - public void onEntryCreated(ContactStruct entry) { + public void onEntryCreated(VCardEntry entry) { assertTrue(mIndex < mImportVerifierElemList.size()); mImportVerifierElemList.get(mIndex).onEntryCreated(entry); mIndex++; } - public void onParsingEnd() { + public void onEnd() { for (ImportVerifierElem elem : mImportVerifierElemList) { elem.onParsingEnd(); elem.verifyResolver(); @@ -802,6 +802,7 @@ class CustomMockContext extends MockContext { private final ExportTestResolver mResolver; private final int mVCardType; private final boolean mIsV30; + private final boolean mIsDoCoMo; // To allow duplication, use list instead of set. // When null, we don't need to do the verification. @@ -813,6 +814,7 @@ class CustomMockContext extends MockContext { mVCardVerifierInternal = new VCardVerifierInternal(); mResolver = resolver; mIsV30 = VCardConfig.isV30(vcardType); + mIsDoCoMo = VCardConfig.isDoCoMo(vcardType); mVCardType = vcardType; } @@ -831,6 +833,8 @@ class CustomMockContext extends MockContext { PropertyNodesVerifierElem elem = addPropertyNodesVerifierElem(); if (mIsV30) { elem.addNodeWithOrder("N", "").addNodeWithOrder("FN", ""); + } else if (mIsDoCoMo) { + elem.addNodeWithOrder("N", ""); } return elem; } @@ -852,14 +856,14 @@ class CustomMockContext extends MockContext { private void verifyOneVCard(final String vcard) { // Log.d("@@@", vcard); - final VCardBuilder builder; + final VCardInterpreter builder; if (mImportVerifier != null) { final VNodeBuilder vnodeBuilder = mPropertyNodesVerifier; - final VCardDataBuilder vcardDataBuilder = - new VCardDataBuilder(mVCardType); + final VCardEntryConstructor vcardDataBuilder = + new VCardEntryConstructor(mVCardType); vcardDataBuilder.addEntryHandler(mImportVerifier); if (mPropertyNodesVerifier != null) { - builder = new VCardBuilderCollection(Arrays.asList( + builder = new VCardInterPreterCollection(Arrays.asList( mPropertyNodesVerifier, vcardDataBuilder)); } else { builder = vnodeBuilder; diff --git a/tests/AndroidTests/src/com/android/unit_tests/vcard/VNodeBuilder.java b/tests/AndroidTests/src/com/android/unit_tests/vcard/VNodeBuilder.java index ce4de03..c38b54c 100644 --- a/tests/AndroidTests/src/com/android/unit_tests/vcard/VNodeBuilder.java +++ b/tests/AndroidTests/src/com/android/unit_tests/vcard/VNodeBuilder.java @@ -16,7 +16,7 @@ package com.android.unit_tests.vcard; import android.content.ContentValues; -import android.pim.vcard.VCardBuilder; +import android.pim.vcard.VCardInterpreter; import android.pim.vcard.VCardConfig; import android.util.CharsetUtils; import android.util.Log; @@ -39,8 +39,8 @@ import java.util.List; * * Previously used in main vCard handling code but now exists only for testing. */ -public class VNodeBuilder implements VCardBuilder { - static private String LOG_TAG = "VDATABuilder"; +public class VNodeBuilder implements VCardInterpreter { + static private String LOG_TAG = "VNodeBuilder"; /** * If there's no other information available, this class uses this charset for encoding |