Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ import Ġt ats uy uki . as yn ct ask . Task Ċ import Ġt ats uy uki . as yn ct ask . async Ċ import Ġt ats uy uki . as yn ct ask . await Ċ import Ġkotlin . system . measure Time Millis Ċ Ċ /** Ċ Ġ* Ġby Ġtest Ċ Ġ* ĠCreated Ġby Ġt ats uy uki Ġon Ġ 2 0 1 6 / 4 / 7 . Ċ Ġ*/ Ċ class ĠTest Async Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġawait Null Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 .. 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġawait Ġ{ Ġrun On Async () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (" go ", Ġs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġasync Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 .. 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdata : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis GetData Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġrun On Async () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis GetData Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile (! is GetData ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (" go ", Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġawait Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġmeasure Time Millis Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġawait Ġ{ Ġrun On Async () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (" go ", Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( time Ġ>= Ġ 1 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġasync Result Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġrun On Async () ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġtask . result Ġ{ ĠAssert . assertEquals (" go ", Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun On Async (): ĠTask < String > Ġ= Ġasync () Ġ{ ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġreturn @ async Ġ" go " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġasync Exception Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġrun Async Exception () ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġtask . result Ġ{ ĠAssert . assertNull ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġawait Exception Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Ġ{ Ġrun Async Exception () Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (" java . lang . RuntimeException : Ġasync Ġerror ", Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun Async Exception (): ĠTask < String > Ġ= Ġasync () Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" async Ġerror ") ĊĊĠĠĠĠĠĠĠ Ġreturn @ async Ġ Ġ"" ĊĠĠĠ Ġ} Ċ } Ċ