126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos/*
226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos * Copyright (C) 2017 The Android Open Source Project
326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos *
426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos * Licensed under the Apache License, Version 2.0 (the "License");
526d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos * you may not use this file except in compliance with the License.
626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos * You may obtain a copy of the License at
726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos *
826d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos *      http://www.apache.org/licenses/LICENSE-2.0
926d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos *
1026d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos * Unless required by applicable law or agreed to in writing, software
1126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos * distributed under the License is distributed on an "AS IS" BASIS,
1226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos * See the License for the specific language governing permissions and
1426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos * limitations under the License
1526d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos */
1626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
1726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roospackage com.android.systemui.doze;
1826d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
1926d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport static org.junit.Assert.assertEquals;
2026d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport static org.junit.Assert.assertSame;
2126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport static org.mockito.Mockito.mock;
2226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport static org.mockito.Mockito.verify;
2326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport static org.mockito.Mockito.when;
2426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
2526d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport android.support.test.filters.SmallTest;
2626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport android.view.Display;
2726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
28fba8faf5c5f58f115fa3c099da9ef0953b484147Jason Monkimport com.android.systemui.SysuiTestCase;
2926d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport com.android.systemui.statusbar.phone.DozeParameters;
3026d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
3126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport org.junit.Before;
3226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roosimport org.junit.Test;
3326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
3426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos@SmallTest
35fba8faf5c5f58f115fa3c099da9ef0953b484147Jason Monkpublic class DozeScreenStatePreventingAdapterTest extends SysuiTestCase {
3626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
3726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    private DozeMachine.Service mInner;
3826d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    private DozeScreenStatePreventingAdapter mWrapper;
3926d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
4026d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    @Before
4126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    public void setup() throws Exception {
4226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        mInner = mock(DozeMachine.Service.class);
4326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        mWrapper = new DozeScreenStatePreventingAdapter(mInner);
4426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    }
4526d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
4626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    @Test
4726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    public void forwards_finish() throws Exception {
4826d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        mWrapper.finish();
4926d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        verify(mInner).finish();
5026d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    }
5126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
5226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    @Test
5326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    public void forwards_setDozeScreenState_on() throws Exception {
5426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        mWrapper.setDozeScreenState(Display.STATE_ON);
5526d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        verify(mInner).setDozeScreenState(Display.STATE_ON);
5626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    }
5726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
5826d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    @Test
5926d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    public void forwards_setDozeScreenState_off() throws Exception {
6026d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        mWrapper.setDozeScreenState(Display.STATE_OFF);
6126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        verify(mInner).setDozeScreenState(Display.STATE_OFF);
6226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    }
6326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
6426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    @Test
6526d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    public void forwards_setDozeScreenState_doze() throws Exception {
6626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        mWrapper.setDozeScreenState(Display.STATE_DOZE);
6726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        verify(mInner).setDozeScreenState(Display.STATE_ON);
6826d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    }
6926d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
7026d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    @Test
7126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    public void forwards_setDozeScreenState_doze_suspend() throws Exception {
7226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        mWrapper.setDozeScreenState(Display.STATE_DOZE_SUSPEND);
7326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        verify(mInner).setDozeScreenState(Display.STATE_ON);
7426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    }
7526d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
7626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    @Test
7726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    public void forwards_requestWakeUp() throws Exception {
7826d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        mWrapper.requestWakeUp();
7926d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        verify(mInner).requestWakeUp();
8026d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    }
8126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
8226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    @Test
8326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    public void wrapIfNeeded_needed() throws Exception {
8426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        DozeParameters params = mock(DozeParameters.class);
8526d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        when(params.getDisplayStateSupported()).thenReturn(false);
8626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
8726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        assertEquals(DozeScreenStatePreventingAdapter.class,
8826d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos                DozeScreenStatePreventingAdapter.wrapIfNeeded(mInner, params).getClass());
8926d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    }
9026d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
9126d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    @Test
9226d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    public void wrapIfNeeded_not_needed() throws Exception {
9326d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        DozeParameters params = mock(DozeParameters.class);
9426d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        when(params.getDisplayStateSupported()).thenReturn(true);
9526d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos
9626d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos        assertSame(mInner, DozeScreenStatePreventingAdapter.wrapIfNeeded(mInner, params));
9726d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos    }
9826d8184d46d48aae37cc739cb548edf891fc2ce1Adrian Roos}