BaseContactsProvider2Test.java revision 28f8857b1b46bde18b85c6d3c2a63ac44c3c2e1c
1d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov/* 2d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * Copyright (C) 2009 The Android Open Source Project 3d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * 4d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 5d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * you may not use this file except in compliance with the License. 6d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * You may obtain a copy of the License at 7d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * 8d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 9d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * 10d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 11d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 12d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * See the License for the specific language governing permissions and 14d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * limitations under the License. 15d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov */ 1628f8857b1b46bde18b85c6d3c2a63ac44c3c2e1cEvan Millarpackage com.android.providers.contacts; 17d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 1828f8857b1b46bde18b85c6d3c2a63ac44c3c2e1cEvan Millarimport static com.android.providers.contacts.ContactsActor.PACKAGE_GREY; 19d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 2028f8857b1b46bde18b85c6d3c2a63ac44c3c2e1cEvan Millarimport com.android.providers.contacts.ContactsActor; 21bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar 22d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.content.ContentUris; 23d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.content.ContentValues; 24d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.database.Cursor; 25d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.net.Uri; 26d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.provider.ContactsContract.Aggregates; 27d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.provider.ContactsContract.AggregationExceptions; 28d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.provider.ContactsContract.Contacts; 29d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.provider.ContactsContract.Data; 30bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millarimport android.provider.ContactsContract.Presence; 31bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millarimport android.provider.ContactsContract.CommonDataKinds.Im; 32d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.StructuredName; 33a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.Email; 34a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.Nickname; 35bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikovimport android.provider.ContactsContract.CommonDataKinds.Phone; 36d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.test.AndroidTestCase; 37d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.test.mock.MockContentResolver; 38d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.test.suitebuilder.annotation.LargeTest; 39d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 40d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov/** 41d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov * A common superclass for {@link ContactsProvider2}-related tests. 42d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov */ 43d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov@LargeTest 44d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovpublic abstract class BaseContactsProvider2Test extends AndroidTestCase { 45d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 46d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected static final String PACKAGE = "ContactsProvider2Test"; 47d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 48d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov private ContactsActor mActor; 49d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected MockContentResolver mResolver; 50d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 51d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov @Override 52d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected void setUp() throws Exception { 53d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov super.setUp(); 54d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 55d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov mActor = new ContactsActor(getContext(), PACKAGE_GREY); 56d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov mResolver = mActor.resolver; 57d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 58d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 59d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected long createContact() { 60d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov ContentValues values = new ContentValues(); 61d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov values.put(Contacts.PACKAGE, mActor.packageName); 62d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov Uri contactUri = mResolver.insert(Contacts.CONTENT_URI, values); 63d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov return ContentUris.parseId(contactUri); 64d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 65d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 66d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected Uri insertStructuredName(long contactId, String givenName, String familyName) { 67d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov ContentValues values = new ContentValues(); 68d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov StringBuilder sb = new StringBuilder(); 69d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov if (givenName != null) { 70d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov sb.append(givenName); 71d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 72d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov if (givenName != null && familyName != null) { 73d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov sb.append(" "); 74d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 75d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov if (familyName != null) { 76d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov sb.append(familyName); 77d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 78d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov values.put(StructuredName.DISPLAY_NAME, sb.toString()); 79d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov values.put(StructuredName.GIVEN_NAME, givenName); 80d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov values.put(StructuredName.FAMILY_NAME, familyName); 81d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 824097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov return insertStructuredName(contactId, values); 834097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 844097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 854097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov protected Uri insertStructuredName(long contactId, ContentValues values) { 864097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov values.put(Data.CONTACT_ID, contactId); 874097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); 88d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov Uri resultUri = mResolver.insert(Data.CONTENT_URI, values); 89d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov return resultUri; 90d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 91d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 92bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov protected Uri insertPhoneNumber(long contactId, String phoneNumber) { 93bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov ContentValues values = new ContentValues(); 94bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov values.put(Data.CONTACT_ID, contactId); 95bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); 96bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov values.put(Phone.NUMBER, phoneNumber); 97bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov 98bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov Uri resultUri = mResolver.insert(Data.CONTENT_URI, values); 99bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov return resultUri; 100bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov } 101bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov 102a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov protected Uri insertEmail(long contactId, String email) { 103a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov ContentValues values = new ContentValues(); 104a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov values.put(Data.CONTACT_ID, contactId); 105a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE); 106a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov values.put(Email.DATA, email); 107a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov 108a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov Uri resultUri = mResolver.insert(Data.CONTENT_URI, values); 109a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov return resultUri; 110a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov } 111a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov 112a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov protected Uri insertNickname(long contactId, String nickname) { 113a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov ContentValues values = new ContentValues(); 114a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov values.put(Data.CONTACT_ID, contactId); 115a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov values.put(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE); 116a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov values.put(Nickname.NAME, nickname); 117a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov 118a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov Uri resultUri = mResolver.insert(Data.CONTENT_URI, values); 119a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov return resultUri; 120a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov } 121a5ad551e1753086825499f1aeb6415bb986f3588Dmitri Plotnikov 122bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar protected Uri insertPresence(int protocol, String handle, int presence) { 123bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar ContentValues values = new ContentValues(); 124bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar values.put(Presence.IM_PROTOCOL, protocol); 125bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar values.put(Presence.IM_HANDLE, handle); 126bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar values.put(Presence.PRESENCE_STATUS, presence); 127bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar 128bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar Uri resultUri = mResolver.insert(Presence.CONTENT_URI, values); 129bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar return resultUri; 130bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar } 131bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar 132bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar protected Uri insertImHandle(long contactId, int protocol, String handle) { 133bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar ContentValues values = new ContentValues(); 134bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar values.put(Data.CONTACT_ID, contactId); 135bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar values.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE); 136bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar values.put(Im.PROTOCOL, protocol); 137bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar values.put(Im.DATA, handle); 138bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar 139bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar Uri resultUri = mResolver.insert(Data.CONTENT_URI, values); 140bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar return resultUri; 141bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar } 142bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar 143d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected void setAggregationException(int type, long aggregateId, long contactId) { 144d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov ContentValues values = new ContentValues(); 145d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov values.put(AggregationExceptions.AGGREGATE_ID, aggregateId); 146d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov values.put(AggregationExceptions.CONTACT_ID, contactId); 147d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov values.put(AggregationExceptions.TYPE, type); 148d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov mResolver.update(AggregationExceptions.CONTENT_URI, values, null, null); 149d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 150d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 151d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected Cursor queryContact(long contactId) { 152d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov return mResolver.query(ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId), null, 153d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov null, null, null); 154d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 155d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 156d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected Cursor queryAggregate(long aggregateId) { 157d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov return mResolver.query(ContentUris.withAppendedId(Aggregates.CONTENT_URI, aggregateId), 158d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov null, null, null, null); 159d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 160d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 161bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar protected Cursor queryAggregateSummary(long aggregateId, String[] projection) { 162bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar return mResolver.query(ContentUris.withAppendedId(Aggregates.CONTENT_SUMMARY_URI, 163bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar aggregateId), projection, null, null, null); 164bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar } 165bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar 166bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar protected Cursor queryAggregateSummary() { 167bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar return mResolver.query(Aggregates.CONTENT_SUMMARY_URI, null, null, null, null); 168bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar } 169bc5c799a52b5bde2f273efd118ebe2228c3d8f15Evan Millar 170d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected long queryAggregateId(long contactId) { 171d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov Cursor c = queryContact(contactId); 172d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov assertTrue(c.moveToFirst()); 173d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov long aggregateId = c.getLong(c.getColumnIndex(Contacts.AGGREGATE_ID)); 174d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov c.close(); 175d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov return aggregateId; 176d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 177d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 178d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected String queryDisplayName(long aggregateId) { 179d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov Cursor c = queryAggregate(aggregateId); 180d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov assertTrue(c.moveToFirst()); 181d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov String displayName = c.getString(c.getColumnIndex(Aggregates.DISPLAY_NAME)); 182d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov c.close(); 183d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov return displayName; 184d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 185d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 186bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov protected void assertAggregated(long contactId1, long contactId2) { 187bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov long aggregateId1 = queryAggregateId(contactId1); 188bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov long aggregateId2 = queryAggregateId(contactId2); 189bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov assertTrue(aggregateId1 == aggregateId2); 190bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov } 191bf659107617a6291ba8bfeebc3f2e50138075ab5Dmitri Plotnikov 192d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected void assertAggregated(long contactId1, long contactId2, String expectedDisplayName) { 193d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov long aggregateId1 = queryAggregateId(contactId1); 194d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov long aggregateId2 = queryAggregateId(contactId2); 195d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov assertTrue(aggregateId1 == aggregateId2); 196d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 197d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov String displayName = queryDisplayName(aggregateId1); 198d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov assertEquals(expectedDisplayName, displayName); 199d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 200d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 201d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected void assertNotAggregated(long contactId1, long contactId2) { 202d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov long aggregateId1 = queryAggregateId(contactId1); 203d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov long aggregateId2 = queryAggregateId(contactId2); 204d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov assertTrue(aggregateId1 != aggregateId2); 205d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 2064097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 2074097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov protected void assertStructuredName(long contactId, String prefix, String givenName, 2084097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov String middleName, String familyName, String suffix) { 2094097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov Uri uri = Uri.withAppendedPath(ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId), 2104097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov Contacts.Data.CONTENT_DIRECTORY); 2114097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 2124097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov final String[] projection = new String[] { 2134097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov StructuredName.PREFIX, StructuredName.GIVEN_NAME, StructuredName.MIDDLE_NAME, 2144097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov StructuredName.FAMILY_NAME, StructuredName.SUFFIX 2154097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov }; 2164097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 2174097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov Cursor c = mResolver.query(uri, projection, Data.MIMETYPE + "='" 2184097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov + StructuredName.CONTENT_ITEM_TYPE + "'", null, null); 2194097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov 2204097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertTrue(c.moveToFirst()); 2214097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertEquals(prefix, c.getString(0)); 2224097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertEquals(givenName, c.getString(1)); 2234097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertEquals(middleName, c.getString(2)); 2244097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertEquals(familyName, c.getString(3)); 2254097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov assertEquals(suffix, c.getString(4)); 2264097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov c.close(); 2274097855e2d672b3f8e1c5c8a169efb80203bf53eDmitri Plotnikov } 228d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov} 229