Loading src/com/android/settings/wifi/repository/WifiRepository.kt +8 −5 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import com.android.settingslib.spaprivileged.framework.common.broadcastReceiverF import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onStart class WifiRepository( private val context: Context, Loading @@ -32,10 +33,12 @@ class WifiRepository( context.broadcastReceiverFlow(IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)), ) { fun wifiStateFlow() = wifiStateChangedActionFlow fun wifiStateFlow(): Flow<Int> = wifiStateChangedActionFlow .map { intent -> intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN) } .onStart { emit(WifiManager.WIFI_STATE_UNKNOWN) } .onEach { Log.d(TAG, "wifiStateFlow: $it") } private companion object { Loading tests/spa_unit/src/com/android/settings/wifi/repository/WifiRepositoryTest.kt +18 −8 Original line number Diff line number Diff line Loading @@ -21,8 +21,9 @@ import android.content.Intent import android.net.wifi.WifiManager import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull import com.android.settingslib.spa.testutils.lastWithTimeoutOrNull import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.runBlocking import org.junit.Test Loading @@ -33,16 +34,25 @@ class WifiRepositoryTest { private val context: Context = ApplicationProvider.getApplicationContext() private val mockWifiStateChangedActionFlow = flowOf(Intent().apply { @Test fun wifiStateFlow_enabled() = runBlocking { val wifiStateChangedIntent = Intent().apply { putExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_ENABLED) }) } val repository = WifiRepository(context, flowOf(wifiStateChangedIntent)) private val repository = WifiRepository(context, mockWifiStateChangedActionFlow) val wifiState = repository.wifiStateFlow().lastWithTimeoutOrNull() assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_ENABLED) } @Test fun wifiStateFlow() = runBlocking { val wifiState = repository.wifiStateFlow().firstWithTimeoutOrNull() fun wifiStateFlow_unknown() = runBlocking { val repository = WifiRepository(context, emptyFlow()) assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_ENABLED) val wifiState = repository.wifiStateFlow().lastWithTimeoutOrNull() assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_UNKNOWN) } } Loading
src/com/android/settings/wifi/repository/WifiRepository.kt +8 −5 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import com.android.settingslib.spaprivileged.framework.common.broadcastReceiverF import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onStart class WifiRepository( private val context: Context, Loading @@ -32,10 +33,12 @@ class WifiRepository( context.broadcastReceiverFlow(IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)), ) { fun wifiStateFlow() = wifiStateChangedActionFlow fun wifiStateFlow(): Flow<Int> = wifiStateChangedActionFlow .map { intent -> intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN) } .onStart { emit(WifiManager.WIFI_STATE_UNKNOWN) } .onEach { Log.d(TAG, "wifiStateFlow: $it") } private companion object { Loading
tests/spa_unit/src/com/android/settings/wifi/repository/WifiRepositoryTest.kt +18 −8 Original line number Diff line number Diff line Loading @@ -21,8 +21,9 @@ import android.content.Intent import android.net.wifi.WifiManager import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull import com.android.settingslib.spa.testutils.lastWithTimeoutOrNull import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.runBlocking import org.junit.Test Loading @@ -33,16 +34,25 @@ class WifiRepositoryTest { private val context: Context = ApplicationProvider.getApplicationContext() private val mockWifiStateChangedActionFlow = flowOf(Intent().apply { @Test fun wifiStateFlow_enabled() = runBlocking { val wifiStateChangedIntent = Intent().apply { putExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_ENABLED) }) } val repository = WifiRepository(context, flowOf(wifiStateChangedIntent)) private val repository = WifiRepository(context, mockWifiStateChangedActionFlow) val wifiState = repository.wifiStateFlow().lastWithTimeoutOrNull() assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_ENABLED) } @Test fun wifiStateFlow() = runBlocking { val wifiState = repository.wifiStateFlow().firstWithTimeoutOrNull() fun wifiStateFlow_unknown() = runBlocking { val repository = WifiRepository(context, emptyFlow()) assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_ENABLED) val wifiState = repository.wifiStateFlow().lastWithTimeoutOrNull() assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_UNKNOWN) } }