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 
17 package com.android.systemui.doze;
18 
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertSame;
21 import static org.mockito.Mockito.mock;
22 import static org.mockito.Mockito.verify;
23 import static org.mockito.Mockito.when;
24 
25 import android.view.Display;
26 
27 import androidx.test.filters.SmallTest;
28 
29 import com.android.systemui.SysuiTestCase;
30 import com.android.systemui.statusbar.phone.DozeParameters;
31 import com.android.systemui.util.concurrency.FakeExecutor;
32 import com.android.systemui.util.time.FakeSystemClock;
33 
34 import org.junit.Before;
35 import org.junit.Test;
36 
37 import java.util.concurrent.Executor;
38 
39 @SmallTest
40 public class DozeSuspendScreenStatePreventingAdapterTest extends SysuiTestCase {
41 
42     private Executor mExecutor;
43     private DozeMachine.Service mInner;
44     private DozeSuspendScreenStatePreventingAdapter mWrapper;
45 
46     @Before
setup()47     public void setup() throws Exception {
48         mExecutor = new FakeExecutor(new FakeSystemClock());
49         mInner = mock(DozeMachine.Service.class);
50         mWrapper = new DozeSuspendScreenStatePreventingAdapter(mInner, mExecutor);
51     }
52 
53     @Test
forwards_finish()54     public void forwards_finish() throws Exception {
55         mWrapper.finish();
56         verify(mInner).finish();
57     }
58 
59     @Test
forwards_setDozeScreenState_on()60     public void forwards_setDozeScreenState_on() throws Exception {
61         mWrapper.setDozeScreenState(Display.STATE_ON);
62         verify(mInner).setDozeScreenState(Display.STATE_ON);
63     }
64 
65     @Test
forwards_setDozeScreenState_off()66     public void forwards_setDozeScreenState_off() throws Exception {
67         mWrapper.setDozeScreenState(Display.STATE_OFF);
68         verify(mInner).setDozeScreenState(Display.STATE_OFF);
69     }
70 
71     @Test
forwards_setDozeScreenState_doze()72     public void forwards_setDozeScreenState_doze() throws Exception {
73         mWrapper.setDozeScreenState(Display.STATE_DOZE);
74         verify(mInner).setDozeScreenState(Display.STATE_DOZE);
75     }
76 
77     @Test
forwards_setDozeScreenState_doze_suspend()78     public void forwards_setDozeScreenState_doze_suspend() throws Exception {
79         mWrapper.setDozeScreenState(Display.STATE_DOZE_SUSPEND);
80         verify(mInner).setDozeScreenState(Display.STATE_DOZE);
81     }
82 
83     @Test
forwards_setDozeScreenState_on_suspend()84     public void forwards_setDozeScreenState_on_suspend() throws Exception {
85         mWrapper.setDozeScreenState(Display.STATE_ON_SUSPEND);
86         verify(mInner).setDozeScreenState(Display.STATE_ON_SUSPEND);
87     }
88 
89     @Test
forwards_requestWakeUp()90     public void forwards_requestWakeUp() {
91         mWrapper.requestWakeUp(DozeLog.REASON_SENSOR_PICKUP);
92         verify(mInner).requestWakeUp(DozeLog.REASON_SENSOR_PICKUP);
93     }
94 
95     @Test
wrapIfNeeded_needed()96     public void wrapIfNeeded_needed() throws Exception {
97         DozeParameters params = mock(DozeParameters.class);
98         when(params.getDozeSuspendDisplayStateSupported()).thenReturn(false);
99 
100         assertEquals(DozeSuspendScreenStatePreventingAdapter.class,
101                 DozeSuspendScreenStatePreventingAdapter.wrapIfNeeded(mInner, params, mExecutor)
102                         .getClass());
103     }
104 
105     @Test
wrapIfNeeded_not_needed()106     public void wrapIfNeeded_not_needed() throws Exception {
107         DozeParameters params = mock(DozeParameters.class);
108         when(params.getDozeSuspendDisplayStateSupported()).thenReturn(true);
109 
110         assertSame(mInner, DozeSuspendScreenStatePreventingAdapter.wrapIfNeeded(mInner, params,
111                 mExecutor));
112     }
113 }
114