diff options
author | Paul Soulos <psoulos@google.com> | 2014-07-28 14:12:23 -0700 |
---|---|---|
committer | Paul Soulos <psoulos@google.com> | 2014-07-28 14:12:23 -0700 |
commit | 45d8dd98608fe7dc65becf1b5e34e7ec8c097371 (patch) | |
tree | 4c2f837aeb472d3d76737b4b0a3ef01d5df92d5f /tests | |
parent | 11a6e970b215cd289b964c4c39db85906501a6c9 (diff) | |
download | android_packages_apps_ContactsCommon-45d8dd98608fe7dc65becf1b5e34e7ec8c097371.tar.gz android_packages_apps_ContactsCommon-45d8dd98608fe7dc65becf1b5e34e7ec8c097371.tar.bz2 android_packages_apps_ContactsCommon-45d8dd98608fe7dc65becf1b5e34e7ec8c097371.zip |
Adds tests and makes sure all DataItem types collapse correctly
Bug: 16517558
Change-Id: Ib819864dce11818861d455efbf2b9059d91f622c
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/com/android/contacts/common/model/dataitem/DataItemTests.java | 428 |
1 files changed, 412 insertions, 16 deletions
diff --git a/tests/src/com/android/contacts/common/model/dataitem/DataItemTests.java b/tests/src/com/android/contacts/common/model/dataitem/DataItemTests.java index 2bc0cab7..ec1a8dac 100644 --- a/tests/src/com/android/contacts/common/model/dataitem/DataItemTests.java +++ b/tests/src/com/android/contacts/common/model/dataitem/DataItemTests.java @@ -16,47 +16,443 @@ package com.android.contacts.common.model.dataitem; import android.content.ContentValues; +import android.provider.ContactsContract.CommonDataKinds.Email; +import android.provider.ContactsContract.CommonDataKinds.Event; +import android.provider.ContactsContract.CommonDataKinds.Im; +import android.provider.ContactsContract.CommonDataKinds.Nickname; +import android.provider.ContactsContract.CommonDataKinds.Note; +import android.provider.ContactsContract.CommonDataKinds.Organization; +import android.provider.ContactsContract.CommonDataKinds.Phone; +import android.provider.ContactsContract.CommonDataKinds.Relation; +import android.provider.ContactsContract.CommonDataKinds.SipAddress; +import android.provider.ContactsContract.CommonDataKinds.StructuredName; +import android.provider.ContactsContract.CommonDataKinds.StructuredPostal; +import android.provider.ContactsContract.CommonDataKinds.Website; import android.provider.ContactsContract.Contacts.Data; +import android.provider.ContactsContract.Contacts.Entity; import android.test.AndroidTestCase; import com.android.contacts.common.Collapser; +import com.android.contacts.common.model.account.AccountType.EditType; import com.android.contacts.common.model.account.BaseAccountType; +import com.android.contacts.common.model.account.GoogleAccountType; import com.android.contacts.common.model.dataitem.DataItem; import com.android.contacts.common.model.dataitem.DataKind; +import java.lang.Math; import java.util.ArrayList; +import java.util.List; /** * Test case for {@link DataItem}. */ public class DataItemTests extends AndroidTestCase { - public void testDataItemPrimaryCollapsing() { - ContentValues cv1 = new ContentValues(); - ContentValues cv2 = new ContentValues(); + private ContentValues mValues1; + private ContentValues mValues2; + private ContentValues mValues3; + private ContentValues mValues4; + private GoogleAccountType mGoogleAccountType; - cv1.put(Data._ID, 1); - cv2.put(Data._ID, 2); + @Override + protected void setUp() { + mValues1 = new ContentValues(); + mValues2 = new ContentValues(); + mValues3 = new ContentValues(); + mValues4 = new ContentValues(); - cv1.put(Data.IS_SUPER_PRIMARY, 1); - cv2.put(Data.IS_PRIMARY, 0); + mValues1.put(Data._ID, 1); + mValues2.put(Data._ID, 2); + mValues3.put(Data._ID, 3); + mValues4.put(Data._ID, 4); - DataItem data1 = DataItem.createFrom(cv1); - DataItem data2 = DataItem.createFrom(cv2); + mGoogleAccountType = new GoogleAccountType(getContext(), "packageName"); + } + + private List<DataItem> createDataItemsAndCollapse(DataKind kind, ContentValues... values) { + final List<DataItem> dataList = new ArrayList<>(values.length); + for (ContentValues value : values) { + final DataItem data = DataItem.createFrom(value); + data.setDataKind(kind); + dataList.add(data); + } + Collapser.collapseList(dataList, getContext()); + return dataList; + } + + public void testDataItemCollapsing_genericDataItemFields() { + mValues1.put(Data.IS_SUPER_PRIMARY, 1); + mValues2.put(Data.IS_PRIMARY, 0); + + mValues1.put(Entity.TIMES_USED, 5); + mValues2.put(Entity.TIMES_USED, 4); + + mValues1.put(Entity.LAST_TIME_USED, 555); + mValues2.put(Entity.LAST_TIME_USED, 999); - DataKind kind = new DataKind("test.mimetype", 0, 0, false); + final DataKind kind = new DataKind("test.mimetype", 0, 0, false); kind.actionBody = new BaseAccountType.SimpleInflater(0); - data1.setDataKind(kind); - data2.setDataKind(kind); + kind.typeList = new ArrayList<>(); + kind.typeList.add(new EditType(1, -1)); + kind.typeList.add(new EditType(2, -1)); + kind.typeColumn = Data.DATA2; - ArrayList<DataItem> dataList = new ArrayList<>(2); - dataList.add(data1); - dataList.add(data2); + mValues1.put(kind.typeColumn, 2); + mValues2.put(kind.typeColumn, 1); - Collapser.collapseList(dataList, getContext()); + final List<DataItem> dataList = createDataItemsAndCollapse(kind, mValues1, mValues2); assertEquals(1, dataList.size()); assertEquals(true, dataList.get(0).isSuperPrimary()); assertEquals(true, dataList.get(0).isPrimary()); + assertEquals(9, (int) dataList.get(0).getTimesUsed()); + assertEquals(999L, (long) dataList.get(0).getLastTimeUsed()); + assertEquals(1, dataList.get(0).getKindTypeColumn(kind)); + } + + public void testDataItemCollapsing_email() { + final String email1 = "email1@google.com"; + final String email2 = "email2@google.com"; + + mValues1.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE); + + mValues1.put(Email.ADDRESS, email1); + mValues2.put(Email.ADDRESS, email1); + mValues3.put(Email.ADDRESS, email2); + + mValues1.put(Email.TYPE, Email.TYPE_MOBILE); + mValues2.put(Email.TYPE, Email.TYPE_HOME); + mValues3.put(Email.TYPE, Email.TYPE_WORK); + + final DataKind kind = mGoogleAccountType.getKindForMimetype(Email.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3); + + assertEquals(2, dataList.size()); + assertEquals(email1, ((EmailDataItem) dataList.get(0)).getAddress()); + assertEquals(email2, ((EmailDataItem) dataList.get(1)).getAddress()); + assertEquals(Math.min(Email.TYPE_MOBILE, Email.TYPE_HOME), + ((EmailDataItem) dataList.get(0)).getKindTypeColumn(kind)); + } + + public void testDataItemCollapsing_event() { + final String date1 = "2014-01-01"; + final String date2 = "2014-02-02"; + final String customLabel1 = "custom label1"; + final String customLabel2 = "custom label2"; + + mValues1.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE); + mValues4.put(Data.MIMETYPE, Event.CONTENT_ITEM_TYPE); + + mValues1.put(Event.START_DATE, date1); + mValues2.put(Event.START_DATE, date1); + mValues3.put(Event.START_DATE, date1); + mValues4.put(Event.START_DATE, date2); + + mValues1.put(Event.TYPE, Event.TYPE_CUSTOM); + mValues2.put(Event.TYPE, Event.TYPE_CUSTOM); + mValues3.put(Event.TYPE, Event.TYPE_CUSTOM); + mValues4.put(Event.TYPE, Event.TYPE_ANNIVERSARY); + + mValues1.put(Event.LABEL, customLabel1); + mValues2.put(Event.LABEL, customLabel1); + mValues3.put(Event.LABEL, customLabel2); + + final DataKind kind = mGoogleAccountType.getKindForMimetype(Event.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3, mValues4); + + assertEquals(3, dataList.size()); + assertEquals(customLabel1, ((EventDataItem) dataList.get(0)).getLabel()); + assertEquals(customLabel2, ((EventDataItem) dataList.get(1)).getLabel()); + assertEquals(date2, ((EventDataItem) dataList.get(2)).getStartDate()); + } + + public void testDataItemCollapsing_im() { + final String address1 = "address 1"; + final String address2 = "address 2"; + final String customProtocol1 = "custom 1"; + final String customProtocol2 = "custom 2"; + + mValues1.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE); + mValues4.put(Data.MIMETYPE, Im.CONTENT_ITEM_TYPE); + + mValues1.put(Im.DATA, address1); + mValues2.put(Im.DATA, address1); + mValues3.put(Im.DATA, address1); + mValues4.put(Im.DATA, address2); + + mValues1.put(Im.PROTOCOL, Im.PROTOCOL_CUSTOM); + mValues2.put(Im.PROTOCOL, Im.PROTOCOL_CUSTOM); + mValues3.put(Im.PROTOCOL, Im.PROTOCOL_CUSTOM); + mValues4.put(Im.PROTOCOL, Im.PROTOCOL_AIM); + + mValues1.put(Im.CUSTOM_PROTOCOL, customProtocol1); + mValues2.put(Im.CUSTOM_PROTOCOL, customProtocol1); + mValues3.put(Im.CUSTOM_PROTOCOL, customProtocol2); + + final DataKind kind = mGoogleAccountType.getKindForMimetype(Im.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3, mValues4); + + assertEquals(3, dataList.size()); + assertEquals(address1, ((ImDataItem) dataList.get(0)).getData()); + assertEquals(address1, ((ImDataItem) dataList.get(1)).getData()); + assertEquals(address2, ((ImDataItem) dataList.get(2)).getData()); + + assertEquals(customProtocol1, ((ImDataItem) dataList.get(0)).getCustomProtocol()); + assertEquals(customProtocol2, ((ImDataItem) dataList.get(1)).getCustomProtocol()); + assertEquals(Im.PROTOCOL_AIM, (int) ((ImDataItem) dataList.get(2)).getProtocol()); + } + + public void testDataItemCollapsing_nickname() { + final String nickname1 = "nickname 1"; + final String nickname2 = "nickname 2"; + + mValues1.put(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, Nickname.CONTENT_ITEM_TYPE); + + mValues1.put(Nickname.NAME, nickname1); + mValues2.put(Nickname.NAME, nickname1); + mValues3.put(Nickname.NAME, nickname2); + + final DataKind kind = mGoogleAccountType.getKindForMimetype(Nickname.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3); + + assertEquals(2, dataList.size()); + assertEquals(nickname1, ((NicknameDataItem) dataList.get(0)).getName()); + assertEquals(nickname2, ((NicknameDataItem) dataList.get(1)).getName()); + } + + public void testDataItemCollapsing_note() { + final String note1 = "note 1"; + final String note2 = "note 2"; + + mValues1.put(Data.MIMETYPE, Note.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, Note.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, Note.CONTENT_ITEM_TYPE); + + mValues1.put(Note.NOTE, note1); + mValues2.put(Note.NOTE, note1); + mValues3.put(Note.NOTE, note2); + + DataKind kind = mGoogleAccountType.getKindForMimetype(Note.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3); + + assertEquals(2, dataList.size()); + assertEquals(note1, ((NoteDataItem) dataList.get(0)).getNote()); + assertEquals(note2, ((NoteDataItem) dataList.get(1)).getNote()); + } + + public void testDataItemCollapsing_organization() { + final String company1 = "company1"; + final String company2 = "company2"; + final String title1 = "title1"; + final String title2 = "title2"; + + mValues1.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE); + mValues4.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE); + + mValues1.put(Organization.COMPANY, company1); + mValues2.put(Organization.COMPANY, company1); + mValues3.put(Organization.COMPANY, company1); + mValues4.put(Organization.COMPANY, company2); + + mValues1.put(Organization.TITLE, title1); + mValues2.put(Organization.TITLE, title1); + mValues3.put(Organization.TITLE, title2); + mValues4.put(Organization.TITLE, title1); + + final DataKind kind = + mGoogleAccountType.getKindForMimetype(Organization.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3, mValues4); + + assertEquals(3, dataList.size()); + assertEquals(company1, ((OrganizationDataItem) dataList.get(0)).getCompany()); + assertEquals(company1, ((OrganizationDataItem) dataList.get(1)).getCompany()); + assertEquals(company2, ((OrganizationDataItem) dataList.get(2)).getCompany()); + + assertEquals(title1, ((OrganizationDataItem) dataList.get(0)).getTitle()); + assertEquals(title2, ((OrganizationDataItem) dataList.get(1)).getTitle()); + } + + public void testDataItemCollapsing_phone() { + final String phone1 = "111-111-1111"; + final String phone1a = "1111111111"; + final String phone2 = "222-222-2222"; + + mValues1.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); + + mValues1.put(Phone.NUMBER, phone1); + mValues2.put(Phone.NUMBER, phone1a); + mValues3.put(Phone.NUMBER, phone2); + + mValues1.put(Phone.TYPE, Phone.TYPE_MOBILE); + mValues2.put(Phone.TYPE, Phone.TYPE_HOME); + mValues3.put(Phone.TYPE, Phone.TYPE_WORK); + + final DataKind kind = mGoogleAccountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3); + assertEquals(2, dataList.size()); + assertEquals(phone1, ((PhoneDataItem) dataList.get(0)).getNumber()); + assertEquals(phone2, ((PhoneDataItem) dataList.get(1)).getNumber()); + assertEquals(Phone.TYPE_MOBILE, + ((PhoneDataItem) dataList.get(0)).getKindTypeColumn(kind)); + } + + public void testDataItemCollapsing_relation() { + final String name1 = "name1"; + final String name2 = "name2"; + final String customRelation1 = "custom relation 1"; + final String customRelation2 = "custom relation 2"; + + mValues1.put(Data.MIMETYPE, Relation.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, Relation.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, Relation.CONTENT_ITEM_TYPE); + mValues4.put(Data.MIMETYPE, Relation.CONTENT_ITEM_TYPE); + + mValues1.put(Relation.NAME, name1); + mValues2.put(Relation.NAME, name1); + mValues3.put(Relation.NAME, name1); + mValues4.put(Relation.NAME, name2); + + mValues1.put(Relation.TYPE, Relation.TYPE_CUSTOM); + mValues2.put(Relation.TYPE, Relation.TYPE_CUSTOM); + mValues3.put(Relation.TYPE, Relation.TYPE_CUSTOM); + mValues4.put(Relation.TYPE, Relation.TYPE_BROTHER); + + mValues1.put(Relation.LABEL, customRelation1); + mValues2.put(Relation.LABEL, customRelation1); + mValues3.put(Relation.LABEL, customRelation2); + + final DataKind kind = mGoogleAccountType.getKindForMimetype(Relation.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3, mValues4); + + assertEquals(3, dataList.size()); + assertEquals(name1, ((RelationDataItem) dataList.get(0)).getName()); + assertEquals(name2, ((RelationDataItem) dataList.get(2)).getName()); + + assertEquals(customRelation1, ((RelationDataItem) dataList.get(0)).getLabel()); + assertEquals(customRelation2, ((RelationDataItem) dataList.get(1)).getLabel()); + } + + public void testDataItemCollapsing_sip() { + final String sip1 = "sip 1"; + final String sip2 = "sip 2"; + + mValues1.put(Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, SipAddress.CONTENT_ITEM_TYPE); + + mValues1.put(SipAddress.SIP_ADDRESS, sip1); + mValues2.put(SipAddress.SIP_ADDRESS, sip1); + mValues3.put(SipAddress.SIP_ADDRESS, sip2); + + mValues1.put(SipAddress.TYPE, SipAddress.TYPE_WORK); + mValues2.put(SipAddress.TYPE, SipAddress.TYPE_HOME); + mValues3.put(SipAddress.TYPE, SipAddress.TYPE_WORK); + + final DataKind kind = mGoogleAccountType.getKindForMimetype(SipAddress.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3); + + assertEquals(2, dataList.size()); + assertEquals(sip1, ((SipAddressDataItem) dataList.get(0)).getSipAddress()); + assertEquals(sip2, ((SipAddressDataItem) dataList.get(1)).getSipAddress()); + } + + public void testDataItemCollapsing_structuredName() { + final String displayName1 = "Display Name 1"; + final String displayName2 = "Display Name 2"; + + mValues1.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); + + mValues1.put(StructuredName.DISPLAY_NAME, displayName1); + mValues2.put(StructuredName.DISPLAY_NAME, displayName1); + mValues3.put(StructuredName.DISPLAY_NAME, displayName2); + + final DataKind kind = + mGoogleAccountType.getKindForMimetype(StructuredName.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3); + + assertEquals(2, dataList.size()); + assertEquals(displayName1, ((StructuredNameDataItem) dataList.get(0)).getDisplayName()); + assertEquals(displayName2, ((StructuredNameDataItem) dataList.get(1)).getDisplayName()); + } + + public void testDataItemCollapsing_structuredPostal() { + final String formattedAddress1 = "Formatted Address 1"; + final String formattedAddress2 = "Formatted Address 2"; + + mValues1.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE); + + mValues1.put(StructuredPostal.FORMATTED_ADDRESS, formattedAddress1); + mValues2.put(StructuredPostal.FORMATTED_ADDRESS, formattedAddress1); + mValues3.put(StructuredPostal.FORMATTED_ADDRESS, formattedAddress2); + + final DataKind kind = + mGoogleAccountType.getKindForMimetype(StructuredPostal.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3); + + assertEquals(2, dataList.size()); + assertEquals(formattedAddress1, + ((StructuredPostalDataItem) dataList.get(0)).getFormattedAddress()); + assertEquals(formattedAddress2, + ((StructuredPostalDataItem) dataList.get(1)).getFormattedAddress()); + } + + public void testDataItemCollapsing_website() { + final String url1 = "www.url1.com"; + final String url2 = "www.url2.com"; + + mValues1.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE); + mValues2.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE); + mValues3.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE); + + mValues1.put(Website.URL, url1); + mValues2.put(Website.URL, url1); + mValues3.put(Website.URL, url2); + + final DataKind kind = mGoogleAccountType.getKindForMimetype(Website.CONTENT_ITEM_TYPE); + + final List<DataItem> dataList = + createDataItemsAndCollapse(kind, mValues1, mValues2, mValues3); + + assertEquals(2, dataList.size()); + assertEquals(url1, ((WebsiteDataItem) dataList.get(0)).getUrl()); + assertEquals(url2, ((WebsiteDataItem) dataList.get(1)).getUrl()); } } |