diff options
author | Yorke Lee <yorkelee@google.com> | 2013-04-05 21:27:08 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-04-05 21:27:09 +0000 |
commit | 0c70f1701e264a0e79a14884f8396d2a2e4caacf (patch) | |
tree | a60f93237ed54354c694c713c891c2a2858b249b /tests/src/com/android | |
parent | 0f4b7a9bfe4b2079a7c5bb22b4114b5672639b05 (diff) | |
parent | 216c434537d05a691add4e22ba3a9d958c976c1e (diff) | |
download | packages_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')
-rw-r--r-- | tests/src/com/android/providers/contacts/BaseContactsProvider2Test.java | 36 | ||||
-rw-r--r-- | tests/src/com/android/providers/contacts/ContactsProvider2Test.java | 48 |
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() { |