diff options
author | Chiao Cheng <chiaocheng@google.com> | 2012-08-01 15:52:11 -0700 |
---|---|---|
committer | Chiao Cheng <chiaocheng@google.com> | 2012-08-03 18:17:39 -0700 |
commit | 143bb522fcfb4a08c7f112876f3fac1cf47cf5ae (patch) | |
tree | a38deff71db8b4072ec2060cda44cf84ffcf6bb7 /tests/src/com/android/providers/contacts/CallLogProviderTest.java | |
parent | 86245a3511a2aaebe50c25c89170b5bb0d6cb501 (diff) | |
download | packages_providers_ContactsProvider-143bb522fcfb4a08c7f112876f3fac1cf47cf5ae.zip packages_providers_ContactsProvider-143bb522fcfb4a08c7f112876f3fac1cf47cf5ae.tar.gz packages_providers_ContactsProvider-143bb522fcfb4a08c7f112876f3fac1cf47cf5ae.tar.bz2 |
Adding limit and offset parameters to calllog provider.
Allow client to pass in limit and offset parameters in uri.
Bug: 6849968
Change-Id: I535086449bfa76a5d8bc66567070141b76d19503
Diffstat (limited to 'tests/src/com/android/providers/contacts/CallLogProviderTest.java')
-rw-r--r-- | tests/src/com/android/providers/contacts/CallLogProviderTest.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/src/com/android/providers/contacts/CallLogProviderTest.java b/tests/src/com/android/providers/contacts/CallLogProviderTest.java index 05f8c25..fc33e28 100644 --- a/tests/src/com/android/providers/contacts/CallLogProviderTest.java +++ b/tests/src/com/android/providers/contacts/CallLogProviderTest.java @@ -209,6 +209,66 @@ public class CallLogProviderTest extends BaseContactsProvider2Test { assertEquals(3, getCount(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null)); } + public void testLimitParamReturnsCorrectLimit() { + for (int i=0; i<10; i++) { + insertCallRecord(); + } + Uri uri = Calls.CONTENT_URI.buildUpon() + .appendQueryParameter(Calls.LIMIT_PARAM_KEY, "4") + .build(); + assertEquals(4, getCount(uri, null, null)); + } + + public void testLimitAndOffsetParamReturnsCorrectEntries() { + for (int i=0; i<10; i++) { + mResolver.insert(Calls.CONTENT_URI, getDefaultValues(Calls.INCOMING_TYPE)); + } + for (int i=0; i<10; i++) { + mResolver.insert(Calls.CONTENT_URI, getDefaultValues(Calls.MISSED_TYPE)); + } + // Limit 4 records. Discard first 8. + Uri uri = Calls.CONTENT_URI.buildUpon() + .appendQueryParameter(Calls.LIMIT_PARAM_KEY, "4") + .appendQueryParameter(Calls.OFFSET_PARAM_KEY, "8") + .build(); + String[] projection = new String[] {Calls._ID, Calls.TYPE}; + Cursor c = mResolver.query(uri, projection, null, null, null); + try { + // First two should be incoming, next two should be missed. + for (int i = 0; i < 2; i++) { + c.moveToNext(); + assertEquals(Calls.INCOMING_TYPE, c.getInt(1)); + } + for (int i = 0; i < 2; i++) { + c.moveToNext(); + assertEquals(Calls.MISSED_TYPE, c.getInt(1)); + } + } finally { + c.close(); + } + } + + public void testUriWithBadLimitParamThrowsException() { + assertParamThrowsIllegalArgumentException(Calls.LIMIT_PARAM_KEY, "notvalid"); + } + + public void testUriWithBadOffsetParamThrowsException() { + assertParamThrowsIllegalArgumentException(Calls.OFFSET_PARAM_KEY, "notvalid"); + } + + private void assertParamThrowsIllegalArgumentException(String key, String value) { + Uri uri = Calls.CONTENT_URI.buildUpon() + .appendQueryParameter(key, value) + .build(); + try { + mResolver.query(uri, null, null, null, null); + fail(); + } catch (IllegalArgumentException e) { + assertTrue("Error does not contain value in question.", + e.toString().contains(value)); + } + } + // Test to check that none of the voicemail provider specific fields are // insertable through call_log provider. public void testCannotAccessVoicemailSpecificFields_Insert() { |