[SB Refactor] Use carrierMergedSubId for the mobile default calculation.
Bug: 272586234 Test: atest MobileConnectionsRepositoryTest MobileIconsInteractorTest Change-Id: I05fa65f3379b2d8bb197d49a47e894ee160138f3
This commit is contained in:
@@ -60,6 +60,13 @@ interface MobileConnectionsRepository {
|
||||
*/
|
||||
val mobileIsDefault: StateFlow<Boolean>
|
||||
|
||||
/**
|
||||
* True if the device currently has a carrier merged connection.
|
||||
*
|
||||
* See [CarrierMergedConnectionRepository] for more info.
|
||||
*/
|
||||
val hasCarrierMergedConnection: Flow<Boolean>
|
||||
|
||||
/** True if the default network connection is validated and false otherwise. */
|
||||
val defaultConnectionIsValidated: StateFlow<Boolean>
|
||||
|
||||
|
||||
@@ -159,6 +159,15 @@ constructor(
|
||||
.flatMapLatest { it.mobileIsDefault }
|
||||
.stateIn(scope, SharingStarted.WhileSubscribed(), realRepository.mobileIsDefault.value)
|
||||
|
||||
override val hasCarrierMergedConnection: StateFlow<Boolean> =
|
||||
activeRepo
|
||||
.flatMapLatest { it.hasCarrierMergedConnection }
|
||||
.stateIn(
|
||||
scope,
|
||||
SharingStarted.WhileSubscribed(),
|
||||
realRepository.hasCarrierMergedConnection.value,
|
||||
)
|
||||
|
||||
override val defaultConnectionIsValidated: StateFlow<Boolean> =
|
||||
activeRepo
|
||||
.flatMapLatest { it.defaultConnectionIsValidated }
|
||||
|
||||
@@ -159,6 +159,9 @@ constructor(
|
||||
// TODO(b/261029387): not yet supported
|
||||
override val mobileIsDefault: StateFlow<Boolean> = MutableStateFlow(true)
|
||||
|
||||
// TODO(b/261029387): not yet supported
|
||||
override val hasCarrierMergedConnection = MutableStateFlow(false)
|
||||
|
||||
// TODO(b/261029387): not yet supported
|
||||
override val defaultConnectionIsValidated: StateFlow<Boolean> = MutableStateFlow(true)
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.flowOn
|
||||
import kotlinx.coroutines.flow.map
|
||||
@@ -257,18 +258,32 @@ constructor(
|
||||
|
||||
override val mobileIsDefault: StateFlow<Boolean> =
|
||||
connectivityRepository.defaultConnections
|
||||
// Because carrier merged networks are displayed as mobile networks, they're
|
||||
// part of the `isDefault` calculation. See b/272586234.
|
||||
.map { it.mobile.isDefault || it.carrierMerged.isDefault }
|
||||
.map { it.mobile.isDefault }
|
||||
.distinctUntilChanged()
|
||||
.logDiffsForTable(
|
||||
tableLogger,
|
||||
columnPrefix = "",
|
||||
columnPrefix = LOGGING_PREFIX,
|
||||
columnName = "mobileIsDefault",
|
||||
initialValue = false,
|
||||
)
|
||||
.stateIn(scope, SharingStarted.WhileSubscribed(), false)
|
||||
|
||||
override val hasCarrierMergedConnection: StateFlow<Boolean> =
|
||||
combine(
|
||||
connectivityRepository.defaultConnections,
|
||||
carrierMergedSubId,
|
||||
) { defaultConnections, carrierMergedSubId ->
|
||||
defaultConnections.carrierMerged.isDefault || carrierMergedSubId != null
|
||||
}
|
||||
.distinctUntilChanged()
|
||||
.logDiffsForTable(
|
||||
tableLogger,
|
||||
columnPrefix = LOGGING_PREFIX,
|
||||
columnName = "hasCarrierMergedConnection",
|
||||
initialValue = false,
|
||||
)
|
||||
.stateIn(scope, SharingStarted.WhileSubscribed(), false)
|
||||
|
||||
override val defaultConnectionIsValidated: StateFlow<Boolean> =
|
||||
connectivityRepository.defaultConnections
|
||||
.map { it.isValidated }
|
||||
|
||||
@@ -114,7 +114,22 @@ constructor(
|
||||
@Application private val scope: CoroutineScope,
|
||||
) : MobileIconsInteractor {
|
||||
|
||||
override val mobileIsDefault = mobileConnectionsRepo.mobileIsDefault
|
||||
override val mobileIsDefault =
|
||||
combine(
|
||||
mobileConnectionsRepo.mobileIsDefault,
|
||||
mobileConnectionsRepo.hasCarrierMergedConnection,
|
||||
) { mobileIsDefault, hasCarrierMergedConnection ->
|
||||
// Because carrier merged networks are displayed as mobile networks, they're part of
|
||||
// the `isDefault` calculation. See b/272586234.
|
||||
mobileIsDefault || hasCarrierMergedConnection
|
||||
}
|
||||
.logDiffsForTable(
|
||||
tableLogger,
|
||||
LOGGING_PREFIX,
|
||||
columnName = "mobileIsDefault",
|
||||
initialValue = false,
|
||||
)
|
||||
.stateIn(scope, SharingStarted.WhileSubscribed(), false)
|
||||
|
||||
override val activeDataConnectionHasDataEnabled: StateFlow<Boolean> =
|
||||
mobileConnectionsRepo.activeMobileDataRepository
|
||||
|
||||
@@ -67,6 +67,8 @@ class FakeMobileConnectionsRepository(
|
||||
|
||||
override val mobileIsDefault = MutableStateFlow(false)
|
||||
|
||||
override val hasCarrierMergedConnection = MutableStateFlow(false)
|
||||
|
||||
override val defaultConnectionIsValidated = MutableStateFlow(false)
|
||||
|
||||
private val subIdRepos = mutableMapOf<Int, MobileConnectionRepository>()
|
||||
|
||||
@@ -67,6 +67,7 @@ import kotlinx.coroutines.flow.filterNotNull
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.yield
|
||||
import org.junit.After
|
||||
import org.junit.Assert.assertThrows
|
||||
import org.junit.Assert.assertTrue
|
||||
@@ -75,7 +76,6 @@ import org.junit.Test
|
||||
import org.mockito.ArgumentMatchers.anyInt
|
||||
import org.mockito.ArgumentMatchers.anyString
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito
|
||||
import org.mockito.Mockito.verify
|
||||
import org.mockito.MockitoAnnotations
|
||||
|
||||
@@ -727,28 +727,6 @@ class MobileConnectionsRepositoryTest : SysuiTestCase() {
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
/** Regression test for b/272586234. */
|
||||
@Test
|
||||
fun mobileIsDefault_carrierMergedViaWifi_isDefault() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val caps =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_WIFI)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(carrierMergedInfo)
|
||||
}
|
||||
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, caps)
|
||||
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mobileIsDefault_carrierMergedViaMobile_isDefault() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
@@ -770,122 +748,6 @@ class MobileConnectionsRepositoryTest : SysuiTestCase() {
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
/** Regression test for b/272586234. */
|
||||
@Test
|
||||
fun mobileIsDefault_carrierMergedViaWifiWithVcnTransport_isDefault() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val caps =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_WIFI)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(VcnTransportInfo(carrierMergedInfo))
|
||||
}
|
||||
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, caps)
|
||||
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mobileIsDefault_carrierMergedViaMobileWithVcnTransport_isDefault() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val caps =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(VcnTransportInfo(carrierMergedInfo))
|
||||
}
|
||||
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, caps)
|
||||
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mobileIsDefault_isCarrierMergedViaUnderlyingWifi_isDefault() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
|
||||
|
||||
val underlyingNetwork = mock<Network>()
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply {
|
||||
whenever(this.isCarrierMerged).thenReturn(true)
|
||||
}
|
||||
val underlyingWifiCapabilities =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_WIFI)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(carrierMergedInfo)
|
||||
}
|
||||
whenever(connectivityManager.getNetworkCapabilities(underlyingNetwork))
|
||||
.thenReturn(underlyingWifiCapabilities)
|
||||
|
||||
// WHEN the main capabilities have an underlying carrier merged network via WIFI
|
||||
// transport and WifiInfo
|
||||
val mainCapabilities =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(null)
|
||||
whenever(it.underlyingNetworks).thenReturn(listOf(underlyingNetwork))
|
||||
}
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, mainCapabilities)
|
||||
|
||||
// THEN carrier merged is default, so mobile is default
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mobileIsDefault_isCarrierMergedViaUnderlyingCellular_isDefault() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
|
||||
|
||||
val underlyingCarrierMergedNetwork = mock<Network>()
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val underlyingCapabilities =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(VcnTransportInfo(carrierMergedInfo))
|
||||
}
|
||||
whenever(
|
||||
connectivityManager.getNetworkCapabilities(underlyingCarrierMergedNetwork)
|
||||
)
|
||||
.thenReturn(underlyingCapabilities)
|
||||
|
||||
// WHEN the main capabilities have an underlying carrier merged network via CELLULAR
|
||||
// transport and VcnTransportInfo
|
||||
val mainCapabilities =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(null)
|
||||
whenever(it.underlyingNetworks)
|
||||
.thenReturn(listOf(underlyingCarrierMergedNetwork))
|
||||
}
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, mainCapabilities)
|
||||
|
||||
// THEN carrier merged is default, so mobile is default
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mobileIsDefault_wifiDefault_mobileNotDefault() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
@@ -922,6 +784,195 @@ class MobileConnectionsRepositoryTest : SysuiTestCase() {
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
/** Regression test for b/272586234. */
|
||||
@Test
|
||||
fun hasCarrierMergedConnection_carrierMergedViaWifi_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val caps =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_WIFI)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(carrierMergedInfo)
|
||||
}
|
||||
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.hasCarrierMergedConnection.onEach { latest = it }.launchIn(this)
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, caps)
|
||||
yield()
|
||||
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun hasCarrierMergedConnection_carrierMergedViaMobile_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val caps =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(carrierMergedInfo)
|
||||
}
|
||||
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.hasCarrierMergedConnection.onEach { latest = it }.launchIn(this)
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, caps)
|
||||
yield()
|
||||
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
/** Regression test for b/272586234. */
|
||||
@Test
|
||||
fun hasCarrierMergedConnection_carrierMergedViaWifiWithVcnTransport_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val caps =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_WIFI)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(VcnTransportInfo(carrierMergedInfo))
|
||||
}
|
||||
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.hasCarrierMergedConnection.onEach { latest = it }.launchIn(this)
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, caps)
|
||||
yield()
|
||||
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun hasCarrierMergedConnection_carrierMergedViaMobileWithVcnTransport_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val caps =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(VcnTransportInfo(carrierMergedInfo))
|
||||
}
|
||||
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.hasCarrierMergedConnection.onEach { latest = it }.launchIn(this)
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, caps)
|
||||
yield()
|
||||
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun hasCarrierMergedConnection_isCarrierMergedViaUnderlyingWifi_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.hasCarrierMergedConnection.onEach { latest = it }.launchIn(this)
|
||||
|
||||
val underlyingNetwork = mock<Network>()
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val underlyingWifiCapabilities =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_WIFI)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(carrierMergedInfo)
|
||||
}
|
||||
whenever(connectivityManager.getNetworkCapabilities(underlyingNetwork))
|
||||
.thenReturn(underlyingWifiCapabilities)
|
||||
|
||||
// WHEN the main capabilities have an underlying carrier merged network via WIFI
|
||||
// transport and WifiInfo
|
||||
val mainCapabilities =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(null)
|
||||
whenever(it.underlyingNetworks).thenReturn(listOf(underlyingNetwork))
|
||||
}
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, mainCapabilities)
|
||||
yield()
|
||||
|
||||
// THEN there's a carrier merged connection
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun hasCarrierMergedConnection_isCarrierMergedViaUnderlyingCellular_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.hasCarrierMergedConnection.onEach { latest = it }.launchIn(this)
|
||||
|
||||
val underlyingCarrierMergedNetwork = mock<Network>()
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(true) }
|
||||
val underlyingCapabilities =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(VcnTransportInfo(carrierMergedInfo))
|
||||
}
|
||||
whenever(connectivityManager.getNetworkCapabilities(underlyingCarrierMergedNetwork))
|
||||
.thenReturn(underlyingCapabilities)
|
||||
|
||||
// WHEN the main capabilities have an underlying carrier merged network via CELLULAR
|
||||
// transport and VcnTransportInfo
|
||||
val mainCapabilities =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_CELLULAR)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(null)
|
||||
whenever(it.underlyingNetworks)
|
||||
.thenReturn(listOf(underlyingCarrierMergedNetwork))
|
||||
}
|
||||
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, mainCapabilities)
|
||||
yield()
|
||||
|
||||
// THEN there's a carrier merged connection
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
/** Regression test for b/272586234. */
|
||||
@Test
|
||||
fun hasCarrierMergedConnection_defaultNotCarrierMerged_butWifiRepoHasCarrierMerged_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.hasCarrierMergedConnection.onEach { latest = it }.launchIn(this)
|
||||
|
||||
// WHEN the default callback isn't carrier merged
|
||||
val carrierMergedInfo =
|
||||
mock<WifiInfo>().apply { whenever(this.isCarrierMerged).thenReturn(false) }
|
||||
val caps =
|
||||
mock<NetworkCapabilities>().also {
|
||||
whenever(it.hasTransport(TRANSPORT_WIFI)).thenReturn(true)
|
||||
whenever(it.transportInfo).thenReturn(carrierMergedInfo)
|
||||
}
|
||||
getDefaultNetworkCallback().onCapabilitiesChanged(NETWORK, caps)
|
||||
yield()
|
||||
|
||||
// BUT the wifi repo has gotten updates that it *is* carrier merged
|
||||
wifiRepository.setWifiNetwork(WIFI_NETWORK_CM)
|
||||
yield()
|
||||
|
||||
// THEN hasCarrierMergedConnection is true
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun defaultConnectionIsValidated_startsAsFalse() {
|
||||
assertThat(underTest.defaultConnectionIsValidated.value).isFalse()
|
||||
|
||||
@@ -455,7 +455,50 @@ class MobileIconsInteractorTest : SysuiTestCase() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mobileIsDefault_usesRepoValue() =
|
||||
fun mobileIsDefault_mobileFalseAndCarrierMergedFalse_false() =
|
||||
testScope.runTest {
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
|
||||
|
||||
connectionsRepository.mobileIsDefault.value = false
|
||||
connectionsRepository.hasCarrierMergedConnection.value = false
|
||||
|
||||
assertThat(latest).isFalse()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mobileIsDefault_mobileTrueAndCarrierMergedFalse_true() =
|
||||
testScope.runTest {
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
|
||||
|
||||
connectionsRepository.mobileIsDefault.value = true
|
||||
connectionsRepository.hasCarrierMergedConnection.value = false
|
||||
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
/** Regression test for b/272586234. */
|
||||
@Test
|
||||
fun mobileIsDefault_mobileFalseAndCarrierMergedTrue_true() =
|
||||
testScope.runTest {
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
|
||||
|
||||
connectionsRepository.mobileIsDefault.value = false
|
||||
connectionsRepository.hasCarrierMergedConnection.value = true
|
||||
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mobileIsDefault_updatesWhenRepoUpdates() =
|
||||
testScope.runTest {
|
||||
var latest: Boolean? = null
|
||||
val job = underTest.mobileIsDefault.onEach { latest = it }.launchIn(this)
|
||||
@@ -466,7 +509,7 @@ class MobileIconsInteractorTest : SysuiTestCase() {
|
||||
connectionsRepository.mobileIsDefault.value = false
|
||||
assertThat(latest).isFalse()
|
||||
|
||||
connectionsRepository.mobileIsDefault.value = true
|
||||
connectionsRepository.hasCarrierMergedConnection.value = true
|
||||
assertThat(latest).isTrue()
|
||||
|
||||
job.cancel()
|
||||
|
||||
Reference in New Issue
Block a user