1 package com.android.systemui.broadcast 2 3 import android.content.BroadcastReceiver 4 import android.os.UserHandle 5 import android.testing.AndroidTestingRunner 6 import androidx.test.filters.SmallTest 7 import com.android.systemui.SysuiTestCase 8 import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger 9 import com.google.common.truth.Truth.assertThat 10 import org.junit.Before 11 import org.junit.Test 12 import org.junit.runner.RunWith 13 import org.mockito.Mock 14 import org.mockito.Mockito.verify 15 import org.mockito.MockitoAnnotations 16 17 @RunWith(AndroidTestingRunner::class) 18 @SmallTest 19 class PendingRemovalStoreTest : SysuiTestCase() { 20 21 @Mock 22 private lateinit var logger: BroadcastDispatcherLogger 23 @Mock 24 private lateinit var receiverOne: BroadcastReceiver 25 @Mock 26 private lateinit var receiverTwo: BroadcastReceiver 27 28 private lateinit var store: PendingRemovalStore 29 30 @Before 31 fun setUp() { 32 MockitoAnnotations.initMocks(this) 33 34 store = PendingRemovalStore(logger) 35 } 36 37 @Test 38 fun testTagForRemoval_logged() { 39 val user = 10 40 store.tagForRemoval(receiverOne, 10) 41 42 verify(logger).logTagForRemoval(user, receiverOne) 43 } 44 45 @Test 46 fun testClearedPendingRemoval_logged() { 47 val user = UserHandle.USER_ALL 48 store.clearPendingRemoval(receiverOne, user) 49 50 verify(logger).logClearedAfterRemoval(user, receiverOne) 51 } 52 53 @Test 54 fun testTaggedReceiverMarkedAsPending_specificUser() { 55 val user = 10 56 store.tagForRemoval(receiverOne, user) 57 58 assertThat(store.isPendingRemoval(receiverOne, user)).isTrue() 59 assertThat(store.isPendingRemoval(receiverOne, user + 1)).isFalse() 60 assertThat(store.isPendingRemoval(receiverOne, UserHandle.USER_ALL)).isFalse() 61 } 62 63 @Test 64 fun testTaggedReceiverMarkedAsPending_allUsers() { 65 val user = 10 66 store.tagForRemoval(receiverOne, UserHandle.USER_ALL) 67 68 assertThat(store.isPendingRemoval(receiverOne, user)).isTrue() 69 assertThat(store.isPendingRemoval(receiverOne, user + 1)).isTrue() 70 assertThat(store.isPendingRemoval(receiverOne, UserHandle.USER_ALL)).isTrue() 71 } 72 73 @Test 74 fun testOnlyBlockCorrectReceiver() { 75 val user = 10 76 store.tagForRemoval(receiverOne, user) 77 78 assertThat(store.isPendingRemoval(receiverOne, user)).isTrue() 79 assertThat(store.isPendingRemoval(receiverTwo, user)).isFalse() 80 } 81 }