George
PHondogo
@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" } }
A modern programming language that makes developers happier.