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;
2116cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupinimport static org.mockito.Mockito.times;
22369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport static org.mockito.Mockito.verify;
23369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport static org.mockito.Mockito.verifyNoMoreInteractions;
24369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
25369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport android.support.test.filters.SmallTest;
26369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport android.testing.AndroidTestingRunner;
27369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
28369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport com.android.systemui.SysuiTestCase;
29369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
30369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport org.junit.Before;
31369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport org.junit.Test;
32369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport org.junit.runner.RunWith;
33369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
34369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport java.io.ByteArrayOutputStream;
35369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport java.io.PrintWriter;
36369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
37369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos@RunWith(AndroidTestingRunner.class)
38369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos@SmallTest
39369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roospublic class WakefulnessLifecycleTest extends SysuiTestCase {
40369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
41369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    private WakefulnessLifecycle mWakefulness;
42369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    private WakefulnessLifecycle.Observer mWakefulnessObserver;
43369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
44369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Before
45369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void setUp() throws Exception {
46369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness = new WakefulnessLifecycle();
47369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulnessObserver = mock(WakefulnessLifecycle.Observer.class);
48369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.addObserver(mWakefulnessObserver);
49369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
50369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
51369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
52369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void baseState() throws Exception {
53369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(WakefulnessLifecycle.WAKEFULNESS_ASLEEP, mWakefulness.getWakefulness());
54369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
55369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verifyNoMoreInteractions(mWakefulnessObserver);
56369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
57369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
58369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
59369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void dispatchStartedWakingUp() throws Exception {
60369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchStartedWakingUp();
61369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
62369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(WakefulnessLifecycle.WAKEFULNESS_WAKING, mWakefulness.getWakefulness());
63369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
64369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verify(mWakefulnessObserver).onStartedWakingUp();
65369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
66369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
67369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
68369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void dispatchFinishedWakingUp() throws Exception {
69369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchStartedWakingUp();
70369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchFinishedWakingUp();
71369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
72369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(WakefulnessLifecycle.WAKEFULNESS_AWAKE, mWakefulness.getWakefulness());
73369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
74369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verify(mWakefulnessObserver).onFinishedWakingUp();
75369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
76369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
77369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
78369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void dispatchStartedGoingToSleep() throws Exception {
79369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchStartedWakingUp();
80369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchFinishedWakingUp();
81369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchStartedGoingToSleep();
82369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
83369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP,
84369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos                mWakefulness.getWakefulness());
85369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
86369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verify(mWakefulnessObserver).onStartedGoingToSleep();
87369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
88369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
89369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
90369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void dispatchFinishedGoingToSleep() throws Exception {
91369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchStartedWakingUp();
92369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchFinishedWakingUp();
93369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchStartedGoingToSleep();
94369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dispatchFinishedGoingToSleep();
95369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
96369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        assertEquals(WakefulnessLifecycle.WAKEFULNESS_ASLEEP,
97369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos                mWakefulness.getWakefulness());
98369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
99369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        verify(mWakefulnessObserver).onFinishedGoingToSleep();
100369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
101369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
102369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    @Test
10316cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin    public void doesNotDispatchTwice() throws Exception {
10416cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        mWakefulness.dispatchStartedWakingUp();
10516cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        mWakefulness.dispatchStartedWakingUp();
10616cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        mWakefulness.dispatchFinishedWakingUp();
10716cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        mWakefulness.dispatchFinishedWakingUp();
10816cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        mWakefulness.dispatchStartedGoingToSleep();
10916cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        mWakefulness.dispatchStartedGoingToSleep();
11016cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        mWakefulness.dispatchFinishedGoingToSleep();
11116cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        mWakefulness.dispatchFinishedGoingToSleep();
11216cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin
11316cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        verify(mWakefulnessObserver, times(1)).onStartedGoingToSleep();
11416cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        verify(mWakefulnessObserver, times(1)).onFinishedGoingToSleep();
11516cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        verify(mWakefulnessObserver, times(1)).onStartedWakingUp();
11616cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin        verify(mWakefulnessObserver, times(1)).onFinishedWakingUp();
11716cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin    }
11816cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin
11916cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin    @Test
120369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    public void dump() throws Exception {
121369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos        mWakefulness.dump(null, new PrintWriter(new ByteArrayOutputStream()), new String[0]);
122369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos    }
123369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos
124369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos}