package Ġorg . am sh ove . k lu ent Ċ Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠProvides Ġan Ġassert Soft ly - compatible Ġway Ġof Ġreporting Ġa Ġfailed Ġassertion Ċ Ġ* ĠAll Ġassertions Ġshould Ġrely Ġon Ġit Ġfor Ġerror Ġreporting . Ċ Ġ* ĠAssertions Ġthat Ġdon 't Ġwork Ġwith Ġassert Soft ly Ġ( for Ġexample Ġshould Not BeNull ) Ġcan Ġuse Ġhard Fail Ċ Ġ*/ Ċ actual Ġfun Ġfail ( message : ĠString ?) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠAssertionError ( message ) ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠAssertionError ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( error Collector . get Collection Mode () Ġ== ĠError Collection Mode . Soft ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Collector . push Error ( ex ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġassertion Error ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ actual Ġfun Ġfail ( message : ĠString , Ġexpected : ĠAny ?, Ġactual : ĠAny ?) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠAssertionError ( message ) ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠAssertionError ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( error Collector . get Collection Mode () Ġ== ĠError Collection Mode . Soft ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Collector . push Error ( ex ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin . test . asser ter . fail ( ex . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ actual Ġin fix Ġfun Ġ< T Ġ: ĠThrowable > Ġ(() Ġ-> ĠAny ?). should Throw ( expected Exception : ĠK Class < T >): ĠException Result < T > Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . invoke () ĊĠĠĠĠĠĠĠ Ġfail (" There Ġwas Ġan ĠException Ġexpected Ġto Ġbe Ġthrown , Ġbut Ġnothing Ġwas Ġthrown ", Ġ"$ expected Exception ", Ġ" None ") ĊĠĠĠĠĠĠĠ Ġreturn ĠException Result ( expected Exception Ġas ĠT ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġwhen Ġ( e ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . is A ( Comparison Failure :: class ) Ġ-> Ġthrow Ġe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠThrowable Ġ-> Ġreturn ĠException Result ( e Ġas ĠT ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠComparison Failure (" Expected Ġ${ expected Exception . java ObjectType } Ġto Ġbe Ġthrown ", Ġ"${ expected Exception . java ObjectType }", Ġ"${ e . java Class }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠAssertionError (" Expected Ġ${ expected Exception :: class . simple Name } Ġto Ġbe Ġthrown Ġbut Ġwas Ġ${ e :: class . simple Name }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ