1a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos/*
2a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos * Copyright (C) 2017 The Android Open Source Project
3a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos *
4a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos * Licensed under the Apache License, Version 2.0 (the "License");
5a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos * you may not use this file except in compliance with the License.
6a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos * You may obtain a copy of the License at
7a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos *
8a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos *      http://www.apache.org/licenses/LICENSE-2.0
9a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos *
10a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos * Unless required by applicable law or agreed to in writing, software
11a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos * distributed under the License is distributed on an "AS IS" BASIS,
12a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos * See the License for the specific language governing permissions and
14a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos * limitations under the License.
15a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos */
16a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
17a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roospackage com.android.systemui.doze;
18a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
19a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport static org.junit.Assert.assertEquals;
20a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport static org.junit.Assert.assertSame;
21a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport static org.mockito.Mockito.mock;
22a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport static org.mockito.Mockito.verify;
23a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport static org.mockito.Mockito.when;
24a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
25a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport android.support.test.filters.SmallTest;
26a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport android.view.Display;
27a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
28fba8faf5c5f58f115fa3c099da9ef0953b484147Jason Monkimport com.android.systemui.SysuiTestCase;
29a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport com.android.systemui.statusbar.phone.DozeParameters;
30a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
31a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport org.junit.Before;
32a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roosimport org.junit.Test;
33a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
34a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos@SmallTest
35fba8faf5c5f58f115fa3c099da9ef0953b484147Jason Monkpublic class DozeSuspendScreenStatePreventingAdapterTest extends SysuiTestCase {
36a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
37a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    private DozeMachine.Service mInner;
38a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    private DozeSuspendScreenStatePreventingAdapter mWrapper;
39a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
40a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    @Before
41a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    public void setup() throws Exception {
42a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        mInner = mock(DozeMachine.Service.class);
43a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        mWrapper = new DozeSuspendScreenStatePreventingAdapter(mInner);
44a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    }
45a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
46a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    @Test
47a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    public void forwards_finish() throws Exception {
48a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        mWrapper.finish();
49a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        verify(mInner).finish();
50a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    }
51a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
52a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    @Test
53a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    public void forwards_setDozeScreenState_on() throws Exception {
54a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        mWrapper.setDozeScreenState(Display.STATE_ON);
55a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        verify(mInner).setDozeScreenState(Display.STATE_ON);
56a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    }
57a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
58a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    @Test
59a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    public void forwards_setDozeScreenState_off() throws Exception {
60a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        mWrapper.setDozeScreenState(Display.STATE_OFF);
61a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        verify(mInner).setDozeScreenState(Display.STATE_OFF);
62a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    }
63a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
64a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    @Test
65a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    public void forwards_setDozeScreenState_doze() throws Exception {
66a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        mWrapper.setDozeScreenState(Display.STATE_DOZE);
67a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        verify(mInner).setDozeScreenState(Display.STATE_DOZE);
68a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    }
69a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
70a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    @Test
71a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    public void forwards_setDozeScreenState_doze_suspend() throws Exception {
72a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        mWrapper.setDozeScreenState(Display.STATE_DOZE_SUSPEND);
73a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        verify(mInner).setDozeScreenState(Display.STATE_DOZE);
74a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    }
75a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
76a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    @Test
77a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    public void forwards_requestWakeUp() throws Exception {
78a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        mWrapper.requestWakeUp();
79a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        verify(mInner).requestWakeUp();
80a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    }
81a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
82a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    @Test
83a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    public void wrapIfNeeded_needed() throws Exception {
84a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        DozeParameters params = mock(DozeParameters.class);
85a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        when(params.getDozeSuspendDisplayStateSupported()).thenReturn(false);
86a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
87a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        assertEquals(DozeSuspendScreenStatePreventingAdapter.class,
88a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos                DozeSuspendScreenStatePreventingAdapter.wrapIfNeeded(mInner, params).getClass());
89a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    }
90a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
91a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    @Test
92a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    public void wrapIfNeeded_not_needed() throws Exception {
93a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        DozeParameters params = mock(DozeParameters.class);
94a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        when(params.getDozeSuspendDisplayStateSupported()).thenReturn(true);
95a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos
96a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos        assertSame(mInner, DozeSuspendScreenStatePreventingAdapter.wrapIfNeeded(mInner, params));
97a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos    }
98a1e6b3157cd5cfc7a3a70f0a9671447d0849c642Adrian Roos}