summaryrefslogtreecommitdiffhomepage
path: root/android/lib/ipc
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2023-07-26 23:19:17 +0200
committerAlbin <albin@mullvad.net>2023-07-27 10:41:29 +0200
commit5d1c5ab992eadb08cb51c33d40d894d6024ab4e0 (patch)
tree98f376e9aa275ff5d7d04731b347a90b035caa8a /android/lib/ipc
parentd4e7a6f0b63027d752e19a55d6df9dcf4a7095ff (diff)
downloadmullvadvpn-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.kts4
-rw-r--r--android/lib/ipc/src/androidTest/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlowTest.kt44
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
+ }
+}