1369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos/*
2369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos * Copyright (C) 2017 The Android Open Source Project
3369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos *
4369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos * Licensed under the Apache License, Version 2.0 (the "License");
5369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos * you may not use this file except in compliance with the License.
6369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos * You may obtain a copy of the License at
7369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos *
8369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos *      http://www.apache.org/licenses/LICENSE-2.0
9369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos *
10369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos * Unless required by applicable law or agreed to in writing, software
11369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos * distributed under the License is distributed on an "AS IS" BASIS,
12369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos * See the License for the specific language governing permissions and
14369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos * limitations under the License.
15369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos */
16369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
17369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roospackage com.android.systemui.keyguard;
18369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
19369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport static org.junit.Assert.assertEquals;
20369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport static org.mockito.Mockito.mock;
21369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport static org.mockito.Mockito.verify;
22369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport static org.mockito.Mockito.verifyNoMoreInteractions;
23369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
24369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport android.support.test.filters.SmallTest;
25369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport android.testing.AndroidTestingRunner;
26369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
27369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport com.android.systemui.SysuiTestCase;
28369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
29369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport org.junit.Before;
30369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport org.junit.Test;
31369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport org.junit.runner.RunWith;
32369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
33369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport java.io.ByteArrayOutputStream;
34369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport java.io.PrintWriter;
35369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
36369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos@RunWith(AndroidTestingRunner.class)
37369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos@SmallTest
38369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roospublic class ScreenLifecycleTest extends SysuiTestCase {
39369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
40369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    private ScreenLifecycle mScreen;
41369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    private ScreenLifecycle.Observer mScreenObserverMock;
42369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
43369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Before
44369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void setUp() throws Exception {
45369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen = new ScreenLifecycle();
46369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreenObserverMock = mock(ScreenLifecycle.Observer.class);
47369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.addObserver(mScreenObserverMock);
48369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
49369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
50369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
51369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void baseState() throws Exception {
52369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(ScreenLifecycle.SCREEN_OFF, mScreen.getScreenState());
53369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verifyNoMoreInteractions(mScreenObserverMock);
54369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
55369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
56369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
57369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void screenTurningOn() throws Exception {
58369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurningOn();
59369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
60369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(ScreenLifecycle.SCREEN_TURNING_ON, mScreen.getScreenState());
61369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verify(mScreenObserverMock).onScreenTurningOn();
62369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
63369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
64369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
65369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void screenTurnedOn() throws Exception {
66369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurningOn();
67369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurnedOn();
68369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
69369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(ScreenLifecycle.SCREEN_ON, mScreen.getScreenState());
70369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verify(mScreenObserverMock).onScreenTurnedOn();
71369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
72369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
73369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
74369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void screenTurningOff() throws Exception {
75369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurningOn();
76369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurnedOn();
77369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurningOff();
78369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
79369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(ScreenLifecycle.SCREEN_TURNING_OFF, mScreen.getScreenState());
80369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verify(mScreenObserverMock).onScreenTurningOff();
81369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
82369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
83369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
84369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void screenTurnedOff() throws Exception {
85369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurningOn();
86369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurnedOn();
87369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurningOff();
88369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dispatchScreenTurnedOff();
89369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
90369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(ScreenLifecycle.SCREEN_OFF, mScreen.getScreenState());
91369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verify(mScreenObserverMock).onScreenTurnedOff();
92369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
93369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
94369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
95369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void dump() throws Exception {
96369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mScreen.dump(null, new PrintWriter(new ByteArrayOutputStream()), new String[0]);
97369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
98369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos}