/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġkotlinx . coroutines Ċ Ċ import Ġkotlin . test .* ĊĊ Ċ class ĠAsync Jvm Test Ġ: ĠTest Base () Ġ{ ĊĠĠĠ Ġ// ĠThis Ġmust Ġbe Ġa Ġcommon Ġtest Ġbut Ġit Ġfails Ġon ĠJS Ġbecause Ġof ĠK T - 2 1 9 6 1 ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Async With Finally () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN RE ACH ABLE _ CODE ") ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyield () Ġ// Ġto Ġmain , Ġwill Ġcancel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( 6 ) Ġ// Ġwill Ġgo Ġthere Ġon Ġawait ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ async Ġ" Fail " Ġ// Ġresult Ġwill Ġnot Ġoverride Ġcancellation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Un re ached () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Fail 2 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 2 ) ĊĠĠĠĠĠĠĠ Ġyield () Ġ// Ġto Ġasync ĊĠĠĠĠĠĠĠ Ġexpect ( 4 ) ĊĠĠĠĠĠĠĠ Ġcheck ( d . isActive Ġ&& Ġ! d . is Completed Ġ&& Ġ! d . is Cancelled ) ĊĠĠĠĠĠĠĠ Ġd . cancel () ĊĠĠĠĠĠĠĠ Ġcheck (! d . isActive Ġ&& Ġ! d . is Completed Ġ&& Ġd . is Cancelled ) ĊĠĠĠĠĠĠĠ Ġcheck (! d . isActive Ġ&& Ġ! d . is Completed Ġ&& Ġd . is Cancelled ) ĊĠĠĠĠĠĠĠ Ġexpect ( 5 ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . await () Ġ// Ġawait s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Un re ached () Ġ// Ġdoes Ġnot Ġcomplete Ġnormally ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpect ( 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( e Ġis ĠC ancellation Exception ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcheck (! d . isActive Ġ&& Ġd . is Completed Ġ&& Ġd . is Cancelled ) ĊĠĠĠĠĠĠĠ Ġfinish ( 8 ) ĊĠĠĠ Ġ} Ċ } Ċ