Christophe Dongieux
@Test fun `Foobar is foo`() = runTest { val job = launch { println("Coroutine 1: Going to sleep for 3000. currentTime = $currentTime") delay(3000) println("Coroutine 1: Delay is over. currentTime = $currentTime") } launch { println("Coroutine 2: Going to sleep for 1000. currentTime = $currentTime") delay(1000) println("Coroutine 2: Delay is over, cancelling other Coroutine. currentTime = $currentTime") job.cancel() } advanceTimeBy(500) println("advance 500: currentTime 1 = $currentTime") advanceTimeBy(500) println("advance 500: currentTime 2 = $currentTime") advanceUntilIdle() println("advanceUntilIdle: currentTime 3 = $currentTime") assertEquals(1000, currentTime) }
Coroutine 1: Going to sleep for 3000. currentTime = 0 Coroutine 2: Going to sleep for 1000. currentTime = 0 advance 500: currentTime 1 = 500 advance 500: currentTime 2 = 1000 Coroutine 2: Delay is over, cancelling other Coroutine. currentTime = 1000 advanceUntilIdle: currentTime 3 = 3000 expected:<1000> but was:<3000> Expected :1000 Actual :3000
currentTime 3
mkrussel
advanceUntilIdle
delays
3000
delay
runCurrent
advanceTime
delay(1000)
delay(3000)
A modern programming language that makes developers happier.