Loading packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/data/repository/AncSliceRepositoryTest.kt +34 −39 Original line number Diff line number Diff line Loading @@ -18,20 +18,13 @@ package com.android.systemui.volume.panel.component.anc.data.repository import android.bluetooth.BluetoothDevice import android.net.Uri import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.settingslib.bluetooth.CachedBluetoothDevice import com.android.settingslib.media.BluetoothMediaDevice import com.android.settingslib.media.MediaDevice import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.volume.localMediaRepository import com.android.systemui.volume.localMediaRepositoryFactory import com.android.systemui.volume.panel.component.anc.FakeSliceFactory import com.android.systemui.volume.panel.component.anc.sliceViewManager import com.google.common.truth.Truth.assertThat Loading @@ -41,10 +34,14 @@ import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.mock import org.mockito.kotlin.whenever @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) @TestableLooper.RunWithLooper(setAsMainLooper = true) class AncSliceRepositoryTest : SysuiTestCase() { private val kosmos = testKosmos() Loading @@ -57,23 +54,23 @@ class AncSliceRepositoryTest : SysuiTestCase() { val slice = FakeSliceFactory.createSlice(hasError = false, hasSliceItem = true) whenever(sliceViewManager.bindSlice(any<Uri>())).thenReturn(slice) underTest = AncSliceRepositoryImpl( localMediaRepositoryFactory, testScope.testScheduler, testScope.testScheduler, sliceViewManager, ) underTest = AncSliceRepositoryImpl(testScope.testScheduler, sliceViewManager) } } @Test fun noConnectedDevice_noSlice() { fun connectedDevice_noUri_noSlice() { with(kosmos) { testScope.runTest { localMediaRepository.updateCurrentConnectedDevice(null) val slice by collectLastValue(underTest.ancSlice(1, false, false)) val slice by collectLastValue( underTest.ancSlice( device = createMediaDevice(""), width = 1, isCollapsed = false, hideLabel = false, ) ) runCurrent() assertThat(slice).isNull() Loading @@ -82,12 +79,18 @@ class AncSliceRepositoryTest : SysuiTestCase() { } @Test fun connectedDevice_sliceReturned() { fun connectedDevice_hasUri_sliceReturned() { with(kosmos) { testScope.runTest { localMediaRepository.updateCurrentConnectedDevice(createMediaDevice()) val slice by collectLastValue(underTest.ancSlice(1, false, false)) val slice by collectLastValue( underTest.ancSlice( device = createMediaDevice("content://test.slice"), width = 1, isCollapsed = false, hideLabel = false, ) ) runCurrent() assertThat(slice).isNotNull() Loading @@ -95,9 +98,8 @@ class AncSliceRepositoryTest : SysuiTestCase() { } } private fun createMediaDevice(sliceUri: String = "content://test.slice"): MediaDevice { val bluetoothDevice: BluetoothDevice = mock { whenever(getMetadata(any())) private fun createMediaDevice(sliceUri: String): BluetoothDevice = mock { on { getMetadata(any()) } .thenReturn( ("<HEARABLE_CONTROL_SLICE_WITH_WIDTH>" + sliceUri + Loading @@ -105,11 +107,4 @@ class AncSliceRepositoryTest : SysuiTestCase() { .toByteArray() ) } val cachedBluetoothDevice: CachedBluetoothDevice = mock { whenever(device).thenReturn(bluetoothDevice) } return mock<BluetoothMediaDevice> { whenever(cachedDevice).thenReturn(cachedBluetoothDevice) } } } packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/AncAvailabilityCriteriaTest.kt +10 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package com.android.systemui.volume.panel.component.anc.domain import android.media.AudioManager import android.net.Uri import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase Loading @@ -26,10 +28,13 @@ import com.android.systemui.testKosmos import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.volume.data.repository.audioRepository import com.android.systemui.volume.localMediaRepository import com.android.systemui.volume.panel.component.anc.FakeSliceFactory import com.android.systemui.volume.panel.component.anc.ancSliceInteractor import com.android.systemui.volume.panel.component.anc.ancSliceRepository import com.android.systemui.volume.panel.component.anc.sliceViewManager import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.TestMediaDevicesFactory import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent Loading @@ -41,6 +46,7 @@ import org.junit.runner.RunWith @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) @TestableLooper.RunWithLooper(setAsMainLooper = true) class AncAvailabilityCriteriaTest : SysuiTestCase() { private val kosmos = testKosmos() Loading Loading @@ -74,6 +80,10 @@ class AncAvailabilityCriteriaTest : SysuiTestCase() { fun hasSlice_available() { with(kosmos) { testScope.runTest { audioRepository.setMode(AudioManager.MODE_NORMAL) localMediaRepository.updateCurrentConnectedDevice( TestMediaDevicesFactory.bluetoothMediaDevice() ) ancSliceRepository.putSlice( 1, FakeSliceFactory.createSlice(hasError = false, hasSliceItem = true) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/interactor/AncSliceInteractorTest.kt +33 −6 Original line number Diff line number Diff line Loading @@ -16,15 +16,21 @@ package com.android.systemui.volume.panel.component.anc.domain.interactor import android.media.AudioManager import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.volume.data.repository.audioRepository import com.android.systemui.volume.localMediaRepository import com.android.systemui.volume.panel.component.anc.FakeSliceFactory import com.android.systemui.volume.panel.component.anc.ancSliceInteractor import com.android.systemui.volume.panel.component.anc.ancSliceRepository import com.android.systemui.volume.panel.component.anc.domain.model.AncSlices import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.TestMediaDevicesFactory import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent Loading @@ -36,6 +42,7 @@ import org.junit.runner.RunWith @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) @TestableLooper.RunWithLooper(setAsMainLooper = true) class AncSliceInteractorTest : SysuiTestCase() { private val kosmos = testKosmos() Loading @@ -43,14 +50,12 @@ class AncSliceInteractorTest : SysuiTestCase() { private lateinit var underTest: AncSliceInteractor @Before fun setup() { with(kosmos) { underTest = AncSliceInteractor(ancSliceRepository, testScope.backgroundScope) } fun setUp() { underTest = kosmos.ancSliceInteractor } @Test fun errorSlice_returnsNull() { fun errorSlice_returnsUnavailable() { with(kosmos) { testScope.runTest { ancSliceRepository.putSlice( Loading @@ -67,7 +72,7 @@ class AncSliceInteractorTest : SysuiTestCase() { } @Test fun noSliceItem_returnsNull() { fun noSliceItem_returnsUnavailable() { with(kosmos) { testScope.runTest { ancSliceRepository.putSlice( Loading @@ -83,10 +88,32 @@ class AncSliceInteractorTest : SysuiTestCase() { } } @Test fun sliceItem_noError_noDevice_returnsUnavailable() { with(kosmos) { testScope.runTest { ancSliceRepository.putSlice( 1, FakeSliceFactory.createSlice(hasError = false, hasSliceItem = true) ) val slice by collectLastValue(underTest.ancSlices) runCurrent() assertThat(slice).isInstanceOf(AncSlices.Unavailable::class.java) } } } @Test fun sliceItem_noError_returnsSlice() { with(kosmos) { testScope.runTest { audioRepository.setMode(AudioManager.MODE_NORMAL) localMediaRepository.updateCurrentConnectedDevice( TestMediaDevicesFactory.bluetoothMediaDevice() ) ancSliceRepository.putSlice( 1, FakeSliceFactory.createSlice(hasError = false, hasSliceItem = true) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/SpatialAudioComponentKosmos.kt +2 −2 Original line number Diff line number Diff line Loading @@ -19,13 +19,13 @@ package com.android.systemui.volume.panel.component.spatial import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.media.spatializerInteractor import com.android.systemui.volume.mediaOutputInteractor import com.android.systemui.volume.domain.interactor.audioOutputInteractor import com.android.systemui.volume.panel.component.spatial.domain.interactor.SpatialAudioComponentInteractor val Kosmos.spatialAudioComponentInteractor by Kosmos.Fixture { SpatialAudioComponentInteractor( mediaOutputInteractor, audioOutputInteractor, spatializerInteractor, testScope.backgroundScope ) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/interactor/SpatialAudioComponentInteractorTest.kt +2 −8 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues import com.android.systemui.kosmos.testScope import com.android.systemui.media.spatializerInteractor import com.android.systemui.media.spatializerRepository import com.android.systemui.testKosmos import com.android.systemui.util.mockito.mock Loading @@ -37,9 +36,9 @@ import com.android.systemui.util.mockito.whenever import com.android.systemui.volume.localMediaController import com.android.systemui.volume.localMediaRepository import com.android.systemui.volume.mediaControllerRepository import com.android.systemui.volume.mediaOutputInteractor import com.android.systemui.volume.panel.component.spatial.domain.model.SpatialAudioAvailabilityModel import com.android.systemui.volume.panel.component.spatial.domain.model.SpatialAudioEnabledModel import com.android.systemui.volume.panel.component.spatial.spatialAudioComponentInteractor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent Loading Loading @@ -76,12 +75,7 @@ class SpatialAudioComponentInteractorTest : SysuiTestCase() { mediaControllerRepository.setActiveSessions(listOf(localMediaController)) underTest = SpatialAudioComponentInteractor( mediaOutputInteractor, spatializerInteractor, testScope.backgroundScope, ) underTest = spatialAudioComponentInteractor } } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/data/repository/AncSliceRepositoryTest.kt +34 −39 Original line number Diff line number Diff line Loading @@ -18,20 +18,13 @@ package com.android.systemui.volume.panel.component.anc.data.repository import android.bluetooth.BluetoothDevice import android.net.Uri import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.settingslib.bluetooth.CachedBluetoothDevice import com.android.settingslib.media.BluetoothMediaDevice import com.android.settingslib.media.MediaDevice import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.volume.localMediaRepository import com.android.systemui.volume.localMediaRepositoryFactory import com.android.systemui.volume.panel.component.anc.FakeSliceFactory import com.android.systemui.volume.panel.component.anc.sliceViewManager import com.google.common.truth.Truth.assertThat Loading @@ -41,10 +34,14 @@ import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.any import org.mockito.kotlin.mock import org.mockito.kotlin.whenever @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) @TestableLooper.RunWithLooper(setAsMainLooper = true) class AncSliceRepositoryTest : SysuiTestCase() { private val kosmos = testKosmos() Loading @@ -57,23 +54,23 @@ class AncSliceRepositoryTest : SysuiTestCase() { val slice = FakeSliceFactory.createSlice(hasError = false, hasSliceItem = true) whenever(sliceViewManager.bindSlice(any<Uri>())).thenReturn(slice) underTest = AncSliceRepositoryImpl( localMediaRepositoryFactory, testScope.testScheduler, testScope.testScheduler, sliceViewManager, ) underTest = AncSliceRepositoryImpl(testScope.testScheduler, sliceViewManager) } } @Test fun noConnectedDevice_noSlice() { fun connectedDevice_noUri_noSlice() { with(kosmos) { testScope.runTest { localMediaRepository.updateCurrentConnectedDevice(null) val slice by collectLastValue(underTest.ancSlice(1, false, false)) val slice by collectLastValue( underTest.ancSlice( device = createMediaDevice(""), width = 1, isCollapsed = false, hideLabel = false, ) ) runCurrent() assertThat(slice).isNull() Loading @@ -82,12 +79,18 @@ class AncSliceRepositoryTest : SysuiTestCase() { } @Test fun connectedDevice_sliceReturned() { fun connectedDevice_hasUri_sliceReturned() { with(kosmos) { testScope.runTest { localMediaRepository.updateCurrentConnectedDevice(createMediaDevice()) val slice by collectLastValue(underTest.ancSlice(1, false, false)) val slice by collectLastValue( underTest.ancSlice( device = createMediaDevice("content://test.slice"), width = 1, isCollapsed = false, hideLabel = false, ) ) runCurrent() assertThat(slice).isNotNull() Loading @@ -95,9 +98,8 @@ class AncSliceRepositoryTest : SysuiTestCase() { } } private fun createMediaDevice(sliceUri: String = "content://test.slice"): MediaDevice { val bluetoothDevice: BluetoothDevice = mock { whenever(getMetadata(any())) private fun createMediaDevice(sliceUri: String): BluetoothDevice = mock { on { getMetadata(any()) } .thenReturn( ("<HEARABLE_CONTROL_SLICE_WITH_WIDTH>" + sliceUri + Loading @@ -105,11 +107,4 @@ class AncSliceRepositoryTest : SysuiTestCase() { .toByteArray() ) } val cachedBluetoothDevice: CachedBluetoothDevice = mock { whenever(device).thenReturn(bluetoothDevice) } return mock<BluetoothMediaDevice> { whenever(cachedDevice).thenReturn(cachedBluetoothDevice) } } }
packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/AncAvailabilityCriteriaTest.kt +10 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package com.android.systemui.volume.panel.component.anc.domain import android.media.AudioManager import android.net.Uri import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase Loading @@ -26,10 +28,13 @@ import com.android.systemui.testKosmos import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.volume.data.repository.audioRepository import com.android.systemui.volume.localMediaRepository import com.android.systemui.volume.panel.component.anc.FakeSliceFactory import com.android.systemui.volume.panel.component.anc.ancSliceInteractor import com.android.systemui.volume.panel.component.anc.ancSliceRepository import com.android.systemui.volume.panel.component.anc.sliceViewManager import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.TestMediaDevicesFactory import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent Loading @@ -41,6 +46,7 @@ import org.junit.runner.RunWith @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) @TestableLooper.RunWithLooper(setAsMainLooper = true) class AncAvailabilityCriteriaTest : SysuiTestCase() { private val kosmos = testKosmos() Loading Loading @@ -74,6 +80,10 @@ class AncAvailabilityCriteriaTest : SysuiTestCase() { fun hasSlice_available() { with(kosmos) { testScope.runTest { audioRepository.setMode(AudioManager.MODE_NORMAL) localMediaRepository.updateCurrentConnectedDevice( TestMediaDevicesFactory.bluetoothMediaDevice() ) ancSliceRepository.putSlice( 1, FakeSliceFactory.createSlice(hasError = false, hasSliceItem = true) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/anc/domain/interactor/AncSliceInteractorTest.kt +33 −6 Original line number Diff line number Diff line Loading @@ -16,15 +16,21 @@ package com.android.systemui.volume.panel.component.anc.domain.interactor import android.media.AudioManager import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.volume.data.repository.audioRepository import com.android.systemui.volume.localMediaRepository import com.android.systemui.volume.panel.component.anc.FakeSliceFactory import com.android.systemui.volume.panel.component.anc.ancSliceInteractor import com.android.systemui.volume.panel.component.anc.ancSliceRepository import com.android.systemui.volume.panel.component.anc.domain.model.AncSlices import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.TestMediaDevicesFactory import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent Loading @@ -36,6 +42,7 @@ import org.junit.runner.RunWith @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) @TestableLooper.RunWithLooper(setAsMainLooper = true) class AncSliceInteractorTest : SysuiTestCase() { private val kosmos = testKosmos() Loading @@ -43,14 +50,12 @@ class AncSliceInteractorTest : SysuiTestCase() { private lateinit var underTest: AncSliceInteractor @Before fun setup() { with(kosmos) { underTest = AncSliceInteractor(ancSliceRepository, testScope.backgroundScope) } fun setUp() { underTest = kosmos.ancSliceInteractor } @Test fun errorSlice_returnsNull() { fun errorSlice_returnsUnavailable() { with(kosmos) { testScope.runTest { ancSliceRepository.putSlice( Loading @@ -67,7 +72,7 @@ class AncSliceInteractorTest : SysuiTestCase() { } @Test fun noSliceItem_returnsNull() { fun noSliceItem_returnsUnavailable() { with(kosmos) { testScope.runTest { ancSliceRepository.putSlice( Loading @@ -83,10 +88,32 @@ class AncSliceInteractorTest : SysuiTestCase() { } } @Test fun sliceItem_noError_noDevice_returnsUnavailable() { with(kosmos) { testScope.runTest { ancSliceRepository.putSlice( 1, FakeSliceFactory.createSlice(hasError = false, hasSliceItem = true) ) val slice by collectLastValue(underTest.ancSlices) runCurrent() assertThat(slice).isInstanceOf(AncSlices.Unavailable::class.java) } } } @Test fun sliceItem_noError_returnsSlice() { with(kosmos) { testScope.runTest { audioRepository.setMode(AudioManager.MODE_NORMAL) localMediaRepository.updateCurrentConnectedDevice( TestMediaDevicesFactory.bluetoothMediaDevice() ) ancSliceRepository.putSlice( 1, FakeSliceFactory.createSlice(hasError = false, hasSliceItem = true) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/SpatialAudioComponentKosmos.kt +2 −2 Original line number Diff line number Diff line Loading @@ -19,13 +19,13 @@ package com.android.systemui.volume.panel.component.spatial import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.media.spatializerInteractor import com.android.systemui.volume.mediaOutputInteractor import com.android.systemui.volume.domain.interactor.audioOutputInteractor import com.android.systemui.volume.panel.component.spatial.domain.interactor.SpatialAudioComponentInteractor val Kosmos.spatialAudioComponentInteractor by Kosmos.Fixture { SpatialAudioComponentInteractor( mediaOutputInteractor, audioOutputInteractor, spatializerInteractor, testScope.backgroundScope ) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/spatial/domain/interactor/SpatialAudioComponentInteractorTest.kt +2 −8 Original line number Diff line number Diff line Loading @@ -29,7 +29,6 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues import com.android.systemui.kosmos.testScope import com.android.systemui.media.spatializerInteractor import com.android.systemui.media.spatializerRepository import com.android.systemui.testKosmos import com.android.systemui.util.mockito.mock Loading @@ -37,9 +36,9 @@ import com.android.systemui.util.mockito.whenever import com.android.systemui.volume.localMediaController import com.android.systemui.volume.localMediaRepository import com.android.systemui.volume.mediaControllerRepository import com.android.systemui.volume.mediaOutputInteractor import com.android.systemui.volume.panel.component.spatial.domain.model.SpatialAudioAvailabilityModel import com.android.systemui.volume.panel.component.spatial.domain.model.SpatialAudioEnabledModel import com.android.systemui.volume.panel.component.spatial.spatialAudioComponentInteractor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent Loading Loading @@ -76,12 +75,7 @@ class SpatialAudioComponentInteractorTest : SysuiTestCase() { mediaControllerRepository.setActiveSessions(listOf(localMediaController)) underTest = SpatialAudioComponentInteractor( mediaOutputInteractor, spatializerInteractor, testScope.backgroundScope, ) underTest = spatialAudioComponentInteractor } } Loading