package Ġio . live kit . android . coroutines Ċ Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . Test Scope Ċ import Ġkotlinx . coroutines . test . Un conf ined Test Dispatcher Ċ import Ġkotlinx . coroutines . test . reset Main Ċ import Ġkotlinx . coroutines . test . set Main Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . rules . Test Rule Ċ import Ġorg . junit . runner . Description Ċ import Ġorg . junit . runners . model . Statement Ċ Ċ @ Opt In ( Experimental Cor outines Api :: class ) Ċ class ĠTest Coroutine Rule Ġ: ĠTest Rule Ġ{ ĊĠĠĠ Ġval Ġdispatcher Ġ= ĠUn conf ined Test Dispatcher () ĊĠĠĠ Ġval Ġscope Ġ= ĠTest Scope ( dispatcher ) ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( base : ĠStatement , Ġdescription : ĠDescription ?) Ġ= Ġobject Ġ: ĠStatement () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Throwable :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġevaluate () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDispatch ers . set Main ( dispatcher ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase . evaluate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime After Test Ġ= Ġdispatcher . scheduler . currentTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . scheduler . advance Until Idle () Ġ// Ġrun Ġthe Ġremaining Ġtasks ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime After Test , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . scheduler . currentTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ// Ġwill Ġfail Ġif Ġthere Ġwere Ġtasks Ġscheduled Ġat Ġa Ġlater Ġmoment ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDispatch ers . reset Main () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }