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.assertFalse; 20369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport static org.junit.Assert.assertTrue; 21369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 22369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport android.support.test.filters.SmallTest; 23369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport android.testing.AndroidTestingRunner; 24369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 25369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport com.android.systemui.SysuiTestCase; 26369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 27369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport org.junit.Before; 28369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport org.junit.Test; 29369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport org.junit.runner.RunWith; 30369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 31369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roosimport java.util.ArrayList; 32369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 33369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos@RunWith(AndroidTestingRunner.class) 34369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos@SmallTest 35369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roospublic class LifecycleTest extends SysuiTestCase { 36369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 37369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos private final Object mObj1 = new Object(); 38369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos private final Object mObj2 = new Object(); 39369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 40369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos private Lifecycle<Object> mLifecycle; 41369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos private ArrayList<Object> mDispatchedObjects; 42369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 43369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos @Before 44369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos public void setUp() throws Exception { 45369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mLifecycle = new Lifecycle<>(); 46369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mDispatchedObjects = new ArrayList<>(); 47369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos } 48369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 49369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos @Test 50369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos public void addObserver_addsObserver() throws Exception { 51369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mLifecycle.addObserver(mObj1); 52369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 53369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mLifecycle.dispatch(mDispatchedObjects::add); 54369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 55369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos assertTrue(mDispatchedObjects.contains(mObj1)); 56369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos } 57369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 58369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos @Test 59369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos public void removeObserver() throws Exception { 60369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mLifecycle.addObserver(mObj1); 61369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mLifecycle.removeObserver(mObj1); 62369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 63369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mLifecycle.dispatch(mDispatchedObjects::add); 64369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 65369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos assertFalse(mDispatchedObjects.contains(mObj1)); 66369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos } 67369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 68369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos @Test 69369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos public void dispatch() throws Exception { 70369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mLifecycle.addObserver(mObj1); 71369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mLifecycle.addObserver(mObj2); 72369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 73369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos mLifecycle.dispatch(mDispatchedObjects::add); 74369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 75369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos assertTrue(mDispatchedObjects.contains(mObj1)); 76369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos assertTrue(mDispatchedObjects.contains(mObj2)); 77369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos } 78369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos 79369907f02efd7f25d8063f38ecef6cf65c703572Adrian Roos}