diff options
| author | Albin <albin@mullvad.net> | 2023-07-27 13:56:12 +0200 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2023-07-27 13:56:12 +0200 |
| commit | 7a1c9dba446651f06b00c80178407b34120cede9 (patch) | |
| tree | 72328e2b0966106e46583ff2b2a539f3b8cf27db /android/lib/ipc/src/androidTest | |
| parent | 6d57800a24833e53c5cc161d9afb4dffe4381365 (diff) | |
| parent | ea51297f2a3bbac44351147df78ae4f3ff2bc6e8 (diff) | |
| download | mullvadvpn-7a1c9dba446651f06b00c80178407b34120cede9.tar.xz mullvadvpn-7a1c9dba446651f06b00c80178407b34120cede9.zip | |
Merge branch 'move-tile-service-to-its-own-module-droid-225'
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 + } +} |
