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