package Ġrun . kt check . assertion Ċ Ċ import Ġrun . kt check . Assertion Ċ Ċ interface ĠMatcher < in ĠT > Ġ{ ĊĠ Ġfun Ġperform ( actual : ĠT ): ĠAssertion Ċ } Ċ Ċ abstract Ġclass ĠMatcher Support < in ĠT >: ĠMatcher < T > Ġ{ ĊĠ Ġoverride Ġfun Ġperform ( actual : ĠT ): ĠAssertion Ġ= ĊĠĠĠĠĠ Ġif Ġ( matches ( actual )) ĠAssertion . success () ĊĠĠĠĠĠ Ġelse ĠAssertion . fail ( expected Value , Ġactual ) ĊĊĠ Ġabstract Ġfun Ġmatches ( actual : ĠT ): ĠBoolean ĊĊĠ Ġabstract Ġval Ġexpected Value : ĠAny Ċ } Ċ Ċ object ĠIterable Matchers Ġ{ ĊĊĠ Ġfun Ġ< T : ĠAny , ĠC : ĠCollection < T >> Ġhave Size ( size : ĠInt ): ĠMatcher < C > Ġ= Ġobject Ġ: ĠMatcher Support < C >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatches ( actual : ĠC ): ĠBoolean Ġ= Ġactual . size Ġ Ġ== Ġsize ĊĠĠĠ Ġoverride Ġval Ġexpected Value : ĠAny Ġ= Ġ" has Ġsize Ġ$ size " ĊĠ Ġ} ĊĊĠ Ġfun Ġ< T : ĠAny , ĠC : ĠIterable < T >> Ġcontain All ( var arg Ġitems : ĠT ): ĠMatcher < C > Ġ= Ġobject Ġ: ĠMatcher < C > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġperform ( actual : ĠC ): ĠAssertion Ġ= ĊĠĠĠĠĠĠĠ Ġactual . toSet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġact Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġact . contains All ( items . toList ()) Ġ-> ĠAssertion . success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . map Indexed Ġ{ Ġindex , Ġitem Ġ-> Ġindex Ġto Ġitem Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġpair Ġ-> Ġ! act . contains ( pair . second ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString (", Ġ", Ġ"[", Ġ"] ") Ġ{ Ġpair Ġ-> Ġ"${ pair . second }( index :${ pair . first })" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠAssertion . fail ( actual , Ġ" contains Ġ${ items . toList () }\ n , Ġ Ġbut Ġ$ it Ġis Ġnot Ġfound ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ} ĊĠ Ġ} Ċ } Ċ Ċ object ĠAny Matchers Ġ{ ĊĊĠ Ġfun Ġ< T : ĠAny > Ġbe ( expected : ĠT ): ĠMatcher < T > Ġ= Ġobject Ġ: ĠMatcher < T > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġperform ( actual : ĠT ): ĠAssertion Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( actual Ġ== Ġexpected ) ĠAssertion . success () ĊĠĠĠĠĠĠĠ Ġelse ĠAssertion . fail ( expected , Ġactual ) ĊĠ Ġ} Ċ } Ċ Ċ object ĠString Matchers Ġ{ ĊĊĠ Ġfun Ġcontain ( segment : ĠString ): ĠMatcher < String > Ġ= Ġobject Ġ: ĠMatcher Support < String >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmatches ( actual : ĠString ): ĠBoolean Ġ= Ġactual . contains ( segment ) ĊĠĠĠ Ġoverride Ġval Ġexpected Value : ĠAny Ġ= Ġ" expected Ġto Ġcontain Ġ$ segment " ĊĠ Ġ} Ċ } Ċ