1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.systemui.keyguard; 18 19 import static org.mockito.Mockito.times; 20 import static org.mockito.Mockito.verify; 21 22 import androidx.test.filters.SmallTest; 23 import androidx.test.runner.AndroidJUnit4; 24 25 import com.android.internal.policy.IKeyguardDismissCallback; 26 import com.android.systemui.SysuiTestCase; 27 import com.android.systemui.util.concurrency.FakeExecutor; 28 import com.android.systemui.util.time.FakeSystemClock; 29 30 import org.junit.Before; 31 import org.junit.Test; 32 import org.junit.runner.RunWith; 33 import org.mockito.Mock; 34 import org.mockito.MockitoAnnotations; 35 36 /** 37 * runtest systemui -c com.android.systemui.keyguard.DismissCallbackRegistryTest 38 */ 39 @SmallTest 40 @RunWith(AndroidJUnit4.class) 41 public class DismissCallbackRegistryTest extends SysuiTestCase { 42 43 private DismissCallbackRegistry mDismissCallbackRegistry; 44 private @Mock IKeyguardDismissCallback mMockCallback; 45 private @Mock IKeyguardDismissCallback mMockCallback2; 46 private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock()); 47 48 @Before setUp()49 public void setUp() throws Exception { 50 mDismissCallbackRegistry = new DismissCallbackRegistry(mUiBgExecutor); 51 MockitoAnnotations.initMocks(this); 52 } 53 54 @Test testCancelled()55 public void testCancelled() throws Exception { 56 mDismissCallbackRegistry.addCallback(mMockCallback); 57 mDismissCallbackRegistry.notifyDismissCancelled(); 58 mUiBgExecutor.runAllReady(); 59 verify(mMockCallback).onDismissCancelled(); 60 } 61 62 @Test testCancelled_multiple()63 public void testCancelled_multiple() throws Exception { 64 mDismissCallbackRegistry.addCallback(mMockCallback); 65 mDismissCallbackRegistry.addCallback(mMockCallback2); 66 mDismissCallbackRegistry.notifyDismissCancelled(); 67 mUiBgExecutor.runAllReady(); 68 verify(mMockCallback).onDismissCancelled(); 69 verify(mMockCallback2).onDismissCancelled(); 70 } 71 72 @Test testSucceeded()73 public void testSucceeded() throws Exception { 74 mDismissCallbackRegistry.addCallback(mMockCallback); 75 mDismissCallbackRegistry.notifyDismissSucceeded(); 76 mUiBgExecutor.runAllReady(); 77 verify(mMockCallback).onDismissSucceeded(); 78 } 79 80 @Test testSucceeded_multiple()81 public void testSucceeded_multiple() throws Exception { 82 mDismissCallbackRegistry.addCallback(mMockCallback); 83 mDismissCallbackRegistry.addCallback(mMockCallback2); 84 mDismissCallbackRegistry.notifyDismissSucceeded(); 85 mUiBgExecutor.runAllReady(); 86 verify(mMockCallback).onDismissSucceeded(); 87 verify(mMockCallback2).onDismissSucceeded(); 88 } 89 90 @Test testOnlyOnce()91 public void testOnlyOnce() throws Exception { 92 mDismissCallbackRegistry.addCallback(mMockCallback); 93 mDismissCallbackRegistry.notifyDismissSucceeded(); 94 mDismissCallbackRegistry.notifyDismissSucceeded(); 95 mUiBgExecutor.runAllReady(); 96 verify(mMockCallback, times(1)).onDismissSucceeded(); 97 } 98 } 99