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 DozeScreenStatePreventingAdapterTest extends SysuiTestCase { 41 42 private Executor mExecutor; 43 private DozeMachine.Service mInner; 44 private DozeScreenStatePreventingAdapter 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 DozeScreenStatePreventingAdapter( 51 mInner, 52 mExecutor 53 ); 54 } 55 56 @Test forwards_finish()57 public void forwards_finish() throws Exception { 58 mWrapper.finish(); 59 verify(mInner).finish(); 60 } 61 62 @Test forwards_setDozeScreenState_on()63 public void forwards_setDozeScreenState_on() throws Exception { 64 mWrapper.setDozeScreenState(Display.STATE_ON); 65 verify(mInner).setDozeScreenState(Display.STATE_ON); 66 } 67 68 @Test forwards_setDozeScreenState_off()69 public void forwards_setDozeScreenState_off() throws Exception { 70 mWrapper.setDozeScreenState(Display.STATE_OFF); 71 verify(mInner).setDozeScreenState(Display.STATE_OFF); 72 } 73 74 @Test forwards_setDozeScreenState_doze()75 public void forwards_setDozeScreenState_doze() throws Exception { 76 mWrapper.setDozeScreenState(Display.STATE_DOZE); 77 verify(mInner).setDozeScreenState(Display.STATE_ON); 78 } 79 80 @Test forwards_setDozeScreenState_doze_suspend()81 public void forwards_setDozeScreenState_doze_suspend() throws Exception { 82 mWrapper.setDozeScreenState(Display.STATE_DOZE_SUSPEND); 83 verify(mInner).setDozeScreenState(Display.STATE_ON_SUSPEND); 84 } 85 86 @Test forwards_requestWakeUp()87 public void forwards_requestWakeUp() { 88 mWrapper.requestWakeUp(DozeLog.REASON_SENSOR_PICKUP); 89 verify(mInner).requestWakeUp(DozeLog.REASON_SENSOR_PICKUP); 90 } 91 92 @Test wrapIfNeeded_needed()93 public void wrapIfNeeded_needed() throws Exception { 94 DozeParameters params = mock(DozeParameters.class); 95 when(params.getDisplayStateSupported()).thenReturn(false); 96 97 assertEquals(DozeScreenStatePreventingAdapter.class, 98 DozeScreenStatePreventingAdapter.wrapIfNeeded(mInner, params, mExecutor) 99 .getClass()); 100 } 101 102 @Test wrapIfNeeded_not_needed()103 public void wrapIfNeeded_not_needed() throws Exception { 104 DozeParameters params = mock(DozeParameters.class); 105 when(params.getDisplayStateSupported()).thenReturn(true); 106 107 assertSame(mInner, DozeScreenStatePreventingAdapter.wrapIfNeeded(mInner, params, 108 mExecutor)); 109 } 110 } 111