diff --git a/src/commonMain/kotlin/app/cash/turbine/FlowTurbine.kt b/src/commonMain/kotlin/app/cash/turbine/FlowTurbine.kt index 0fc96a7c..b35d8349 100644 --- a/src/commonMain/kotlin/app/cash/turbine/FlowTurbine.kt +++ b/src/commonMain/kotlin/app/cash/turbine/FlowTurbine.kt @@ -27,6 +27,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch import kotlinx.coroutines.withTimeout +import kotlin.coroutines.CoroutineContext import kotlin.time.Duration import kotlin.time.ExperimentalTime import kotlin.time.seconds @@ -52,12 +53,13 @@ private const val debug = false @ExperimentalCoroutinesApi // For start=UNDISPATCHED suspend fun Flow.test( timeout: Duration = 1.seconds, + context: CoroutineContext = Unconfined, validate: suspend FlowTurbine.() -> Unit ) { coroutineScope { val events = Channel>(UNLIMITED) - val collectJob = launch(start = UNDISPATCHED, context = Unconfined) { + val collectJob = launch(start = UNDISPATCHED, context = context) { val terminalEvent = try { if (debug) println("Collect starting!") collect { item -> @@ -186,9 +188,11 @@ sealed class Event { object Complete : Event() { override fun toString() = "Complete" } + data class Error(val throwable: Throwable) : Event() { override fun toString() = "Error(${throwable::class.simpleName})" } + data class Item(val value: T) : Event() { override fun toString() = "Item($value)" }