Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7edf983f authored by Brandon Maxwell's avatar Brandon Maxwell
Browse files

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
parent a7a20f4e
Loading
Loading
Loading
Loading
+29 −27
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import com.google.common.base.Preconditions;

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 @@ public class ContactDisplayUtils {
    }

    /**
     * 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 @@ public class ContactDisplayUtils {
    }

    /**
     * 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;
        }
+80 −16
Original line number Diff line number Diff line
@@ -24,6 +24,10 @@ import android.test.suitebuilder.annotation.SmallTest;
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 @@ public class ContactDisplayUtilTests extends AndroidTestCase {
    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 @@ public class ContactDisplayUtilTests extends AndroidTestCase {
        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 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 testGetPreferredSortNameEmptyAlternative() {
    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));
    }
}