George
04/10/2023, 8:14 AMPHondogo
04/10/2023, 12:54 PMGeorge
04/13/2023, 6:31 PM@Test
fun shouldSuspendWhenQueueIsEmpty(): Unit = runBlocking(Dispatchers.Default) {
val dispatcher = newSingleThreadContext("testCoroutine")
var isSuspended = false
dispatcher.interceptContinuation(
object : Continuation<Unit> {
override val context: CoroutineContext get() = dispatcher
override fun resumeWith(result: Result<Unit>) {
isSuspended = true
result.getOrThrow()
}
}
)
withContext(dispatcher) {
val emptyQueue = emptyArrayQueue()
emptyQueue.dequeue() // suspends forever
}
assert(isSuspended) { "when queue is empty, dequeue operations should be suspended" }
}
im trying to test/assert if my queue if is suspended when a consumer tries to dequeue when it's empty.PHondogo
04/13/2023, 6:43 PMPHondogo
04/13/2023, 6:44 PM