package Ġcom . lyr af el ipe . shared demo Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroidx . arch . core . executor . Arch Task Executor Ċ import Ġandroidx . arch . core . executor . Task Executor Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . Test Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . test . reset Main Ċ import Ġkotlinx . coroutines . test . set Main Ċ import Ġorg . junit . rules . Test Watcher Ċ import Ġorg . junit . runner . Description Ċ Ċ @ Opt In ( Experimental Cor outines Api :: class ) Ċ class ĠInstant Execution Rule Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġtest Dispatcher : ĠTest Coroutine Dispatcher Ġ= ĠTest Coroutine Dispatcher () Ċ ) Ġ: ĠTest Watcher () Ġ{ ĊĊĠĠĠ Ġ@ Suppress Lint (" Restricted Api ") ĊĠĠĠ Ġoverride Ġfun Ġstarting ( description : ĠDescription ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . starting ( description ) ĊĠĠĠĠĠĠĠ ĠDispatch ers . set Main ( test Dispatcher ) ĊĠĠĠĠĠĠĠ ĠArch Task Executor . getInstance (). set Delegate ( object Ġ: ĠTask Executor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexecute On Disk IO ( run nable : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunnable . run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpost To MainThread ( run nable : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunnable . run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis MainThread (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Restricted Api ") ĊĠĠĠ Ġoverride Ġfun Ġfinished ( description : ĠDescription ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . finished ( description ) ĊĠĠĠĠĠĠĠ ĠDispatch ers . reset Main () ĊĠĠĠĠĠĠĠ Ġtest Dispatcher . cleanup Test Cor outines () ĊĠĠĠĠĠĠĠ ĠArch Task Executor . getInstance (). set Delegate ( null ) ĊĠĠĠ Ġ} Ċ } Ċ