Loading packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/PerDisplayInstanceRepositoryImplTest.kt +39 −1 Original line number Diff line number Diff line Loading @@ -44,9 +44,10 @@ class PerDisplayInstanceRepositoryImplTest : SysuiTestCase() { private val fakeDisplayRepository = kosmos.displayRepository private val fakePerDisplayInstanceProviderWithTeardown = kosmos.fakePerDisplayInstanceProviderWithTeardown private val lifecycleManager = kosmos.fakeDisplayInstanceLifecycleManager private val underTest: PerDisplayInstanceRepositoryImpl<TestPerDisplayInstance> = kosmos.fakePerDisplayInstanceRepository kosmos.createPerDisplayInstanceRepository(overrideLifecycleManager = null) @Before fun addDisplays() = runBlocking { Loading Loading @@ -109,6 +110,43 @@ class PerDisplayInstanceRepositoryImplTest : SysuiTestCase() { verify(kosmos.dumpManager).registerNormalDumpable(anyString(), any()) } @Test fun perDisplay_afterCustomLifecycleManagerRemovesDisplay_destroyInstanceInvoked() = testScope.runTest { val underTest = kosmos.createPerDisplayInstanceRepository( overrideLifecycleManager = lifecycleManager ) // Let's start with both lifecycleManager.displayIds.value = setOf(DEFAULT_DISPLAY_ID, NON_DEFAULT_DISPLAY_ID) val instance = underTest[NON_DEFAULT_DISPLAY_ID] lifecycleManager.displayIds.value = setOf(DEFAULT_DISPLAY_ID) // Now that the lifecycle manager says so, let's make sure it was destroyed assertThat(fakePerDisplayInstanceProviderWithTeardown.destroyed) .containsExactly(instance) } @Test fun perDisplay_lifecycleManagerDoesNotContainIt_displayRepositoryDoes_returnsNull() = testScope.runTest { val underTest = kosmos.createPerDisplayInstanceRepository( overrideLifecycleManager = lifecycleManager ) // only default display, so getting for the non-default one should fail, despite the // repository having both displays already lifecycleManager.displayIds.value = setOf(DEFAULT_DISPLAY_ID) assertThat(underTest[NON_DEFAULT_DISPLAY_ID]).isNull() lifecycleManager.displayIds.value = setOf(DEFAULT_DISPLAY_ID, NON_DEFAULT_DISPLAY_ID) assertThat(underTest[NON_DEFAULT_DISPLAY_ID]).isNotNull() } private fun createDisplay(displayId: Int): Display = display(type = Display.TYPE_INTERNAL, id = displayId) Loading packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/PerDisplayStoreKosmos.kt +21 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.display.data.repository import com.android.app.displaylib.DisplayInstanceLifecycleManager import com.android.app.displaylib.FakeDisplayInstanceLifecycleManager import com.android.app.displaylib.PerDisplayInstanceProviderWithTeardown import com.android.app.displaylib.PerDisplayInstanceRepositoryImpl import com.android.systemui.dump.dumpManager Loading Loading @@ -69,13 +71,25 @@ val Kosmos.fakePerDisplayInstanceProviderWithTeardown by Kosmos.Fixture { FakePerDisplayInstanceProviderWithTeardown() } val Kosmos.perDisplayDumpHelper by Kosmos.Fixture { PerDisplayRepoDumpHelper(dumpManager) } val Kosmos.fakeDisplayInstanceLifecycleManager by Kosmos.Fixture { FakeDisplayInstanceLifecycleManager() } val Kosmos.fakePerDisplayInstanceRepository by Kosmos.Fixture { { lifecycleManager: DisplayInstanceLifecycleManager? -> PerDisplayInstanceRepositoryImpl( debugName = "fakePerDisplayInstanceRepository", instanceProvider = fakePerDisplayInstanceProviderWithTeardown, lifecycleManager, testScope.backgroundScope, displayRepository, perDisplayDumpHelper, ) } } fun Kosmos.createPerDisplayInstanceRepository( overrideLifecycleManager: DisplayInstanceLifecycleManager? = null ): PerDisplayInstanceRepositoryImpl<TestPerDisplayInstance> { return fakePerDisplayInstanceRepository(overrideLifecycleManager) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/PerDisplayInstanceRepositoryImplTest.kt +39 −1 Original line number Diff line number Diff line Loading @@ -44,9 +44,10 @@ class PerDisplayInstanceRepositoryImplTest : SysuiTestCase() { private val fakeDisplayRepository = kosmos.displayRepository private val fakePerDisplayInstanceProviderWithTeardown = kosmos.fakePerDisplayInstanceProviderWithTeardown private val lifecycleManager = kosmos.fakeDisplayInstanceLifecycleManager private val underTest: PerDisplayInstanceRepositoryImpl<TestPerDisplayInstance> = kosmos.fakePerDisplayInstanceRepository kosmos.createPerDisplayInstanceRepository(overrideLifecycleManager = null) @Before fun addDisplays() = runBlocking { Loading Loading @@ -109,6 +110,43 @@ class PerDisplayInstanceRepositoryImplTest : SysuiTestCase() { verify(kosmos.dumpManager).registerNormalDumpable(anyString(), any()) } @Test fun perDisplay_afterCustomLifecycleManagerRemovesDisplay_destroyInstanceInvoked() = testScope.runTest { val underTest = kosmos.createPerDisplayInstanceRepository( overrideLifecycleManager = lifecycleManager ) // Let's start with both lifecycleManager.displayIds.value = setOf(DEFAULT_DISPLAY_ID, NON_DEFAULT_DISPLAY_ID) val instance = underTest[NON_DEFAULT_DISPLAY_ID] lifecycleManager.displayIds.value = setOf(DEFAULT_DISPLAY_ID) // Now that the lifecycle manager says so, let's make sure it was destroyed assertThat(fakePerDisplayInstanceProviderWithTeardown.destroyed) .containsExactly(instance) } @Test fun perDisplay_lifecycleManagerDoesNotContainIt_displayRepositoryDoes_returnsNull() = testScope.runTest { val underTest = kosmos.createPerDisplayInstanceRepository( overrideLifecycleManager = lifecycleManager ) // only default display, so getting for the non-default one should fail, despite the // repository having both displays already lifecycleManager.displayIds.value = setOf(DEFAULT_DISPLAY_ID) assertThat(underTest[NON_DEFAULT_DISPLAY_ID]).isNull() lifecycleManager.displayIds.value = setOf(DEFAULT_DISPLAY_ID, NON_DEFAULT_DISPLAY_ID) assertThat(underTest[NON_DEFAULT_DISPLAY_ID]).isNotNull() } private fun createDisplay(displayId: Int): Display = display(type = Display.TYPE_INTERNAL, id = displayId) Loading
packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/PerDisplayStoreKosmos.kt +21 −7 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.systemui.display.data.repository import com.android.app.displaylib.DisplayInstanceLifecycleManager import com.android.app.displaylib.FakeDisplayInstanceLifecycleManager import com.android.app.displaylib.PerDisplayInstanceProviderWithTeardown import com.android.app.displaylib.PerDisplayInstanceRepositoryImpl import com.android.systemui.dump.dumpManager Loading Loading @@ -69,13 +71,25 @@ val Kosmos.fakePerDisplayInstanceProviderWithTeardown by Kosmos.Fixture { FakePerDisplayInstanceProviderWithTeardown() } val Kosmos.perDisplayDumpHelper by Kosmos.Fixture { PerDisplayRepoDumpHelper(dumpManager) } val Kosmos.fakeDisplayInstanceLifecycleManager by Kosmos.Fixture { FakeDisplayInstanceLifecycleManager() } val Kosmos.fakePerDisplayInstanceRepository by Kosmos.Fixture { { lifecycleManager: DisplayInstanceLifecycleManager? -> PerDisplayInstanceRepositoryImpl( debugName = "fakePerDisplayInstanceRepository", instanceProvider = fakePerDisplayInstanceProviderWithTeardown, lifecycleManager, testScope.backgroundScope, displayRepository, perDisplayDumpHelper, ) } } fun Kosmos.createPerDisplayInstanceRepository( overrideLifecycleManager: DisplayInstanceLifecycleManager? = null ): PerDisplayInstanceRepositoryImpl<TestPerDisplayInstance> { return fakePerDisplayInstanceRepository(overrideLifecycleManager) }