@ file : Suppress (" unused ", Ġ" NOTH ING _ TO _ INLINE ", Ġ" IN VISIBLE _ MEMBER ", Ġ" IN VISIBLE _ REFERENCE ") Ċ Ċ package Ġcs ense . kotlin . tests . assertions Ċ Ċ import Ġkotlin . contracts . Experimental Contracts Ċ import Ġkotlin . contracts . contract Ċ import Ġkotlin . test .* Ċ Ċ /** Ċ Ġ* ĠAs Ġthe Ġname Ġsuggest , Ġcalling Ġthis Ġmeans Ġfailure . Ċ Ġ*/ Ċ public Ġinline Ġfun Ġshould Not Be Called (): ĠNothing Ġ{ ĊĠĠĠ Ġfail ( General Strings . assertNot Called Message ) Ċ } Ċ Ċ /** Ċ Ġ* Ġfails Ġthe Ġtest Ġwith Ġthe Ġgiven Ġmessage Ċ Ġ* Ġ@ param Ġmessage ĠString Ċ Ġ*/ Ċ public Ġinline Ġfun Ġfail Test ( message : ĠString Ġ= Ġ"") : ĠNothing Ġ{ ĊĠĠĠ Ġfail ( message ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAssert Ġthis Ġis Ġthe Ġsame Ġas Ġtype Ġas Ġ[ other Value ] Ġand Ġthat Ġthey Ġare Ġequal Ċ Ġ* Ġ@ receiver Ġ[ Any ] Ċ Ġ* Ġ@ param Ġother Value ĠT Ġthe Ġvalue Ġthis Ġreceiver Ġshould Ġbe Ġ( both Ġtype Ġand Ġequals ) Ċ Ġ* Ġ@ param Ġmessage Ġ[ String ] Ġif Ġthey Ġare Ġdifferent Ġthis Ġwill Ġbe Ġprinted Ġ( nb Ġif Ġthey Ġare Ġdifferent Ġtype Ġanother Ġmessage Ġwill Ġbe Ġprinted ). Ċ Ġ*/ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ public Ġinline Ġfun Ġ< re ified ĠT > ĠAny . assert As ( ĊĠĠĠ Ġother Value : ĠT , ĊĠĠĠ Ġmessage : ĠString Ġ= Ġ" value Ġof Ġ\"$ this \" Ġis Ġnot Ġthe Ġexpected Ġ\"$ other Value \"" Ċ ) Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġreturns () Ġimplies Ġ( this @ assert As Ġis ĠT ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") Ġ// this Ġis Ġexpected ĊĠĠĠ Ġthis . assertIs < T >() Ġ// make Ġsure Ġthat Ġif Ġthe Ġtype Ġis Ġnot Ġthe Ġsame Ġthen Ġwe Ġget Ġthat Ġerror Ġmessage . ĊĠĠĠ Ġ// Ġwe Ġare Ġjust Ġmaking Ġlife Ġeasier Ġfor Ġtesting , Ġif Ġit Ġthrows , Ġthen Ġits Ġ" all Ġright " Ġfor Ġa Ġtest . ĊĠĠĠ ĠassertEquals ( this Ġas ? ĠT , Ġother Value , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAssert Ġthis Ġis Ġthe Ġgiven Ġtype Ċ Ġ* Ġ@ receiver Ġ[ Any ] Ġthe Ġreceiver Ġwe Ġare Ġtesting Ġis Ġthe Ġsame Ġtype Ġas Ġ[ T ] Ċ Ġ* Ġ@ param Ġmessage Ġ[ String ] Ġthe Ġmessage Ġto Ġprint Ġif Ġthe Ġreceiver Ġis Ġa Ġdifferent Ġtype Ġfrom Ġ[ T ] Ċ Ġ*/ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ public Ġinline Ġfun Ġ< re ified ĠT > ĠAny . assertIs ( ĊĠĠĠ Ġmessage : ĠString Ġ= Ġ" expected Ġ`$ this ` Ġto Ġbe Ġof Ġtype Ġ`${ T :: class }`, Ġbut Ġit Ġis Ġnot " Ċ ) Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġreturns () Ġimplies Ġ( this @ assertIs Ġis ĠT ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠassertTrue ( this Ġis ĠT , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAssert s Ġthis Ġis Ġnot Ġnull Ġ( and Ġif Ġit Ġis Ġnot , Ġthen Ġkotlin Ġsmart Ġcast s Ġit Ġto Ġa Ġnot null Ġvariable ) Ċ Ġ* Ġ@ receiver Ġ[ Any ]? Ġthe Ġvalue Ġto Ġassert Ġis Ġnot Ġnull Ċ Ġ* Ġ@ param Ġmessage Ġ[ String ] Ġthe Ġmessage Ġthat Ġgets Ġprinted Ġif Ġthis Ġis Ġnull Ċ Ġ*/ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ public Ġinline Ġfun ĠAny ?. assertNotNull ( message : ĠString Ġ= Ġ"") Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġreturns () Ġimplies Ġ( this @ assertNotNull Ġ!= Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠassertNotNull ( this , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAssert s Ġthis Ġis Ġnull Ġ( and Ġif Ġit Ġis Ġnull , Ġthen Ġkotlin Ġsmart Ġcast s Ġit Ġto Ġa Ġnull Ġvariable ) Ċ Ġ* Ġ@ receiver Ġ[ Any ]? Ċ Ġ* Ġ@ param Ġmessage Ġ[ String ] Ċ Ġ*/ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ public Ġinline Ġfun ĠAny ?. assertNull ( message : ĠString Ġ= Ġ"") Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġreturns () Ġimplies Ġ( this @ assertNull Ġ== Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠassertNull ( this , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAssert s Ġthis Ġis Ġnot Ġnull Ġand Ġif Ġnot Ġthen Ġapplies Ġthe Ġgiven Ġ[ action ] Ġon Ġit Ċ Ġ* Ġ@ receiver ĠT ? Ġthe Ġnullable Ġelement Ċ Ġ* Ġ@ param Ġmessage Ġ[ String ] Ġthe Ġmessage Ġto Ġdisplay Ġif Ġthe Ġreceiver Ġis Ġnull Ċ Ġ* Ġ@ param Ġaction ĠFunction 1 < T , ĠUnit > Ġthe Ġreceiver Ġaction Ġ Ġto Ġrun Ġif Ġthe Ġreceiver Ġis Ġnot Ġnull Ċ Ġ*/ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ public Ġinline Ġfun Ġ< T > ĠT ?. assertNotNull Apply ( message : ĠString Ġ= Ġ"", Ġaction : ĠT . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġreturns () Ġimplies Ġ( this @ assertNotNull Apply Ġ!= Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġthis . assertNotNull ( message ) ĊĠĠĠ Ġthis . let ( action ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAssert s Ġthis Ġis Ġnot Ġnull Ġand Ġequals Ġthe Ġ[ other ] Ġobject Ċ Ġ* Ġ@ receiver ĠT ? Ġthe Ġobject Ġto Ġmake Ġsure Ġis Ġnot Ġnull Ġand Ġequals Ġ[ other ] Ċ Ġ* Ġ@ param Ġother ĠT ? Ġthe Ġvalue Ġit Ġshould Ġbe Ġ( the Ġexpected ) Ċ Ġ* Ġ@ param Ġmessage Ġ[ String ] Ġthe Ġmessage Ġto Ġdisplay Ġif Ġthe Ġreceiver Ġdoes Ġnot Ġmatch Ġthe Ġexpected . Ċ Ġ*/ Ċ @ Opt In ( Experimental Contracts :: class ) Ċ public Ġinline Ġfun Ġ< @ kotlin . internal . Only Input Types ĠT > ĠT ?. assertNotNull And Equals ( ĊĠĠĠ Ġother : ĠT ?, ĊĠĠĠ Ġmessage : ĠString Ġ= Ġ" value Ġwas Ġ$ this , Ġexpected Ġ$ other " Ċ ) Ġ{ ĊĠĠĠ Ġcontract Ġ{ ĊĠĠĠĠĠĠĠ Ġreturns () Ġimplies Ġ( this @ assertNotNull And Equals Ġ!= Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġthis . assertNotNull () ĊĠĠĠ ĠassertEquals ( other , Ġthis , Ġmessage ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠAssert s Ġthat Ġthe Ġgiven Ġ[ action ] Ġcalls Ġthe Ġcallback Ġfunction Ġ[ times ] Ġtimes Ġotherwise Ġfails Ġwith Ġthe Ġgiven Ġ[ message ] Ċ Ġ* Ġ@ param Ġmessage Ġ[ String ] Ġthe Ġerror Ġmessage Ġif Ġit Ġfails Ġ( times Ġthe Ġcallback Ġcalled Ġ!= Ġtimes ) Ċ Ġ* Ġ@ param Ġtimes Ġ[ Int ] Ġthe Ġnumber Ġof Ġtimes Ġwe Ġexpected Ġthe Ġcallback Ġto Ġbe Ġcalled Ċ Ġ* Ġ@ param Ġaction Ġthe Ġaction , Ġgetting Ġthe Ġcallback Ġfunction Ċ Ġ*/ Ċ public Ġinline Ġfun Ġassert Called ( ĊĠĠĠ Ġmessage : ĠString Ġ= ĠGeneral Strings . assert Called Message , ĊĠĠĠ Ġtimes : ĠInt Ġ= Ġ 1 , ĊĠĠĠ Ġaction : Ġ( callback : Ġ() Ġ-> ĠUnit ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠ Ġaction Ġ{ Ġcounter Ġ+= Ġ 1 Ġ} ĊĠĠĠ Ġcounter . assert ( times , Ġmessage ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAssert s Ġthat Ġthe Ġgiven Ġ[ action ] Ġcalls Ġthe Ġcallback Ġfunction Ġ 1 Ġtimes Ġotherwise Ġfails Ġwith Ġthe Ġgiven Ġ[ message ] Ċ Ġ* Ġ@ param Ġmessage Ġ[ String ] Ġthe Ġerror Ġmessage Ġif Ġit Ġfails Ġ( times Ġthe Ġcallback Ġcalled Ġ!= Ġ 1 ) Ċ Ġ* Ġ@ param Ġaction Ġthe Ġaction , Ġgetting Ġthe Ġcallback Ġfunction Ċ Ġ*/ Ċ public Ġinline Ġfun Ġassert Called ( ĊĠĠĠ Ġmessage : ĠString Ġ= ĠGeneral Strings . assert Called Message , ĊĠĠĠ Ġaction : Ġ( callback : Ġ() Ġ-> ĠUnit ) Ġ-> ĠUnit Ċ ): ĠUnit Ġ= Ġassert Called ( message , Ġ 1 , Ġaction ) Ċ Ċ /** Ċ Ġ* ĠAssert s Ġthat Ġthe Ġgiven Ġ[ action ] Ġcalls Ġthe Ġcallback Ġfunction Ġ 0 Ġtimes Ġ/ Ġnot Ġgets Ġcalled . Ċ Ġ* ĠOtherwise Ġfails Ġwith Ġthe Ġgiven Ġ[ message ] Ċ Ġ* Ġ@ param Ġmessage Ġ[ String ] Ġ Ġthe Ġerror Ġmessage Ġif Ġit Ġgets Ġcalled Ċ Ġ* Ġ@ param Ġaction Ġthe Ġaction Ġthat Ġshould Ġnot Ġbe Ġinvoked .( assertion ) Ċ Ġ*/ Ċ public Ġinline Ġfun Ġassert Not Called ( ĊĠĠĠ Ġmessage : ĠString Ġ= ĠGeneral Strings . assertNot Called Message , ĊĠĠĠ Ġaction : Ġ( callback : Ġ() Ġ-> ĠUnit ) Ġ-> ĠUnit Ċ ): ĠUnit Ġ= Ġassert Called ( message , Ġ 0 , Ġaction ) Ċ Ċ /** Ċ Ġ* ĠAssert s Ġthat Ġthe Ġgiven Ġ[ test Code ] Ġwill Ġhave Ġthe Ġgiven Ġitems Ġin Ġorder Ġ( and Ġcalled Ġthat Ġexact Ġamount Ġof Ġtimes ) Ċ Ġ* Ġ@ param Ġexpected Items In Order ĠIterable < T > Ċ Ġ* Ġ@ param Ġtest Code ĠFunction 1 < Function 1 < T , ĠUnit >, ĠUnit > Ċ Ġ*/ Ċ public Ġinline Ġfun Ġ< re ified ĠT > Ġassert Callback Called With ( ĊĠĠĠ Ġexpected Items In Order : ĠCollection < T >, ĊĠĠĠ Ġtest Code : Ġ(( T ) Ġ-> ĠUnit ) Ġ-> ĠUnit Ċ ) Ġwhere ĠT Ġ: ĠComparable < T > Ġ{ ĊĠĠĠ Ġassert Callback Called With ( expected Items In Order , Ġassert Function Ġ= Ġ{ Ġlhs , Ġrhs Ġ-> ĊĠĠĠĠĠĠĠ Ġlhs Ġ== Ġrhs ĊĠĠĠ Ġ}, Ġtest Code ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAssert s Ġthat Ġthe Ġgiven Ġ[ test Code ] Ġwill Ġhave Ġthe Ġgiven Ġitems Ġin Ġorder Ġ( and Ġcalled Ġthat Ġexact Ġamount Ġof Ġtimes ) Ċ Ġ* Ġ@ param Ġexpected Items In Order ĠCollection < T > Ċ Ġ* Ġ@ param Ġassert Function ĠFunction 2 < T , ĠT , ĠBoolean > Ċ Ġ* Ġ@ param Ġtest Code ĠFunction 1 < Function 1 < T , ĠUnit >, ĠUnit > Ċ Ġ*/ Ċ public Ġinline Ġfun Ġ< re ified ĠT > Ġassert Callback Called With ( ĊĠĠĠ Ġexpected Items In Order : ĠCollection < T >, ĊĠĠĠ Ġcross inline Ġassert Function : Ġ( T , ĠT ) Ġ-> ĠBoolean , ĊĠĠĠ Ġtest Code : Ġ(( T ) Ġ-> ĠUnit ) Ġ-> ĠUnit , Ċ ): ĠUnit Ġ= Ġassert Called ( times Ġ= Ġexpected Items In Order . size ) Ġ{ ĠshouldBe Called Ġ-> ĊĠĠĠ Ġval Ġiterator Ġ= Ġexpected Items In Order . iterator () ĊĠĠĠ Ġval Ġcallback : Ġ( T ) Ġ-> ĠUnit Ġ= Ġ{ Ġactual : ĠT Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ(! iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail Test ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Tri ed Ġto Ġaccess Ġnext Ġelement Ġbut Ġwas Ġnot Ġin Ġthe Ġexpected Items In Order ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠYou Ġhave Ġcalled Ġthe Ġassert Ġfunction Ġmore Ġthan Ġ${ expected Items In Order . size } Ġtimes " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠ Ġval Ġis Equal Ġ= Ġassert Function ( actual , Ġexpected ) ĊĠĠĠĠĠĠĠ Ġif Ġ( isEqual . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail Test (" Expected Ġ\"$ actual \" Ġto Ġbe Ġ\"$ expected \" ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠshouldBe Called () ĊĠĠĠ Ġ} ĊĠĠĠ Ġtest Code ( callback ) Ċ } ĊĊ Ċ public Ġobject ĠGeneral Strings Ġ{ ĊĠĠĠ Ġpublic Ġconst Ġval Ġassert Called Message : ĠString Ġ= Ġ" Should Ġbe Ġcalled , Ġbut Ġdid Ġnot Ġget Ġcalled Ġenough Ġtimes " ĊĠĠĠ Ġpublic Ġconst Ġval Ġassert Not Called Message : ĠString Ġ= Ġ" Should Ġnot Ġbe Ġcalled Ġbut Ġgot Ġcalled Ġanyway " Ċ }