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}