-
-
Save houssemzaier/603ce09b198dfded7fcd08b42ea5f764 to your computer and use it in GitHub Desktop.
package fr.x | |
import kotlinx.coroutines.Dispatchers | |
import kotlinx.coroutines.delay | |
import kotlinx.coroutines.flow.flow | |
import kotlinx.coroutines.flow.flowOn | |
import kotlinx.coroutines.flow.onEach | |
import kotlinx.coroutines.runBlocking | |
import org.junit.Test | |
/** | |
* Unit tests of [MaasPaymentMethodsViewModel]. | |
*/ | |
class MaasPaymentMethodsViewModelTest { | |
@Test | |
fun main() { | |
println( | |
""" | |
*Start: running in : ${Thread.currentThread()} | |
""".trimIndent(), | |
) | |
runBlocking { | |
flow { | |
for (i in 1..5) { | |
emit(i) | |
delay(200) | |
println( | |
""" | |
*emitting: running in : ${Thread.currentThread()} | |
""".trimIndent(), | |
) | |
} | |
} | |
.onEach { | |
delay(100) | |
println( | |
""" | |
*delaying: running in : ${Thread.currentThread()} | |
""".trimIndent(), | |
) | |
} | |
.flowOn(Dispatchers.IO) | |
.collect { println(it) } | |
} | |
} | |
} |
changing the code to this:
.flowOn(Dispatchers.IO)
.onEach {
delay(100)
println(
"""
*delaying: running in : ${Thread.currentThread()}
""".trimIndent(),
}
.collect { println(it) }
will give this output:
*Start: running in : Thread[Test worker,5,main]
*delaying: running in : Thread[Test worker @coroutine#1,5,main]
1
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
*delaying: running in : Thread[Test worker @coroutine#1,5,main]
2
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
*delaying: running in : Thread[Test worker @coroutine#1,5,main]
3
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
*delaying: running in : Thread[Test worker @coroutine#1,5,main]
4
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
*delaying: running in : Thread[Test worker @coroutine#1,5,main]
5
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
*Start: running in : Thread[Test worker,5,main]
*delaying: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
1
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
*delaying: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
2
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
*delaying: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
3
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
*delaying: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
4
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
*delaying: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]
5
*emitting: running in : Thread[DefaultDispatcher-worker-1 @coroutine#2,5,main]