/tests/robotests/src/com/android/settings/development/HardwareLayersUpdatesPreferenceControllerTest.java

https://gitlab.com/SkyDragon-OSP/platform_packages_apps_settings · Java · 101 lines · 65 code · 21 blank · 15 comment · 0 complexity · fd160d05ad6d2cc713b75c52607c42b3 MD5 · raw file

  1. /*
  2. * Copyright (C) 2017 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. package com.android.settings.development;
  17. import static com.google.common.truth.Truth.assertThat;
  18. import static org.mockito.Mockito.verify;
  19. import static org.mockito.Mockito.when;
  20. import android.os.SystemProperties;
  21. import android.support.v14.preference.SwitchPreference;
  22. import android.support.v7.preference.PreferenceScreen;
  23. import android.view.ThreadedRenderer;
  24. import com.android.settings.testutils.SettingsRobolectricTestRunner;
  25. import org.junit.Before;
  26. import org.junit.Test;
  27. import org.junit.runner.RunWith;
  28. import org.mockito.Mock;
  29. import org.mockito.MockitoAnnotations;
  30. import org.robolectric.RuntimeEnvironment;
  31. @RunWith(SettingsRobolectricTestRunner.class)
  32. public class HardwareLayersUpdatesPreferenceControllerTest {
  33. @Mock
  34. private SwitchPreference mPreference;
  35. @Mock
  36. private PreferenceScreen mPreferenceScreen;
  37. private HardwareLayersUpdatesPreferenceController mController;
  38. @Before
  39. public void setup() {
  40. MockitoAnnotations.initMocks(this);
  41. mController = new HardwareLayersUpdatesPreferenceController(RuntimeEnvironment.application);
  42. when(mPreferenceScreen.findPreference(mController.getPreferenceKey()))
  43. .thenReturn(mPreference);
  44. mController.displayPreference(mPreferenceScreen);
  45. }
  46. @Test
  47. public void onPreferenceChanged_settingEnabled_turnOnHardwareLayersUpdates() {
  48. mController.onPreferenceChange(mPreference, true /* new value */);
  49. final boolean mode = SystemProperties
  50. .getBoolean(ThreadedRenderer.DEBUG_SHOW_LAYERS_UPDATES_PROPERTY, false /* default */);
  51. assertThat(mode).isTrue();
  52. }
  53. @Test
  54. public void onPreferenceChanged_settingDisabled_turnOffHardwareLayersUpdates() {
  55. mController.onPreferenceChange(mPreference, false /* new value */);
  56. final boolean mode = SystemProperties
  57. .getBoolean(ThreadedRenderer.DEBUG_SHOW_LAYERS_UPDATES_PROPERTY, false /* default */);
  58. assertThat(mode).isFalse();
  59. }
  60. @Test
  61. public void updateState_settingEnabled_preferenceShouldBeChecked() {
  62. SystemProperties
  63. .set(ThreadedRenderer.DEBUG_SHOW_LAYERS_UPDATES_PROPERTY, Boolean.toString(true));
  64. mController.updateState(mPreference);
  65. verify(mPreference).setChecked(true);
  66. }
  67. @Test
  68. public void updateState_settingDisabled_preferenceShouldNotBeChecked() {
  69. SystemProperties
  70. .set(ThreadedRenderer.DEBUG_SHOW_LAYERS_UPDATES_PROPERTY, Boolean.toString(false));
  71. mController.updateState(mPreference);
  72. verify(mPreference).setChecked(false);
  73. }
  74. @Test
  75. public void onDeveloperOptionsDisabled_shouldDisablePreference() {
  76. mController.onDeveloperOptionsDisabled();
  77. verify(mPreference).setEnabled(false);
  78. verify(mPreference).setChecked(false);
  79. }
  80. }