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}