package Ġk ask Ċ Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ private Ġclass ĠTask Test Ġ{ ĊĊĠĠĠ Ġobject ĠTest Output Ġ: ĠProperty Key < String >() ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest (): ĠUnit Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= ĠTask ( name Ġ= Ġ" first ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" first Ġtask !") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties [ Test Output ] Ġ= ĠProperty (" test ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= ĠTask Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" second Ġtask !") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠProperties Ġfrom Ġfirst Ġtask Ġare Ġautomatically Ġavailable Ġdue Ġto Ġshared Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" test ", Ġprop ( Test Output )) ĊĠĠĠĠĠĠĠ Ġ}. depends On ( first ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRegister Ġtasks Ġto Ġbe Ġexecuted ĊĠĠĠĠĠĠĠ ĠTask Registry . Default . register ( first , Ġsecond ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRun Ġsecond Ġtask Ġ( and Ġfirst ) ĊĠĠĠĠĠĠĠ Ġsecond ( Task Executor . Default ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠProperties Ġcan Ġbe Ġretrieved Ġonce Ġa Ġtask Ġis Ġcomplete ĊĠĠĠĠĠĠĠ Ġval Ġprop From First Ġ= Ġfirst . output Async ( Test Output ). await () ĊĠĠĠĠĠĠĠ ĠassertEquals (" test ", Ġprop From First ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ