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