package Ġfoo Ċ Ċ fun Ġrun < T >( f : Ġ() Ġ-> ĠT ) Ġ= Ġf () Ċ Ċ class ĠFail ( val Ġmessage : ĠString ) Ġ: ĠRuntimeException ( message ) Ġ{ ĊĠĠĠ Ġval Ġis Fail Ġ= Ġtrue Ġ// Ġworkaround Ġfor Ġexception Ġhandling Ċ } ĊĊ Ċ class ĠA Ġ{ ĊĠĠĠ Ġvar Ġtest Name Ġ= Ġ"" ĊĠĠĠ Ġfun ĠassertEquals ( actual : ĠInt , Ġexpected : ĠInt , Ġmessage : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( actual Ġ!= Ġexpected ) Ġthrow ĠFail ("$ message Ġin Ġ$ test Name Ġtest .") ĊĊĠĠĠ Ġval Ġa Ġ= Ġ 1 2 ĊĠĠĠ Ġvar Ġb Ġ= Ġ 1 ĊĊĠĠĠ Ġfun Ġb oo ( c : ĠInt ) Ġ= Ġc ĊĊĠĠĠ Ġfun Ġlit lit () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Name Ġ= Ġ" lit lit " ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( a , Ġ 1 2 , Ġ" a Ġ!= Ġ 1 2 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b , Ġ 1 , Ġ" b Ġ!= Ġ 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġ 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b , Ġ 2 3 , Ġ" b Ġ!= Ġ 2 3 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b oo ( 3 4 ), Ġ 3 4 , Ġ" b oo ( 3 4 ) Ġ!= Ġ 3 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfun fun () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Name Ġ= Ġ" fun fun " ĊĠĠĠĠĠĠĠ Ġfun Ġfoo () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbar () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( a , Ġ 1 2 , Ġ" a Ġ!= Ġ 1 2 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b , Ġ 1 , Ġ" b Ġ!= Ġ 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġ 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b , Ġ 2 3 , Ġ" b Ġ!= Ġ 2 3 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b oo ( 3 4 ), Ġ 3 4 , Ġ" b oo ( 3 4 ) Ġ!= Ġ 3 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfoo () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlit fun () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Name Ġ= Ġ" lit fun " ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbar () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( a , Ġ 1 2 , Ġ" a Ġ!= Ġ 1 2 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b , Ġ 1 , Ġ" b Ġ!= Ġ 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġ 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b , Ġ 2 3 , Ġ" b Ġ!= Ġ 2 3 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b oo ( 3 4 ), Ġ 3 4 , Ġ" b oo ( 3 4 ) Ġ!= Ġ 3 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbar () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfun lit () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Name Ġ= Ġ" fun lit " ĊĠĠĠĠĠĠĠ Ġfun Ġfoo () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( a , Ġ 1 2 , Ġ" a Ġ!= Ġ 1 2 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b , Ġ 1 , Ġ" b Ġ!= Ġ 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġ 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b , Ġ 2 3 , Ġ" b Ġ!= Ġ 2 3 ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( b oo ( 3 4 ), Ġ 3 4 , Ġ" b oo ( 3 4 ) Ġ!= Ġ 3 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfoo () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġbox (): ĠString Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠA (). lit lit () ĊĠĠĠĠĠĠĠ ĠA (). fun fun () ĊĠĠĠĠĠĠĠ ĠA (). lit fun () ĊĠĠĠĠĠĠĠ ĠA (). fun lit () ĊĠĠĠ Ġ} ĊĠĠĠ Ġcatch ( f : ĠFail ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! f . is Fail ) Ġthrow Ġf ĊĠĠĠĠĠĠĠ Ġreturn Ġf . message ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ" OK " Ċ }