1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License
15  */
16 
17 package com.android.contacts.util;
18 
19 import static android.provider.ContactsContract.CommonDataKinds.Phone;
20 
21 import android.test.AndroidTestCase;
22 
23 import androidx.test.filters.SmallTest;
24 
25 import com.android.contacts.R;
26 import com.android.contacts.preference.ContactsPreferences;
27 
28 import org.mockito.Mock;
29 import org.mockito.Mockito;
30 import org.mockito.MockitoAnnotations;
31 
32 /**
33  * Unit tests for (@link ContactDisplayUtils}
34  */
35 @SmallTest
36 public class ContactDisplayUtilTests extends AndroidTestCase {
37 
38     private static final String NAME_PRIMARY = "Name Primary";
39     private static final String NAME_ALTERNATIVE = "Name Alternative";
40 
41     @Mock private ContactsPreferences mContactsPreferences;
42 
43     @Override
setUp()44     public void setUp() throws Exception {
45         super.setUp();
46         MockitoAnnotations.initMocks(this);
47     }
48 
testIsCustomPhoneTypeReturnsTrue()49     public void testIsCustomPhoneTypeReturnsTrue() {
50         assertTrue(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_CUSTOM));
51         assertTrue(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_ASSISTANT));
52     }
53 
testIsCustomPhoneTypeReturnsFalse()54     public void testIsCustomPhoneTypeReturnsFalse() {
55         assertFalse(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_HOME));
56         assertFalse(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_FAX_WORK));
57         assertFalse(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_MOBILE));
58         assertFalse(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_OTHER));
59     }
60 
testGetPhoneLabelResourceIdReturnsOther()61     public void testGetPhoneLabelResourceIdReturnsOther() {
62         assertEquals(R.string.call_other, ContactDisplayUtils.getPhoneLabelResourceId(null));
63     }
64 
testGetPhoneLabelResourceIdReturnsMatchHome()65     public void testGetPhoneLabelResourceIdReturnsMatchHome() {
66         assertEquals(R.string.call_home, ContactDisplayUtils.getPhoneLabelResourceId(
67                 Phone.TYPE_HOME));
68     }
69 
testGetSmsLabelResourceIdReturnsOther()70     public void testGetSmsLabelResourceIdReturnsOther() {
71         assertEquals(R.string.sms_other, ContactDisplayUtils.getSmsLabelResourceId(null));
72     }
73 
testGetSmsLabelResourceIdReturnsMatchHome()74     public void testGetSmsLabelResourceIdReturnsMatchHome() {
75         assertEquals(R.string.sms_home, ContactDisplayUtils.getSmsLabelResourceId(Phone.TYPE_HOME));
76     }
77 
testGetPreferredDisplayName_NullContactsPreferences()78     public void testGetPreferredDisplayName_NullContactsPreferences() {
79         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
80                 NAME_ALTERNATIVE, null));
81     }
82 
testGetPreferredDisplayName_NullContactsPreferences_NullAlternative()83     public void testGetPreferredDisplayName_NullContactsPreferences_NullAlternative() {
84         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY, null,
85                 null));
86     }
87 
testGetPreferredDisplayName_NullContactsPreferences_NullPrimary()88     public void testGetPreferredDisplayName_NullContactsPreferences_NullPrimary() {
89         assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredDisplayName(null,
90                 NAME_ALTERNATIVE, null));
91     }
92 
testGetPreferredDisplayName_NullContactsPreferences_BothNull()93     public void testGetPreferredDisplayName_NullContactsPreferences_BothNull() {
94         assertNull(ContactDisplayUtils.getPreferredDisplayName(null, null, null));
95     }
96 
testGetPreferredDisplayName_EmptyAlternative()97     public void testGetPreferredDisplayName_EmptyAlternative() {
98         Mockito.when(mContactsPreferences.getDisplayOrder())
99                 .thenReturn(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
100         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY, "",
101                 mContactsPreferences));
102     }
103 
testGetPreferredDisplayName_InvalidPreference()104     public void testGetPreferredDisplayName_InvalidPreference() {
105         Mockito.when(mContactsPreferences.getDisplayOrder()).thenReturn(-1);
106         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
107                 NAME_ALTERNATIVE, mContactsPreferences));
108     }
109 
testGetPreferredDisplayName_Primary()110     public void testGetPreferredDisplayName_Primary() {
111         Mockito.when(mContactsPreferences.getDisplayOrder())
112                 .thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY);
113         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
114                 NAME_ALTERNATIVE, mContactsPreferences));
115     }
116 
testGetPreferredDisplayName_Alternative()117     public void testGetPreferredDisplayName_Alternative() {
118         Mockito.when(mContactsPreferences.getDisplayOrder())
119                 .thenReturn(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE);
120         assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredDisplayName(NAME_PRIMARY,
121                 NAME_ALTERNATIVE, mContactsPreferences));
122     }
123 
testGetPreferredSortName_NullContactsPreferences()124     public void testGetPreferredSortName_NullContactsPreferences() {
125         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
126                 NAME_ALTERNATIVE, null));
127     }
128 
testGetPreferredSortName_NullContactsPreferences_NullAlternative()129     public void testGetPreferredSortName_NullContactsPreferences_NullAlternative() {
130         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY, null,
131                 null));
132     }
133 
testGetPreferredSortName_NullContactsPreferences_NullPrimary()134     public void testGetPreferredSortName_NullContactsPreferences_NullPrimary() {
135         assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredSortName(null,
136                 NAME_ALTERNATIVE, null));
137     }
138 
testGetPreferredSortName_NullContactsPreferences_BothNull()139     public void testGetPreferredSortName_NullContactsPreferences_BothNull() {
140         assertNull(ContactDisplayUtils.getPreferredSortName(null, null, null));
141     }
142 
testGetPreferredSortName_EmptyAlternative()143     public void testGetPreferredSortName_EmptyAlternative() {
144         Mockito.when(mContactsPreferences.getSortOrder())
145                 .thenReturn(ContactsPreferences.SORT_ORDER_ALTERNATIVE);
146         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY, "",
147                 mContactsPreferences));
148     }
149 
testGetPreferredSortName_InvalidPreference()150     public void testGetPreferredSortName_InvalidPreference() {
151         Mockito.when(mContactsPreferences.getSortOrder()).thenReturn(-1);
152         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
153                 NAME_ALTERNATIVE, mContactsPreferences));
154     }
155 
testGetPreferredSortName_Primary()156     public void testGetPreferredSortName_Primary() {
157         Mockito.when(mContactsPreferences.getSortOrder())
158                 .thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY);
159         assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
160                 NAME_ALTERNATIVE, mContactsPreferences));
161     }
162 
testGetPreferredSortName_Alternative()163     public void testGetPreferredSortName_Alternative() {
164         Mockito.when(mContactsPreferences.getSortOrder())
165                 .thenReturn(ContactsPreferences.SORT_ORDER_ALTERNATIVE);
166         assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredSortName(NAME_PRIMARY,
167                 NAME_ALTERNATIVE, mContactsPreferences));
168     }
169 }
170