package Ġcom . sk sam uel . kot est . timeout Ċ Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġkotlinx . coroutines . coroutine Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlin . time . Experimental Time Ċ import Ġkotlin . time . milliseconds Ċ import Ġkotlin . time . to Duration Ċ Ċ @ Experimental Time Ċ class ĠTimeout Test Ġ: ĠString Spec () Ġ{ ĊĊĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠ Ġextension ( expect Failure Extension ) ĊĊĠĠĠĠĠ Ġ" a Ġtest case Ġtimeout Ġshould Ġinterrupt Ġa Ġblocked Ġthread ". config ( timeout Ġ= Ġ 5 0 . milliseconds ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ// Ġhigh Ġvalue Ġto Ġensure Ġits Ġinterrupted , Ġwe 'd Ġnotice Ġa Ġtest Ġthat Ġruns Ġfor Ġ 1 0 Ġweeks ĊĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 0 0 0 0 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" a Ġtest case Ġtimeout Ġshould Ġinterrupt Ġa Ġsuspend Ġfunction ". config ( timeout Ġ= Ġ 5 0 . milliseconds ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ// Ġhigh Ġvalue Ġto Ġensure Ġits Ġinterrupted , Ġwe 'd Ġnotice Ġa Ġtest Ġthat Ġruns Ġfor Ġ 1 0 Ġweeks ĊĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 0 0 0 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" a Ġtest case Ġtimeout Ġshould Ġinter upt Ġa Ġnested Ġcoroutine ". config ( timeout Ġ= Ġ 5 0 . milliseconds ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġa Ġ Ġhigh Ġvalue Ġto Ġensure Ġits Ġinterrupted , Ġwe 'd Ġnotice Ġa Ġtest Ġthat Ġruns Ġfor Ġever ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 . to Duration ( TimeUnit . HOUR S )) ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ" a Ġtest case Ġtimeout Ġshould Ġinterrupt Ġsus pended Ġcoroutine Ġscope ". config ( timeout Ġ= Ġ 5 0 . milliseconds ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġsome Coroutine () ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} Ċ } Ċ Ċ suspend Ġfun Ġsome Coroutine () Ġ{ ĊĠĠ Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 0 0 0 0 ) ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} Ċ } Ċ