1d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang/* 2d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * Copyright (C) 2017 The Android Open Source Project 3d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * 4d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * Licensed under the Apache License, Version 2.0 (the "License"); 5d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * you may not use this file except in compliance with the License. 6d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * You may obtain a copy of the License at 7d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * 8d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * http://www.apache.org/licenses/LICENSE-2.0 9d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * 10d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * Unless required by applicable law or agreed to in writing, software 11d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * distributed under the License is distributed on an "AS IS" BASIS, 12d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * See the License for the specific language governing permissions and 14d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang * limitations under the License. 15d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang */ 16d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 17d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangpackage com.android.settings.development; 18d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 19d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport static com.google.common.truth.Truth.assertThat; 20d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport static org.mockito.Mockito.verify; 21d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport static org.mockito.Mockito.when; 22d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 23d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport android.content.Context; 24d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport android.provider.Settings; 25d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport android.support.v14.preference.SwitchPreference; 26d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport android.support.v7.preference.PreferenceScreen; 27d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 28d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport com.android.settings.testutils.SettingsRobolectricTestRunner; 29d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 30d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport org.junit.Before; 31d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport org.junit.Test; 32d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport org.junit.runner.RunWith; 33d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport org.mockito.Mock; 34d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport org.mockito.MockitoAnnotations; 35d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangimport org.robolectric.RuntimeEnvironment; 36d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 37d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang@RunWith(SettingsRobolectricTestRunner.class) 38d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuangpublic class WifiDisplayCertificationPreferenceControllerTest { 39d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 40d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang @Mock 41d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang private SwitchPreference mPreference; 42d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang @Mock 43d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang private PreferenceScreen mPreferenceScreen; 44d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 45d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang private Context mContext; 46d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang private WifiDisplayCertificationPreferenceController mController; 47d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 48d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang @Before 49d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang public void setup() { 50d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang MockitoAnnotations.initMocks(this); 51d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang mContext = RuntimeEnvironment.application; 52d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang mController = new WifiDisplayCertificationPreferenceController(mContext); 53d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang when(mPreferenceScreen.findPreference(mController.getPreferenceKey())).thenReturn( 54d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang mPreference); 55d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang mController.displayPreference(mPreferenceScreen); 56d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang } 57d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 58d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang @Test 59d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang public void onPreferenceChanged_turnOnWifiDisplayCertification() { 60d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang mController.onPreferenceChange(mPreference, true /* new value */); 61d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 62d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang final int mode = Settings.System.getInt(mContext.getContentResolver(), 63d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang Settings.Global.WIFI_DISPLAY_CERTIFICATION_ON, -1 /* default */); 64d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 65d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang assertThat(mode).isEqualTo(WifiDisplayCertificationPreferenceController.SETTING_VALUE_ON); 66d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang } 67d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 68d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang @Test 69d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang public void onPreferenceChanged_turnOffWifiDisplayCertification() { 70d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang mController.onPreferenceChange(mPreference, false /* new value */); 71d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 72d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang final int mode = Settings.System.getInt(mContext.getContentResolver(), 73d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang Settings.Global.WIFI_DISPLAY_CERTIFICATION_ON, -1 /* default */); 74d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 75d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang assertThat(mode).isEqualTo(WifiDisplayCertificationPreferenceController.SETTING_VALUE_OFF); 76d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang } 77d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 78d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang @Test 79d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang public void updateState_preferenceShouldBeChecked() { 80d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang Settings.System.putInt(mContext.getContentResolver(), 81d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang Settings.Global.WIFI_DISPLAY_CERTIFICATION_ON, 82d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang WifiDisplayCertificationPreferenceController.SETTING_VALUE_ON); 83d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang mController.updateState(mPreference); 84d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 85d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang verify(mPreference).setChecked(true); 86d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang } 87d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 88d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang @Test 89d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang public void updateState_preferenceShouldNotBeChecked() { 90d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang Settings.System.putInt(mContext.getContentResolver(), 91d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang Settings.Global.WIFI_DISPLAY_CERTIFICATION_ON, 92d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang WifiDisplayCertificationPreferenceController.SETTING_VALUE_OFF); 93d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang mController.updateState(mPreference); 94d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 95d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang verify(mPreference).setChecked(false); 96d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang } 97d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 98d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang @Test 99d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang public void onDeveloperOptionsDisabled_shouldDisablePreference() { 100d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang mController.onDeveloperOptionsDisabled(); 101d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang final int mode = Settings.System.getInt(mContext.getContentResolver(), 102d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang Settings.Global.WIFI_DISPLAY_CERTIFICATION_ON, -1 /* default */); 103d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang 104d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang assertThat(mode).isEqualTo(WifiDisplayCertificationPreferenceController.SETTING_VALUE_OFF); 105d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang verify(mPreference).setEnabled(false); 106d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang verify(mPreference).setChecked(false); 107d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang } 108d61c360385d5f95c39f1f8474bb0e3cb559a5554jeffreyhuang} 109