diff options
| author | Albin <albin@mullvad.net> | 2023-07-26 23:19:17 +0200 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2023-07-27 10:41:29 +0200 |
| commit | 5d1c5ab992eadb08cb51c33d40d894d6024ab4e0 (patch) | |
| tree | 98f376e9aa275ff5d7d04731b347a90b035caa8a /android/lib/ipc | |
| parent | d4e7a6f0b63027d752e19a55d6df9dcf4a7095ff (diff) | |
| download | mullvadvpn-5d1c5ab992eadb08cb51c33d40d894d6024ab4e0.tar.xz mullvadvpn-5d1c5ab992eadb08cb51c33d40d894d6024ab4e0.zip | |
Move ipc test to ipc module
Diffstat (limited to 'android/lib/ipc')
| -rw-r--r-- | android/lib/ipc/build.gradle.kts | 4 | ||||
| -rw-r--r-- | android/lib/ipc/src/androidTest/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlowTest.kt | 44 |
2 files changed, 48 insertions, 0 deletions
diff --git a/android/lib/ipc/build.gradle.kts b/android/lib/ipc/build.gradle.kts index d850780b1b..718b26ef9a 100644 --- a/android/lib/ipc/build.gradle.kts +++ b/android/lib/ipc/build.gradle.kts @@ -11,6 +11,7 @@ android { defaultConfig { minSdk = Versions.Android.minSdkVersion targetSdk = Versions.Android.targetSdkVersion + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { @@ -35,4 +36,7 @@ dependencies { implementation(Dependencies.Kotlin.stdlib) implementation(Dependencies.KotlinX.coroutinesAndroid) + + androidTestImplementation(Dependencies.AndroidX.testRunner) + androidTestImplementation(Dependencies.Kotlin.test) } diff --git a/android/lib/ipc/src/androidTest/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlowTest.kt b/android/lib/ipc/src/androidTest/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlowTest.kt new file mode 100644 index 0000000000..e3ad447cc2 --- /dev/null +++ b/android/lib/ipc/src/androidTest/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlowTest.kt @@ -0,0 +1,44 @@ +package net.mullvad.mullvadvpn.lib.ipc + +import android.os.Bundle +import android.os.Looper +import android.os.Message +import android.os.Parcelable +import kotlin.test.assertEquals +import kotlinx.coroutines.flow.take +import kotlinx.coroutines.flow.toList +import kotlinx.coroutines.runBlocking +import kotlinx.parcelize.Parcelize +import org.junit.Test + +class HandlerFlowTest { + val looper by lazy { Looper.getMainLooper() } + + val handler: HandlerFlow<Data?> by lazy { + HandlerFlow(looper) { message -> message.data.getParcelable(DATA_KEY) } + } + + @Test + fun test_message_extraction() { + sendMessage(Data(1)) + sendMessage(Data(2)) + sendMessage(Data(3)) + + val extractedData = runBlocking { handler.take(3).toList() } + + assertEquals(listOf(Data(1), Data(2), Data(3)), extractedData) + } + + private fun sendMessage(messageData: Data) { + val message = + Message().apply { data = Bundle().apply { putParcelable(DATA_KEY, messageData) } } + + handler.handleMessage(message) + } + + companion object { + const val DATA_KEY = "data" + + @Parcelize data class Data(val id: Int) : Parcelable + } +} |
