1 package com.android.systemui.keyguard.ui.preview 2 3 import androidx.test.ext.junit.runners.AndroidJUnit4 4 import androidx.test.filters.SmallTest 5 import com.android.systemui.SysuiTestCase 6 import com.android.systemui.util.mockito.mock 7 import com.google.common.truth.Truth.assertThat 8 import kotlinx.coroutines.test.StandardTestDispatcher 9 import kotlinx.coroutines.test.TestScope 10 import kotlinx.coroutines.test.runTest 11 import org.junit.Test 12 import org.junit.runner.RunWith 13 14 @SmallTest 15 @RunWith(AndroidJUnit4::class) 16 @android.platform.test.annotations.EnabledOnRavenwood 17 class KeyguardRemotePreviewManagerTest : SysuiTestCase() { 18 19 private val testDispatcher = StandardTestDispatcher() 20 private val testScope = TestScope(testDispatcher) 21 22 @Test onDestroy_clearsReferencesToRenderernull23 fun onDestroy_clearsReferencesToRenderer() = 24 testScope.runTest { 25 val renderer = mock<KeyguardPreviewRenderer>() 26 val onDestroy: (PreviewLifecycleObserver) -> Unit = {} 27 28 val observer = PreviewLifecycleObserver(this, testDispatcher, renderer, onDestroy) 29 30 // Precondition check. 31 assertThat(observer.renderer).isNotNull() 32 assertThat(observer.onDestroy).isNotNull() 33 34 observer.onDestroy() 35 36 // The verification checks renderer/requestDestruction lambda because they-re 37 // non-singletons which can't leak KeyguardPreviewRenderer. 38 assertThat(observer.renderer).isNull() 39 assertThat(observer.onDestroy).isNull() 40 } 41 } 42