1950665abafe4cca4102fc477614570c29debf855Brandon Maxwell/* 2950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * Copyright (C) 2015 The Android Open Source Project 3950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * 4950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * Licensed under the Apache License, Version 2.0 (the "License"); 5950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * you may not use this file except in compliance with the License. 6950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * You may obtain a copy of the License at 7950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * 8950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * http://www.apache.org/licenses/LICENSE-2.0 9950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * 10950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * Unless required by applicable law or agreed to in writing, software 11950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * distributed under the License is distributed on an "AS IS" BASIS, 12950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * See the License for the specific language governing permissions and 14950665abafe4cca4102fc477614570c29debf855Brandon Maxwell * limitations under the License. 15950665abafe4cca4102fc477614570c29debf855Brandon Maxwell */ 16950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 17950665abafe4cca4102fc477614570c29debf855Brandon Maxwellpackage com.android.contacts.common.preference; 18950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 19950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.content.Context; 20950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.content.SharedPreferences; 21950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.content.res.Resources; 22950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.test.AndroidTestCase; 23ce741bd427fbbb10f517684652ee00050ab920dcBrandon Maxwellimport android.test.InstrumentationTestCase; 24950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport android.test.suitebuilder.annotation.MediumTest; 25950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 26950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport com.android.contacts.common.model.account.AccountWithDataSet; 27950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 28950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport junit.framework.Assert; 29950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 30950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport org.mockito.Mock; 31950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport org.mockito.Mockito; 32950665abafe4cca4102fc477614570c29debf855Brandon Maxwellimport org.mockito.MockitoAnnotations; 33950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 34950665abafe4cca4102fc477614570c29debf855Brandon Maxwell@MediumTest 35ce741bd427fbbb10f517684652ee00050ab920dcBrandon Maxwellpublic class ContactsPreferencesTest extends InstrumentationTestCase { 36950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 37950665abafe4cca4102fc477614570c29debf855Brandon Maxwell private static final String ACCOUNT_KEY = "ACCOUNT_KEY"; 38950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 39950665abafe4cca4102fc477614570c29debf855Brandon Maxwell @Mock private Context mContext; 40950665abafe4cca4102fc477614570c29debf855Brandon Maxwell @Mock private Resources mResources; 41950665abafe4cca4102fc477614570c29debf855Brandon Maxwell @Mock private SharedPreferences mSharedPreferences; 42950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 43950665abafe4cca4102fc477614570c29debf855Brandon Maxwell private ContactsPreferences mContactsPreferences; 44950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 45950665abafe4cca4102fc477614570c29debf855Brandon Maxwell @Override 46950665abafe4cca4102fc477614570c29debf855Brandon Maxwell public void setUp() throws Exception { 47950665abafe4cca4102fc477614570c29debf855Brandon Maxwell super.setUp(); 48ce741bd427fbbb10f517684652ee00050ab920dcBrandon Maxwell System.setProperty("dexmaker.dexcache", 49ce741bd427fbbb10f517684652ee00050ab920dcBrandon Maxwell getInstrumentation().getTargetContext().getCacheDir().getPath()); 50950665abafe4cca4102fc477614570c29debf855Brandon Maxwell MockitoAnnotations.initMocks(this); 51950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 52950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mContext.getResources()).thenReturn(mResources); 53950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mResources.getString(Mockito.anyInt())) 54950665abafe4cca4102fc477614570c29debf855Brandon Maxwell .thenReturn(ACCOUNT_KEY); // contact_editor_default_account_key 55950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 56950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mContext.getSharedPreferences(Mockito.anyString(), Mockito.anyInt())) 57950665abafe4cca4102fc477614570c29debf855Brandon Maxwell .thenReturn(mSharedPreferences); 58950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mSharedPreferences.contains(ContactsPreferences.SORT_ORDER_KEY)) 59950665abafe4cca4102fc477614570c29debf855Brandon Maxwell .thenReturn(true); 60950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mSharedPreferences.contains(ContactsPreferences.DISPLAY_ORDER_KEY)) 61950665abafe4cca4102fc477614570c29debf855Brandon Maxwell .thenReturn(true); 62950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 63950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences = new ContactsPreferences(mContext); 64950665abafe4cca4102fc477614570c29debf855Brandon Maxwell } 65950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 66950665abafe4cca4102fc477614570c29debf855Brandon Maxwell public void testGetSortOrderDefault() { 67950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn( 68950665abafe4cca4102fc477614570c29debf855Brandon Maxwell false, // R.bool.config_sort_order_user_changeable 69950665abafe4cca4102fc477614570c29debf855Brandon Maxwell true // R.bool.config_default_sort_order_primary 70950665abafe4cca4102fc477614570c29debf855Brandon Maxwell ); 71950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY, 72950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.getSortOrder()); 73950665abafe4cca4102fc477614570c29debf855Brandon Maxwell } 74950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 75950665abafe4cca4102fc477614570c29debf855Brandon Maxwell public void testGetSortOrder() { 76950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn( 77950665abafe4cca4102fc477614570c29debf855Brandon Maxwell true // R.bool.config_sort_order_user_changeable 78950665abafe4cca4102fc477614570c29debf855Brandon Maxwell ); 79950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.SORT_ORDER_KEY), 80950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.anyInt())).thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY); 81950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY, 82950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.getSortOrder()); 83950665abafe4cca4102fc477614570c29debf855Brandon Maxwell } 84950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 85950665abafe4cca4102fc477614570c29debf855Brandon Maxwell public void testGetDisplayOrderDefault() { 86950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn( 87950665abafe4cca4102fc477614570c29debf855Brandon Maxwell false, // R.bool.config_display_order_user_changeable 88950665abafe4cca4102fc477614570c29debf855Brandon Maxwell true // R.bool.config_default_display_order_primary 89950665abafe4cca4102fc477614570c29debf855Brandon Maxwell ); 90950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY, 91950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.getDisplayOrder()); 92950665abafe4cca4102fc477614570c29debf855Brandon Maxwell } 93950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 94950665abafe4cca4102fc477614570c29debf855Brandon Maxwell public void testGetDisplayOrder() { 95950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn( 96950665abafe4cca4102fc477614570c29debf855Brandon Maxwell true // R.bool.config_display_order_user_changeable 97950665abafe4cca4102fc477614570c29debf855Brandon Maxwell ); 98950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.DISPLAY_ORDER_KEY), 99950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.anyInt())).thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY); 100950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY, 101950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.getDisplayOrder()); 102950665abafe4cca4102fc477614570c29debf855Brandon Maxwell } 103950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 104950665abafe4cca4102fc477614570c29debf855Brandon Maxwell public void testRefreshSortOrder() throws InterruptedException { 105950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn( 106950665abafe4cca4102fc477614570c29debf855Brandon Maxwell true // R.bool.config_sort_order_user_changeable 107950665abafe4cca4102fc477614570c29debf855Brandon Maxwell ); 108950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.SORT_ORDER_KEY), 109950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.anyInt())).thenReturn(ContactsPreferences.SORT_ORDER_PRIMARY, 110950665abafe4cca4102fc477614570c29debf855Brandon Maxwell ContactsPreferences.SORT_ORDER_ALTERNATIVE); 111950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 112950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals(ContactsPreferences.SORT_ORDER_PRIMARY, 113950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.getSortOrder()); 114950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.refreshValue(ContactsPreferences.SORT_ORDER_KEY); 115950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 116950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals(ContactsPreferences.SORT_ORDER_ALTERNATIVE, 117950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.getSortOrder()); 118950665abafe4cca4102fc477614570c29debf855Brandon Maxwell } 119950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 120950665abafe4cca4102fc477614570c29debf855Brandon Maxwell public void testRefreshDisplayOrder() throws InterruptedException { 121950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn( 122950665abafe4cca4102fc477614570c29debf855Brandon Maxwell true // R.bool.config_display_order_user_changeable 123950665abafe4cca4102fc477614570c29debf855Brandon Maxwell ); 124950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mSharedPreferences.getInt(Mockito.eq(ContactsPreferences.DISPLAY_ORDER_KEY), 125950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.anyInt())).thenReturn(ContactsPreferences.DISPLAY_ORDER_PRIMARY, 126950665abafe4cca4102fc477614570c29debf855Brandon Maxwell ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE); 127950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 128950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_PRIMARY, 129950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.getDisplayOrder()); 130950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.refreshValue(ContactsPreferences.DISPLAY_ORDER_KEY); 131950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 132950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals(ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE, 133950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.getDisplayOrder()); 134950665abafe4cca4102fc477614570c29debf855Brandon Maxwell } 135950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 136950665abafe4cca4102fc477614570c29debf855Brandon Maxwell public void testRefreshDefaultAccount() throws InterruptedException { 137950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn( 138950665abafe4cca4102fc477614570c29debf855Brandon Maxwell true // R.bool.config_default_account_user_changeable 139950665abafe4cca4102fc477614570c29debf855Brandon Maxwell ); 140950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 141950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Mockito.when(mSharedPreferences.getString(Mockito.eq(ACCOUNT_KEY), Mockito.anyString())) 142950665abafe4cca4102fc477614570c29debf855Brandon Maxwell .thenReturn(new AccountWithDataSet("name1", "type1", "dataset1").stringify(), 143950665abafe4cca4102fc477614570c29debf855Brandon Maxwell new AccountWithDataSet("name2", "type2", "dataset2").stringify()); 144950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 145950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals("name1", mContactsPreferences.getDefaultAccount()); 146950665abafe4cca4102fc477614570c29debf855Brandon Maxwell mContactsPreferences.refreshValue(ACCOUNT_KEY); 147950665abafe4cca4102fc477614570c29debf855Brandon Maxwell 148950665abafe4cca4102fc477614570c29debf855Brandon Maxwell Assert.assertEquals("name2", mContactsPreferences.getDefaultAccount()); 149950665abafe4cca4102fc477614570c29debf855Brandon Maxwell } 150950665abafe4cca4102fc477614570c29debf855Brandon Maxwell} 151