Updating preferredName methods to accept ContactsPreferences
Rather than accepting an int, this method accepts a nullable
ContactsPreferences object to abstract the null checks that would
otherwise be needed everywhere these utility methods are used.
Bug=26822105
Change-Id: Id41a182a70098ab2898938588f86f54e16c597b7
diff --git a/src/com/android/contacts/common/util/ContactDisplayUtils.java b/src/com/android/contacts/common/util/ContactDisplayUtils.java
index e054acb..0a50748 100644
--- a/src/com/android/contacts/common/util/ContactDisplayUtils.java
+++ b/src/com/android/contacts/common/util/ContactDisplayUtils.java
@@ -22,6 +22,7 @@
import android.content.Context;
import android.content.res.Resources;
+import android.support.annotation.Nullable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
@@ -240,26 +241,26 @@
}
/**
- * Returns either namePrimary or nameAlternative based on the value of displayOrderPreference
+ * Returns either namePrimary or nameAlternative based on the {@link ContactsPreferences}.
+ * Defaults to the name that is non-null.
*
- * In the event that nameAlternative is empty or displayOrderPreference is neither
- * {@link ContactsPreferences#DISPLAY_ORDER_PRIMARY} nor
- * {@link ContactsPreferences#DISPLAY_ORDER_ALTERNATIVE}, namePrimary is returned
- *
- * @param namePrimary the primary name
- * @param nameAlternative the alternative name
- * @param displayOrderPreference one of {@link ContactsPreferences#DISPLAY_ORDER_PRIMARY} or
- * {@link ContactsPreferences#DISPLAY_ORDER_ALTERNATIVE}
- * @return namePrimary or nameAlternative depending on the value of displayOrderPreference
+ * @param namePrimary the primary name.
+ * @param nameAlternative the alternative name.
+ * @param contactsPreferences the ContactsPreferences used to determine the preferred
+ * display name.
+ * @return namePrimary or nameAlternative depending on the value of displayOrderPreference.
*/
public static String getPreferredDisplayName(String namePrimary, String nameAlternative,
- int displayOrderPreference) {
- if (displayOrderPreference == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+ @Nullable ContactsPreferences contactsPreferences) {
+ if (contactsPreferences == null) {
+ return namePrimary != null ? namePrimary : nameAlternative;
+ }
+ if (contactsPreferences.getDisplayOrder() == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
return namePrimary;
}
- if (displayOrderPreference == ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE &&
- !TextUtils.isEmpty(nameAlternative)) {
+ if (contactsPreferences.getDisplayOrder() == ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE
+ && !TextUtils.isEmpty(nameAlternative)) {
return nameAlternative;
}
@@ -267,25 +268,26 @@
}
/**
- * Returns either namePrimary or nameAlternative based on the value of sortOrderPreference
+ * Returns either namePrimary or nameAlternative based on the {@link ContactsPreferences}.
+ * Defaults to the name that is non-null.
*
- * In the event that nameAlternative is empty or sortOrderPreference is neither
- * {@link ContactsPreferences#SORT_ORDER_PRIMARY} nor
- * {@link ContactsPreferences#SORT_ORDER_ALTERNATIVE}, namePrimary is returned
- *
- * @param namePrimary the primary name
- * @param nameAlternative the alternative name
- * @param sortOrderPreference one of {@link ContactsPreferences#SORT_ORDER_PRIMARY} or
- * {@link ContactsPreferences#SORT_ORDER_ALTERNATIVE}
- * @return namePrimary or nameAlternative depending on the value of displayOrderPreference
+ * @param namePrimary the primary name.
+ * @param nameAlternative the alternative name.
+ * @param contactsPreferences the ContactsPreferences used to determine the preferred sort
+ * order.
+ * @return namePrimary or nameAlternative depending on the value of displayOrderPreference.
*/
public static String getPreferredSortName(String namePrimary, String nameAlternative,
- int sortOrderPreference) {
- if (sortOrderPreference == ContactsPreferences.SORT_ORDER_PRIMARY) {
+ @Nullable ContactsPreferences contactsPreferences) {
+ if (contactsPreferences == null) {
+ return namePrimary != null ? namePrimary : nameAlternative;
+ }
+
+ if (contactsPreferences.getSortOrder() == ContactsPreferences.SORT_ORDER_PRIMARY) {
return namePrimary;
}
- if (sortOrderPreference == ContactsPreferences.SORT_ORDER_ALTERNATIVE &&
+ if (contactsPreferences.getSortOrder() == ContactsPreferences.SORT_ORDER_ALTERNATIVE &&
!TextUtils.isEmpty(nameAlternative)) {
return nameAlternative;
}
diff --git a/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java b/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java
index a8e3038..b4cd1ca 100644
--- a/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java
+++ b/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java
@@ -24,6 +24,10 @@
import com.android.contacts.common.R;
import com.android.contacts.common.preference.ContactsPreferences;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
/**
* Unit tests for (@link ContactDisplayUtils}
*/
@@ -33,6 +37,14 @@
private static final String NAME_PRIMARY = "Name Primary";
private static final String NAME_ALTERNATIVE = "Name Alternative";
+ @Mock private ContactsPreferences mContactsPreferences;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ MockitoAnnotations.initMocks(this);
+ }
+
public void testIsCustomPhoneTypeReturnsTrue() {
assertTrue(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_CUSTOM));
assertTrue(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_ASSISTANT));
@@ -96,43 +108,95 @@
assertEquals(R.string.sms_home, ContactDisplayUtils.getSmsLabelResourceId(Phone.TYPE_HOME));
}
- public void testGetPreferredDisplayNameEmptyAlternative() {
+ public void testGetPreferredDisplayName_NullContactsPreferences() {
+ assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
+ NAME_ALTERNATIVE, null));
+ }
+
+ public void testGetPreferredDisplayName_NullContactsPreferences_NullAlternative() {
+ assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY, null,
+ null));
+ }
+
+ public void testGetPreferredDisplayName_NullContactsPreferences_NullPrimary() {
+ assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredDisplayName(null,
+ NAME_ALTERNATIVE, null));
+ }
+
+ public void testGetPreferredDisplayName_NullContactsPreferences_BothNull() {
+ assertNull(ContactDisplayUtils.getPreferredDisplayName(null, null, null));
+ }
+
+ public void testGetPreferredDisplayName_EmptyAlternative() {
+ Mockito.when(mContactsPreferences.getDisplayOrder())
+ .thenReturn(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY, "",
- ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE));
+ mContactsPreferences));
}
- public void testGetPreferredDisplayNameInvalidPreference() {
+ public void testGetPreferredDisplayName_InvalidPreference() {
+ Mockito.when(mContactsPreferences.getDisplayOrder()).thenReturn(-1);
assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
- NAME_ALTERNATIVE, -1));
+ NAME_ALTERNATIVE, mContactsPreferences));
}
- public void testGetPreferredDisplayNamePrimary() {
+ public void testGetPreferredDisplayName_Primary() {
+ Mockito.when(mContactsPreferences.getDisplayOrder())
+ .thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY);
assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
- NAME_ALTERNATIVE, ContactsPreferences.DISPLAY_ORDER_PRIMARY));
+ NAME_ALTERNATIVE, mContactsPreferences));
}
- public void testGetPreferredDisplayNameAlternative() {
+ public void testGetPreferredDisplayName_Alternative() {
+ Mockito.when(mContactsPreferences.getDisplayOrder())
+ .thenReturn(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
- NAME_ALTERNATIVE, ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE));
+ NAME_ALTERNATIVE, mContactsPreferences));
}
- public void testGetPreferredSortNameEmptyAlternative() {
+ public void testGetPreferredSortName_NullContactsPreferences() {
+ assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
+ NAME_ALTERNATIVE, null));
+ }
+
+ public void testGetPreferredSortName_NullContactsPreferences_NullAlternative() {
+ assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY, null,
+ null));
+ }
+
+ public void testGetPreferredSortName_NullContactsPreferences_NullPrimary() {
+ assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredSortName(null,
+ NAME_ALTERNATIVE, null));
+ }
+
+ public void testGetPreferredSortName_NullContactsPreferences_BothNull() {
+ assertNull(ContactDisplayUtils.getPreferredSortName(null, null, null));
+ }
+
+ public void testGetPreferredSortName_EmptyAlternative() {
+ Mockito.when(mContactsPreferences.getSortOrder())
+ .thenReturn(ContactsPreferences.SORT_ORDER_ALTERNATIVE);
assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY, "",
- ContactsPreferences.SORT_ORDER_ALTERNATIVE));
+ mContactsPreferences));
}
- public void testGetPreferredSortNameInvalidPreference() {
+ public void testGetPreferredSortName_InvalidPreference() {
+ Mockito.when(mContactsPreferences.getSortOrder()).thenReturn(-1);
assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
- NAME_ALTERNATIVE, -1));
+ NAME_ALTERNATIVE, mContactsPreferences));
}
- public void testGetPreferredSortNamePrimary() {
+ public void testGetPreferredSortName_Primary() {
+ Mockito.when(mContactsPreferences.getSortOrder())
+ .thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY);
assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
- NAME_ALTERNATIVE, ContactsPreferences.SORT_ORDER_PRIMARY));
+ NAME_ALTERNATIVE, mContactsPreferences));
}
- public void testGetPreferredSortNameAlternative() {
+ public void testGetPreferredSortName_Alternative() {
+ Mockito.when(mContactsPreferences.getSortOrder())
+ .thenReturn(ContactsPreferences.SORT_ORDER_ALTERNATIVE);
assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
- NAME_ALTERNATIVE, ContactsPreferences.SORT_ORDER_ALTERNATIVE));
+ NAME_ALTERNATIVE, mContactsPreferences));
}
}