summaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/providers/contacts
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2013-04-05 21:27:08 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-04-05 21:27:09 +0000
commit0c70f1701e264a0e79a14884f8396d2a2e4caacf (patch)
treea60f93237ed54354c694c713c891c2a2858b249b /tests/src/com/android/providers/contacts
parent0f4b7a9bfe4b2079a7c5bb22b4114b5672639b05 (diff)
parent216c434537d05a691add4e22ba3a9d958c976c1e (diff)
downloadpackages_providers_ContactsProvider-0c70f1701e264a0e79a14884f8396d2a2e4caacf.zip
packages_providers_ContactsProvider-0c70f1701e264a0e79a14884f8396d2a2e4caacf.tar.gz
packages_providers_ContactsProvider-0c70f1701e264a0e79a14884f8396d2a2e4caacf.tar.bz2
Merge "Provider side changes for exposing data usage stats" into jb-mr2-dev
Diffstat (limited to 'tests/src/com/android/providers/contacts')
-rw-r--r--tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java36
-rw-r--r--tests/src/com/android/providers/contacts/ContactsProvider2Test.java48
2 files changed, 83 insertions, 1 deletions
diff --git a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
index 384d547..8e763f1 100644
--- a/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java
@@ -17,6 +17,7 @@
package com.android.providers.contacts;
import static com.android.providers.contacts.ContactsActor.PACKAGE_GREY;
+import static com.android.providers.contacts.TestUtils.cv;
import android.accounts.Account;
import android.content.ContentProvider;
@@ -1112,6 +1113,22 @@ public abstract class BaseContactsProvider2Test extends PhotoLoadingTestCase {
assertTrue(message.toString(), result);
}
+ protected void assertCursorContains(Cursor cursor, ContentValues expectedValues) {
+ final StringBuilder message = new StringBuilder();
+ boolean found = false;
+ cursor.moveToPosition(-1);
+ while (cursor.moveToNext()) {
+ message.setLength(0);
+ final int pos = cursor.getPosition();
+ found = equalsWithExpectedValues(cursor, expectedValues, message);
+ if (found) {
+ break;
+ }
+ }
+ assertTrue("Expected values can not be found " + expectedValues + "," + message.toString(),
+ found);
+ }
+
protected void assertCursorValues(Cursor cursor, ContentValues... expectedValues) {
StringBuilder message = new StringBuilder();
@@ -1179,6 +1196,25 @@ public abstract class BaseContactsProvider2Test extends PhotoLoadingTestCase {
return true;
}
+ private static final String[] DATA_USAGE_PROJECTION =
+ new String[] {Data.DATA1, Data.TIMES_USED, Data.LAST_TIME_USED};
+
+ protected void assertDataUsageCursorContains(Uri uri, String data1, int timesUsed,
+ int lastTimeUsed) {
+ final Cursor cursor = mResolver.query(uri, DATA_USAGE_PROJECTION, null, null,
+ null);
+ try {
+ assertCursorContains(cursor,
+ cv(
+ Data.DATA1, data1,
+ Data.TIMES_USED, timesUsed,
+ Data.LAST_TIME_USED, lastTimeUsed)
+ );
+ } finally {
+ cursor.close();
+ }
+ }
+
private String[] buildProjection(ContentValues values) {
String[] projection = new String[values.size()];
Iterator<Entry<String, Object>> iter = values.valueSet().iterator();
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
index 84404b2..3f8b001 100644
--- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
@@ -32,7 +32,7 @@ import android.os.AsyncTask;
import android.provider.ContactsContract;
import android.provider.ContactsContract.AggregationExceptions;
import android.provider.ContactsContract.CommonDataKinds.Callable;
-import android.provider.ContactsContract.CommonDataKinds.Contactables;;
+import android.provider.ContactsContract.CommonDataKinds.Contactables;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
import android.provider.ContactsContract.CommonDataKinds.Im;
@@ -343,6 +343,8 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
Data.STATUS_RES_PACKAGE,
Data.STATUS_LABEL,
Data.STATUS_ICON,
+ Data.TIMES_USED,
+ Data.LAST_TIME_USED,
RawContacts.ACCOUNT_NAME,
RawContacts.ACCOUNT_TYPE,
RawContacts.DATA_SET,
@@ -424,6 +426,8 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
Data.STATUS_RES_PACKAGE,
Data.STATUS_LABEL,
Data.STATUS_ICON,
+ Data.TIMES_USED,
+ Data.LAST_TIME_USED,
RawContacts.RAW_CONTACT_IS_USER_PROFILE,
Contacts._ID,
Contacts.DISPLAY_NAME_PRIMARY,
@@ -2514,6 +2518,48 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
// Now we have only 1 frequent.
assertStoredValues(Contacts.CONTENT_FREQUENT_URI, new ContentValues[] {values1});
+
+ }
+
+ public void testQueryDataUsageStat() {
+ ContentValues values1 = new ContentValues();
+ final String email1 = "a@acme.com";
+ final long cid1 = createContact(values1, "Noah", "Tever", "18004664411",
+ email1, StatusUpdates.OFFLINE, 0, 0, 0, 0);
+
+ sMockClock.install();
+ sMockClock.setCurrentTimeMillis(100);
+
+ sendFeedback(email1, DataUsageFeedback.USAGE_TYPE_LONG_TEXT, values1);
+
+ assertDataUsageCursorContains(Data.CONTENT_URI, "a@acme.com", 1, 100);
+
+ sMockClock.setCurrentTimeMillis(111);
+ sendFeedback(email1, DataUsageFeedback.USAGE_TYPE_LONG_TEXT, values1);
+
+ assertDataUsageCursorContains(Data.CONTENT_URI, "a@acme.com", 2, 111);
+
+ sMockClock.setCurrentTimeMillis(123);
+ sendFeedback(email1, DataUsageFeedback.USAGE_TYPE_SHORT_TEXT, values1);
+
+ assertDataUsageCursorContains(Data.CONTENT_URI, "a@acme.com", 3, 123);
+
+ final Uri dataUriWithUsageTypeLongText = Data.CONTENT_URI.buildUpon().appendQueryParameter(
+ DataUsageFeedback.USAGE_TYPE, DataUsageFeedback.USAGE_TYPE_LONG_TEXT).build();
+
+ assertDataUsageCursorContains(dataUriWithUsageTypeLongText, "a@acme.com", 2, 111);
+
+ sMockClock.setCurrentTimeMillis(200);
+ sendFeedback(email1, DataUsageFeedback.USAGE_TYPE_CALL, values1);
+ sendFeedback(email1, DataUsageFeedback.USAGE_TYPE_CALL, values1);
+ sendFeedback(email1, DataUsageFeedback.USAGE_TYPE_CALL, values1);
+
+ assertDataUsageCursorContains(Data.CONTENT_URI, "a@acme.com", 6, 200);
+
+ final Uri dataUriWithUsageTypeCall = Data.CONTENT_URI.buildUpon().appendQueryParameter(
+ DataUsageFeedback.USAGE_TYPE, DataUsageFeedback.USAGE_TYPE_CALL).build();
+
+ assertDataUsageCursorContains(dataUriWithUsageTypeCall, "a@acme.com", 3, 200);
}
public void testQueryContactGroup() {