1 package com.android.settings.display;
2 
3 import static com.google.common.truth.Truth.assertThat;
4 
5 import android.content.Context;
6 import android.hardware.display.ColorDisplayManager;
7 
8 import com.android.settings.R;
9 import com.android.settings.core.BasePreferenceController;
10 import com.android.settings.testutils.shadow.SettingsShadowResources;
11 
12 import org.junit.After;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.junit.runner.RunWith;
16 import org.robolectric.RobolectricTestRunner;
17 import org.robolectric.RuntimeEnvironment;
18 import org.robolectric.annotation.Config;
19 
20 @RunWith(RobolectricTestRunner.class)
21 @Config(shadows = {SettingsShadowResources.class})
22 public class NightDisplayPreferenceControllerTest {
23 
24     private Context mContext;
25     private ColorDisplayManager mColorDisplayManager;
26     private NightDisplayPreferenceController mPreferenceController;
27 
28     @Before
setUp()29     public void setUp() {
30         mContext = RuntimeEnvironment.application;
31         mColorDisplayManager = mContext.getSystemService(ColorDisplayManager.class);
32         mPreferenceController = new NightDisplayPreferenceController(mContext, "test");
33     }
34 
35     @After
tearDown()36     public void tearDown() {
37         SettingsShadowResources.reset();
38     }
39 
40     @Test
nightDisplaySuggestion_isNotCompleted_ifAutoModeDisabled()41     public void nightDisplaySuggestion_isNotCompleted_ifAutoModeDisabled() {
42         mColorDisplayManager.setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_DISABLED);
43 
44         assertThat(NightDisplayPreferenceController.isSuggestionComplete(mContext)).isFalse();
45     }
46 
47     @Test
nightDisplaySuggestion_isCompleted_ifAutoModeCustom()48     public void nightDisplaySuggestion_isCompleted_ifAutoModeCustom() {
49         mColorDisplayManager.setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_CUSTOM_TIME);
50 
51         assertThat(NightDisplayPreferenceController.isSuggestionComplete(mContext)).isTrue();
52     }
53 
54     @Test
nightDisplaySuggestion_isCompleted_ifAutoModeTwilight()55     public void nightDisplaySuggestion_isCompleted_ifAutoModeTwilight() {
56         mColorDisplayManager.setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_TWILIGHT);
57 
58         assertThat(NightDisplayPreferenceController.isSuggestionComplete(mContext)).isTrue();
59     }
60 
61     @Test
nightDisplaySuggestion_isCompleted_ifSuggestionDisabled()62     public void nightDisplaySuggestion_isCompleted_ifSuggestionDisabled() {
63         mColorDisplayManager.setNightDisplayAutoMode(ColorDisplayManager.AUTO_MODE_DISABLED);
64         SettingsShadowResources.overrideResource(R.bool.config_night_light_suggestion_enabled,
65                 false);
66 
67         assertThat(NightDisplayPreferenceController.isSuggestionComplete(mContext)).isTrue();
68     }
69 
70     @Test
getAvailabilityStatus_nightDisplayIsSupported_returnAvailable()71     public void getAvailabilityStatus_nightDisplayIsSupported_returnAvailable() {
72         SettingsShadowResources.overrideResource(
73                 com.android.internal.R.bool.config_nightDisplayAvailable, true);
74 
75         assertThat(mPreferenceController.getAvailabilityStatus())
76                 .isEqualTo(BasePreferenceController.AVAILABLE);
77     }
78 
79     @Test
getAvailabilityStatus_nightDisplayIsNotSupported_returnUnsupportedOnDevice()80     public void getAvailabilityStatus_nightDisplayIsNotSupported_returnUnsupportedOnDevice() {
81         SettingsShadowResources.overrideResource(
82                 com.android.internal.R.bool.config_nightDisplayAvailable, false);
83 
84         assertThat(mPreferenceController.getAvailabilityStatus())
85                 .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
86     }
87 
88     @Test
isChecked_nightDisplayIsActivated_returnTrue()89     public void isChecked_nightDisplayIsActivated_returnTrue() {
90         mColorDisplayManager.setNightDisplayActivated(true);
91 
92         assertThat(mPreferenceController.isChecked()).isTrue();
93     }
94 
95     @Test
isChecked_nightDisplayIsNotActivated_returnFalse()96     public void isChecked_nightDisplayIsNotActivated_returnFalse() {
97         mColorDisplayManager.setNightDisplayActivated(false);
98 
99         assertThat(mPreferenceController.isChecked()).isFalse();
100     }
101 }