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/src/androidTest | |
| parent | d4e7a6f0b63027d752e19a55d6df9dcf4a7095ff (diff) | |
| download | mullvadvpn-5d1c5ab992eadb08cb51c33d40d894d6024ab4e0.tar.xz mullvadvpn-5d1c5ab992eadb08cb51c33d40d894d6024ab4e0.zip | |
Move ipc test to ipc module
Diffstat (limited to 'android/lib/ipc/src/androidTest')
| -rw-r--r-- | android/lib/ipc/src/androidTest/kotlin/net/mullvad/mullvadvpn/lib/ipc/HandlerFlowTest.kt | 44 |
1 files changed, 44 insertions, 0 deletions
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 + } +} |
