package Ġorg . kol le kt ions . transform ations Ċ Ċ import Ġorg . kol le kt ions . consum ers . Consumer Ċ import Ġorg . kol le kt ions . consum ers . asList Ċ import Ġorg . kol le kt ions . consum ers . consume Ċ import Ġorg . kol le kt ions . consum ers . count Ċ import Ġio . mock k .* Ċ import Ġkotlin . test .* Ċ Ċ class ĠSt arter Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġhandles Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠlistOf < Int >(). consume ( start When < Int > Ġ{ Ġit Ġ> Ġ 0 Ġ}. count ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġactual [ 0 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġchained Handles Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠlistOf < Int >(). consume ( filter On Ġ{ Ġa : ĠInt Ġ-> Ġa Ġ> Ġ 0 Ġ}. start When Ġ{ Ġit Ġ> Ġ 1 Ġ}. count ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġactual [ 0 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` handles Ġitem Ġthat Ġme ets Ġcondition `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġitems . consume ( start When < Int > Ġ{ Ġit Ġ> Ġ 0 Ġ}. asList (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart After < Int > Ġ{ Ġit Ġ> Ġ 0 Ġ}. asList ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 1 , Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 2 ) ĊĠĠĠĠĠĠĠ Ġ), Ġactual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` chain ed Ġhandles Ġitem Ġthat Ġme ets Ġcondition `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 2 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġitems . consume ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter On Ġ{ Ġa : ĠInt Ġ-> Ġa Ġ> Ġ 0 Ġ}. start When Ġ{ Ġit Ġ> Ġ 1 Ġ}. asList (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter On Ġ{ Ġa : ĠInt Ġ-> Ġa Ġ> Ġ 0 Ġ}. start After Ġ{ Ġit Ġ> Ġ 1 Ġ}. asList ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 2 , Ġ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 1 ) ĊĠĠĠĠĠĠĠ Ġ), Ġactual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpasses Stop Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconsumer Ġ= Ġmock k < Consumer < Int >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġstop () Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsut Ġ= Ġstart When < Int > Ġ{ Ġit Ġ> Ġ 1 Ġ}. build ( consumer ) ĊĠĠĠĠĠĠĠ Ġsut . stop () ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġconsumer . stop () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ