package Ġcom . ptr br ynt . kotlin _ bloc . test Ċ Ċ import Ġapp . cash . tur bine . test Ċ import Ġcom . ptr br ynt . kotlin _ bloc . core . Bloc Base Ċ import Ġkotlin . time . Experimental Time Ċ Ċ type alias ĠState Assertion < State > Ġ= ĠState . () Ġ-> ĠBoolean Ċ type alias ĠSide Effect Assertion < Side Effect > Ġ= ĠSide Effect . () Ġ-> ĠBoolean Ċ Ċ /** Ċ Ġ* ĠHandles Ġassert ing Ġthat Ġa Ġ` bloc ` Ġemits Ġthe Ġ[ expected ] Ġstates Ġ( in Ġorder ) Ġafter Ġ[ act ] Ġhas Ġbeen Ċ Ġ* Ġexecuted . Ċ Ġ* Ċ Ġ* Ġ@ param ĠsetUp ĠShould Ġbe Ġused Ġto Ġset Ġup Ġany Ġdependencies Ġprior Ġto Ġinitializing Ġthe Ċ Ġ* Ġ` bloc ` Ġunder Ġtest . Ċ Ġ* Ċ Ġ* Ġ@ param Ġbuild ĠShould Ġconstruct Ġand Ġreturn Ġthe Ġ` bloc ` Ġunder Ġtest . Ċ Ġ* Ċ Ġ* Ġ@ param Ġact ĠAn Ġoptional Ġcallback Ġwhich Ġwill Ġbe Ġinvoked Ġwith Ġthe Ġ` bloc ` Ġunder Ġtest . ĠIt Ġshould Ġbe Ċ Ġ* Ġused Ġto Ġinteract Ġwith Ġthe Ġ` bloc `. Ċ Ġ* Ċ Ġ* Ġ@ param Ġskip ĠAn Ġoptional Ġ[ Int ] Ġwhich Ġcan Ġbe Ġused Ġto Ġskip Ġany Ġnumber Ġof Ġstates . ĠDefaults Ġto Ġ` 0 `. Ċ Ġ* Ċ Ġ* Ġ@ param Ġexpected ĠA Ġlist Ġof Ġ[ State Assertion ] s Ġwhich Ġwill Ġbe Ġrun Ġon Ġeach Ġnewly Ġemitted Ġstate Ġin Ċ Ġ* Ġorder . ĠUse Ġthis Ġto Ġcheck Ġthe Ġcorrect ness Ġof Ġeach Ġstate Ġemitted Ġby Ġthe Ġ` bloc ` Ġunder Ġtest . Ċ Ġ* Ċ Ġ* Ġ@ param Ġverify ĠAn Ġoptional Ġcallback Ġwhich Ġis Ġinvoked Ġafter Ġall Ġ[ expected ] Ġstates Ġhave Ġbeen Ċ Ġ* Ġemitted , Ġand Ġcan Ġbe Ġused Ġfor Ġadditional Ġverification / assertions . Ċ Ġ* Ċ Ġ* Ġ@ param ĠtearDown ĠCan Ġbe Ġused Ġto Ġexecute Ġany Ġcode Ġafter Ġthe Ġtest Ġhas Ġrun . Ċ Ġ*/ Ċ @ Experimental Time Ċ suspend Ġfun Ġ< B Ġ: ĠB loc Base < State >, ĠState > Ġtest Bloc ( ĊĠĠĠ ĠsetUp : Ġsuspend Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġbuild : Ġ() Ġ-> ĠB , ĊĠĠĠ Ġact : Ġsuspend ĠB . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġskip : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġexpected : ĠList < State Assertion < State >> Ġ= Ġempty List (), ĊĠĠĠ Ġverify : ĠB . () Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ ĠtearDown : Ġsuspend Ġ() Ġ-> ĠUnit Ġ= Ġ{}, Ċ ) Ġ{ ĊĠĠĠ Ġassert ( skip Ġ>= Ġ 0 ) ĊĊĠĠĠ ĠsetUp () ĊĊĠĠĠ Ġval Ġb loc Ġ= Ġbuild () ĊĊĠĠĠ Ġb loc . state Flow . test Ġ{ ĊĠĠĠĠĠĠĠ Ġb loc . act () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġskip ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Item () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( assertion Ġin Ġexpected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġawait Item () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( assertion ( item )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcancel And Ignore Remaining Events () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġb loc . verify () ĊĊĠĠĠ ĠtearDown () Ċ } Ċ