summaryrefslogtreecommitdiffstats
path: root/tests/AndroidTests/src/com/android
diff options
context:
space:
mode:
authorDaisuke Miyakawa <dmiyakawa@google.com>2009-11-16 15:58:32 +0900
committerDaisuke Miyakawa <dmiyakawa@google.com>2009-11-16 16:31:32 +0900
commit5a1f2d2de026b582fbe8b1a46a83ad33760a2c48 (patch)
tree306171225691aed3c9cac73be19ffd9af49c3249 /tests/AndroidTests/src/com/android
parente3cfe2d92868513c9524804a362c3c3c8b8cc4e5 (diff)
downloadframeworks_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')
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/vcard/PropertyNode.java41
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/vcard/VCardExporterTests.java56
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/vcard/VCardJapanizationTests.java122
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/vcard/VCardTestsBase.java50
-rw-r--r--tests/AndroidTests/src/com/android/unit_tests/vcard/VNodeBuilder.java6
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