17c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis/* 27c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * Copyright (C) 2017 The Android Open Source Project 37c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * 47c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * Licensed under the Apache License, Version 2.0 (the "License"); 57c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * you may not use this file except in compliance with the License. 67c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * You may obtain a copy of the License at 77c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * 87c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * http://www.apache.org/licenses/LICENSE-2.0 97c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * 107c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * Unless required by applicable law or agreed to in writing, software 117c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * distributed under the License is distributed on an "AS IS" BASIS, 127c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * See the License for the specific language governing permissions and 147c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * limitations under the License. 157c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis */ 167c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 177c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlispackage android.support.v7.preference.tests; 187c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 197c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static junit.framework.TestCase.assertNotNull; 207c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 217c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.junit.Assert.assertEquals; 227c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.junit.Assert.assertNull; 234ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlisimport static org.junit.Assert.assertTrue; 24e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlisimport static org.mockito.AdditionalMatchers.or; 25963facb8fce35022f296c38fadafd9a959ab1655Aurimas Liutikasimport static org.mockito.ArgumentMatchers.nullable; 26e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlisimport static org.mockito.Matchers.any; 277c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Matchers.anyBoolean; 287c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Matchers.anyFloat; 297c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Matchers.anyInt; 307c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Matchers.anyLong; 317c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Matchers.anyString; 327c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Matchers.eq; 33e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlisimport static org.mockito.Matchers.isNull; 347c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Mockito.atLeast; 357c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Mockito.atLeastOnce; 367c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Mockito.mock; 377c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Mockito.verify; 387c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Mockito.verifyNoMoreInteractions; 397c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport static org.mockito.Mockito.verifyZeroInteractions; 404ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlisimport static org.mockito.Mockito.when; 417c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 427c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.content.Context; 437c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.content.SharedPreferences; 447c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.support.test.InstrumentationRegistry; 457c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.support.test.annotation.UiThreadTest; 467c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.support.test.filters.SmallTest; 477c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.support.test.runner.AndroidJUnit4; 484ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlisimport android.support.v7.preference.CheckBoxPreference; 497c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.support.v7.preference.Preference; 507c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.support.v7.preference.PreferenceDataStore; 517c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.support.v7.preference.PreferenceManager; 527c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport android.support.v7.preference.PreferenceScreen; 53e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlisimport android.support.v7.preference.tests.helpers.PreferenceWrapper; 547c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 557c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport org.junit.Before; 567c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport org.junit.Test; 577c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport org.junit.runner.RunWith; 587c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlisimport org.mockito.Mockito; 597c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 6083222b0ed2926aee15e5abdda3319089a8cc52baAurimas Liutikasimport java.util.Collections; 61e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlisimport java.util.HashSet; 62e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlisimport java.util.Set; 63e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 647c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis/** 657c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * Tests for {@link PreferenceDataStore} API. 667c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis */ 677c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis@SmallTest 687c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis@RunWith(AndroidJUnit4.class) 697c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlispublic class PreferenceDataStoreTest { 707c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 714ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis private Context mContext; 727c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private PreferenceWrapper mPreference; 737c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private PreferenceDataStore mDataStore; 747c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private PreferenceScreen mScreen; 757c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private PreferenceManager mManager; 767c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private SharedPreferences mSharedPref; 777c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 787c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private static final String KEY = "TestPrefKey"; 797c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private static final String TEST_STR = "Test"; 807c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private static final String TEST_DEFAULT_STR = "TestDefault"; 817c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private static final String TEST_WRONG_STR = "TestFromSharedPref"; 827c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 837c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Before 847c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 857c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void setup() { 864ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis mContext = InstrumentationRegistry.getTargetContext(); 877c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mDataStore = mock(PreferenceDataStore.class); 887c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 894ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis mManager = new PreferenceManager(mContext); 907c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mSharedPref = mManager.getSharedPreferences(); 914ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis mScreen = mManager.createPreferenceScreen(mContext); 924ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis mPreference = new PreferenceWrapper(mContext); 937c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setKey(KEY); 947c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 957c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis // Make sure that the key is not present in SharedPreferences to ensure test 967c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis // correctness. 977c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.getSharedPreferences().edit().remove(KEY).commit(); 987c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 997c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 100e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @Test 101e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testThatDataStoreIsNullByDefault() { 102e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis Preference preference = new Preference(mContext); 103e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mScreen.addPreference(preference); 104e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 105e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertNull(preference.getPreferenceDataStore()); 106e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertNotNull(preference.getSharedPreferences()); 107e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 108e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertNull(mManager.getPreferenceDataStore()); 109e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertNotNull(mManager.getSharedPreferences()); 110e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 111e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 112e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @Test 113e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testSetGetOnPreference() { 114e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis Preference preference = new Preference(mContext); 115e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 116e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis preference.setPreferenceDataStore(mDataStore); 117e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 118e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertEquals(mDataStore, preference.getPreferenceDataStore()); 119e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 120e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 121e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @Test 122e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testSetGetOnPreferenceManager() { 123e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 124e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 125e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertEquals(mDataStore, mManager.getPreferenceDataStore()); 126e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertNull(mManager.getSharedPreferences()); 127e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 128e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 129e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @Test 130e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testSetOnPreferenceManagerGetOnPreference() { 131e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis Preference preference = new Preference(mContext); 132e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mScreen.addPreference(preference); 133e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 134e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 135e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 136e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertEquals(mDataStore, preference.getPreferenceDataStore()); 137e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertNull(preference.getSharedPreferences()); 138e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 139e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 140e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @Test 141e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @UiThreadTest 142e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testDataStoresHierarchy() { 143e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 144e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis PreferenceDataStore secondaryDataStore = mock(PreferenceDataStore.class, 145e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis Mockito.CALLS_REAL_METHODS); 146e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mManager.setPreferenceDataStore(secondaryDataStore); 147e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mScreen.addPreference(mPreference); 148e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 149e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mPreference.putString(TEST_STR); 150e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 151e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis // Check that the Preference returns the correct data store. 152e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertEquals(mDataStore, mPreference.getPreferenceDataStore()); 153e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 154e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis // Check that the secondary data store assigned to the manager was NOT used. 155e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis verifyZeroInteractions(secondaryDataStore); 156e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 157e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis // Check that the primary data store assigned directly to the preference was used. 158e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis verify(mDataStore, atLeastOnce()).putString(eq(KEY), anyString()); 159e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 160e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 1614ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis /** 1624ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis * Test that the initial value is taken from the data store (before the preference gets assigned 1634ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis * to the preference hierarchy). 1644ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis */ 1654ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis @Test 1664ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis @UiThreadTest 167e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testInitialValueIsFromDataStoreOnPreference() { 1684ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis when(mDataStore.getBoolean(anyString(), anyBoolean())).thenReturn(true); 1694ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis 1704ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis CheckBoxPreference pref = new CheckBoxPreference(mContext); 1714ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis pref.setKey("CheckboxTestPref"); 1724ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis pref.setPreferenceDataStore(mDataStore); 1734ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis 1744ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis mScreen.addPreference(pref); 1754ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis 1764ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis assertTrue(pref.isChecked()); 1774ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis } 1784ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis 1794ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis /** 1804ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis * Test that the initial value is taken from the data store (before the preference gets assigned 1814ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis * to the preference hierarchy). 1824ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis */ 1834ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis @Test 1844ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis @UiThreadTest 185e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testInitialValueIsFromDataStoreOnPreferenceManager() { 1864ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis when(mDataStore.getBoolean(anyString(), anyBoolean())).thenReturn(true); 1874ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis 188e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 1894ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis CheckBoxPreference pref = new CheckBoxPreference(mContext); 1904ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis pref.setKey("CheckboxTestPref"); 1914ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis 1924ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis mScreen.addPreference(pref); 1934ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis 1944ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis assertTrue(pref.isChecked()); 1954ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis } 1964ef4b7446ef5802eeb5ae3adf450de46cc724ea7Filip Pavlis 1977c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 1987c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 1997c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutStringWithDataStoreOnPref() { 2007c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 2017c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 2027c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putStringTestCommon(); 2037c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 2047c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 2057c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 2067c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 2077c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutStringWithDataStoreOnMgr() { 2087c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 2097c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 2107c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putStringTestCommon(); 2117c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 2127c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 2137c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private void putStringTestCommon() { 2147c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.putString(TEST_STR); 2157c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 216963facb8fce35022f296c38fadafd9a959ab1655Aurimas Liutikas verify(mDataStore, atLeast(0)).getString(eq(KEY), nullable(String.class)); 2177c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).putString(eq(KEY), anyString()); 2187c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verifyNoMoreInteractions(mDataStore); 2197c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 2207c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis // Test that the value was NOT propagated to SharedPreferences. 2217c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis assertNull(mSharedPref.getString(KEY, null)); 2227c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 2237c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 2247c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 2257c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 2267c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetStringWithDataStoreOnPref() { 2277c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 2287c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 229e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 2307c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.getString(TEST_STR); 231e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 2327c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).getString(eq(KEY), eq(TEST_STR)); 2337c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 2347c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 2357c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 2367c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 2377c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetStringWithDataStoreOnMgr() { 2387c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 2397c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 240e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 2417c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.getString(TEST_STR); 242e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 2437c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).getString(eq(KEY), eq(TEST_STR)); 2447c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 2457c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 2467c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis /** 2477c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * This test makes sure that when a default value is set to a preference that has a data store 2487c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * assigned that the default value is correctly propagated to 2497c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * {@link Preference#onSetInitialValue(boolean, Object)} instead of passing a value from 2507c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * {@link android.content.SharedPreferences}. We have this test only for String because the 2517c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * implementation is not dependent on value type so this coverage should be fine. 2527c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis */ 2537c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 2547c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 2557c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testDefaultStringValue() { 2567c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 2577c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setDefaultValue(TEST_DEFAULT_STR); 2587c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mSharedPref.edit().putString(KEY, TEST_WRONG_STR).commit(); 2597c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 2607c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mSharedPref.edit().remove(KEY).commit(); 261e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertEquals(TEST_DEFAULT_STR, mPreference.getDefaultValue()); 262e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 263e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 264e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @Test 265e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @UiThreadTest 266e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testPutStringSetWithDataStoreOnPref() { 267e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 268e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mScreen.addPreference(mPreference); 269e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis putStringSetTestCommon(); 270e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 271e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 272e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @Test 273e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @UiThreadTest 274e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testPutStringSetWithDataStoreOnMgr() { 275e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 276e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mScreen.addPreference(mPreference); 277e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis putStringSetTestCommon(); 278e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 279e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 280e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis private void putStringSetTestCommon() { 28183222b0ed2926aee15e5abdda3319089a8cc52baAurimas Liutikas Set<String> testSet = Collections.singleton(TEST_STR); 282e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 283e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mPreference.putStringSet(testSet); 284e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 285e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis verify(mDataStore, atLeast(0)).getStringSet(eq(KEY), or(isNull(Set.class), any(Set.class))); 286e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis verify(mDataStore, atLeastOnce()).putStringSet(eq(KEY), 287e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis or(isNull(Set.class), any(Set.class))); 288e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis verifyNoMoreInteractions(mDataStore); 289e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 290e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis // Test that the value was NOT propagated to SharedPreferences. 291e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis assertNull(mSharedPref.getStringSet(KEY, null)); 292e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 293e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 294e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @Test 295e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @UiThreadTest 296e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testGetStringSetWithDataStoreOnPref() { 297e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 298e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mScreen.addPreference(mPreference); 299e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis Set<String> testSet = new HashSet<>(); 300e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 301e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mPreference.getStringSet(testSet); 302e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 303e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis verify(mDataStore, atLeastOnce()).getStringSet(eq(KEY), eq(testSet)); 304e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis } 305e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 306e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @Test 307e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis @UiThreadTest 308e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis public void testGetStringSetWithDataStoreOnMgr() { 309e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 310e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mScreen.addPreference(mPreference); 311e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis Set<String> testSet = new HashSet<>(); 312e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 313e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mPreference.getStringSet(testSet); 314e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 315e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis verify(mDataStore, atLeastOnce()).getStringSet(eq(KEY), eq(testSet)); 3167c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 3177c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3187c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 3197c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 3207c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutIntWithDataStoreOnPref() { 3217c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 3227c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 3237c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putIntTestCommon(); 3247c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 3257c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3267c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 3277c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 3287c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutIntWithDataStoreOnMgr() { 3297c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 3307c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 3317c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putIntTestCommon(); 3327c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 3337c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3347c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private void putIntTestCommon() { 3357c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.putInt(1); 3367c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3377c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeast(0)).getInt(eq(KEY), anyInt()); 3387c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).putInt(eq(KEY), anyInt()); 3397c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verifyNoMoreInteractions(mDataStore); 3407c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3417c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis // Test that the value was NOT propagated to SharedPreferences. 3427c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis assertEquals(-1, mSharedPref.getInt(KEY, -1)); 3437c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 3447c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3457c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 3467c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 3477c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetIntWithDataStoreOnPref() { 3487c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 3497c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 350e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 3517c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.getInt(1); 352e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 3537c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).getInt(eq(KEY), eq(1)); 3547c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 3557c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3567c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 3577c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 3587c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetIntWithDataStoreOnMgr() { 3597c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 3607c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 361e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 3627c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.getInt(1); 363e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 3647c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).getInt(eq(KEY), eq(1)); 3657c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 3667c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3677c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 3687c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 3697c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutLongWithDataStoreOnPref() { 3707c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 3717c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 3727c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putLongTestCommon(); 3737c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 3747c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3757c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 3767c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 3777c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutLongWithDataStoreOnMgr() { 3787c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 3797c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 3807c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putLongTestCommon(); 3817c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 3827c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3837c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private void putLongTestCommon() { 3847c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.putLong(1L); 3857c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3867c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeast(0)).getLong(eq(KEY), anyLong()); 3877c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).putLong(eq(KEY), anyLong()); 3887c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verifyNoMoreInteractions(mDataStore); 3897c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3907c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis // Test that the value was NOT propagated to SharedPreferences. 3917c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis assertEquals(-1, mSharedPref.getLong(KEY, -1L)); 3927c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 3937c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 3947c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 3957c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 3967c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetLongWithDataStoreOnPref() { 3977c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 3987c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 399e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 4007c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.getLong(1L); 401e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 4027c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).getLong(eq(KEY), eq(1L)); 4037c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4047c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4057c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 4067c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 4077c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetLongWithDataStoreOnMgr() { 4087c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 4097c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 410e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 4117c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.getLong(1L); 412e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 4137c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).getLong(eq(KEY), eq(1L)); 4147c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4157c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4167c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 4177c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 4187c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutFloatWithDataStoreOnPref() { 4197c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 4207c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 4217c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putFloatTestCommon(); 4227c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4237c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4247c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 4257c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 4267c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutFloatWithDataStoreOnMgr() { 4277c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 4287c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 4297c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putFloatTestCommon(); 4307c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4317c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4327c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private void putFloatTestCommon() { 4337c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.putFloat(1f); 4347c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4357c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeast(0)).getFloat(eq(KEY), anyFloat()); 4367c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).putFloat(eq(KEY), anyFloat()); 4377c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verifyNoMoreInteractions(mDataStore); 4387c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4397c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis // Test that the value was NOT propagated to SharedPreferences. 4407c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis assertEquals(-1, mSharedPref.getFloat(KEY, -1f), 0.1f /* epsilon */); 4417c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4427c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4437c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 4447c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 4457c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetFloatWithDataStoreOnPref() { 4467c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 4477c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 448e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 4497c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.getFloat(1f); 450e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 4517c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).getFloat(eq(KEY), eq(1f)); 4527c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4537c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4547c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 4557c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 4567c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetFloatWithDataStoreOnMgr() { 4577c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 4587c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 459e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 4607c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.getFloat(1f); 461e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 4627c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).getFloat(eq(KEY), eq(1f)); 4637c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4647c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4657c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 4667c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 4677c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutBooleanWithDataStoreOnPref() { 4687c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 4697c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 4707c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putBooleanTestCommon(); 4717c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4727c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4737c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 4747c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 4757c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testPutBooleanWithDataStoreOnMgr() { 4767c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 4777c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 4787c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis putBooleanTestCommon(); 4797c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4807c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4817c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis private void putBooleanTestCommon() { 4827c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.putBoolean(true); 4837c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4847c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeast(0)).getBoolean(eq(KEY), anyBoolean()); 4857c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).putBoolean(eq(KEY), anyBoolean()); 4867c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verifyNoMoreInteractions(mDataStore); 4877c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4887c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis // Test that the value was NOT propagated to SharedPreferences. 4897c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis assertEquals(false, mSharedPref.getBoolean(KEY, false)); 4907c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 4917c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 4927c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 4937c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 4947c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetBooleanWithDataStoreOnPref() { 4957c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 4967c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 497e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 4987c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.getBoolean(true); 499e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 5007c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis verify(mDataStore, atLeastOnce()).getBoolean(eq(KEY), eq(true)); 5017c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 5027c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 5037c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 5047c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 5057c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testGetBooleanWithDataStoreOnMgr() { 5067c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 5077c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 5087c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 509e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis mPreference.getBoolean(true); 5107c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 511e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis verify(mDataStore, atLeastOnce()).getBoolean(eq(KEY), eq(true)); 5127c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 5137c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 5147c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis /** 5157c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * When {@link PreferenceDataStore} is NOT assigned, the getter for SharedPreferences must not 5167c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * return null for Preference. 5177c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis */ 5187c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 5197c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 5207c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testSharedPrefNotNullIfNoDS() { 5217c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 522e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 5237c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis assertNotNull(mPreference.getSharedPreferences()); 5247c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 5257c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 5267c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis /** 5277c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * When {@link PreferenceDataStore} is NOT assigned, the getter for SharedPreferences must not 5287c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * return null for PreferenceManager. 5297c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis */ 5307c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 5317c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 5327c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testSharedPrefNotNullIfNoDSMgr() { 5337c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis assertNotNull(mManager.getSharedPreferences()); 5347c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 5357c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 5367c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis /** 5377c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * When {@link PreferenceDataStore} is assigned, the getter for SharedPreferences has to return 5387c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * null for Preference. 5397c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis */ 5407c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 5417c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 5427c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testSharedPrefNullIfWithDS() { 5437c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mScreen.addPreference(mPreference); 544e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 5457c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mPreference.setPreferenceDataStore(mDataStore); 546e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 5477c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis assertNull(mPreference.getSharedPreferences()); 5487c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 5497c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 5507c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis /** 5517c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * When {@link PreferenceDataStore} is assigned, the getter for SharedPreferences has to return 5527c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis * null for PreferenceManager. 5537c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis */ 5547c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @Test 5557c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis @UiThreadTest 5567c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis public void testSharedPrefNullIfWithDSMgr() { 5577c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis mManager.setPreferenceDataStore(mDataStore); 558e936153a610c7ee933409fe4e1e9fdcc521d6e6fFilip Pavlis 5597c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis assertNull(mManager.getSharedPreferences()); 5607c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis } 5617c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis 5627c67889a8c2d018fae37e30984873bcd984773cfFilip Pavlis} 563