// define Ġtemp = su . jf dev . ek ol lection s Ċ @ file : Suppress (" Package Directory Mismatch ") Ċ Ċ package Ġsu . jf dev . ek ol lection s . iterator Ċ Ċ // define ĠShort =# PR IM # Ċ // define Ġshort =# prim # Ċ Ċ import Ġorg . eclipse . collections . api . iterator . Long Iterator Ċ import Ġorg . eclipse . collections . impl . factory . primitive .* Ċ import Ġorg . jetbrains . spe k . api .* Ċ import Ġorg . jetbrains . spe k . api . dsl .* Ċ import Ġorg . junit . platform . runner .* Ċ import Ġorg . junit . runner .* Ċ import Ġsu . jf dev . ek ol lection s . util .* Ċ import Ġsu . jf dev . ek ol lection s . util . Primitives . random Long Ċ import Ġsu . jf dev . test . fluent .* Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent .* Ċ import Ġsu . jf dev . ek ol lection s . util . Primitives . random Boolean Ġas Ġrandom Condition Ċ Ċ @ RunWith ( JUnit Platform :: class ) Ċ class ĠLong Iterator Test : ĠSubject Spe k < Long Iterator >( re ceiving Ġ{ ĊĠĠĠ Ġval ĠSIZE Ġ= Ġ 1 0 0 ĊĠĠĠ Ġval Ġlist Ġ= ĠLong Lists . mutable . empty (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġrepeat ( SIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( random Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġsubject Ġ{ Ġlist . long Iterator () Ġ} ĊĠĠĠ Ġgiven (" function : Ġiterate Ġwith Ġaccept or ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġiterate Ġall Ġ$ SIZE Ġelements ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . iterate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġshould Equal ĠSIZE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgiven (" function : Ġindexed Iterate Ġwith Ġbi Accept or ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġiterate Ġall Ġ$ SIZE Ġelements Ġwith Ġvalid Ġorder ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . indexed Iterate Ġ{ Ġi , Ġsh Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ Ġ== Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġshould Equal ĠSIZE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgiven (" function : Ġcount Ġwith Ġcondition ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġcount Ġall Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshould Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . count Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom Condition Ġ= Ġrandom Condition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( random Condition ) Ġshould ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Condition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġshould ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgiven (" function : Ġall Ġwith Ġcondition ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfalse Ġif Ġone Ġor Ġmore Ġelements Ġdenied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter ( 0 .. SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! counter . is Random () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġtrue Ġif Ġall Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfalse Ġif Ġall Ġelements Ġdenied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgiven (" function : Ġnone Ġwith Ġcondition ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfalse Ġif Ġone Ġor Ġmore Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter ( 0 .. SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . none Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . is Random () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfalse Ġif Ġall Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . none Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġtrue Ġif Ġall Ġelements Ġdenied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . none Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgiven (" function : Ġany Ġwith Ġcondition ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġtrue Ġif Ġone Ġor Ġmore Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter ( 0 .. SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . is Random () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġtrue Ġif Ġall Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfalse Ġif Ġall Ġelements Ġdenied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġshould Equal Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgiven (" function : Ġsingle Ġwith Ġcondition ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġthrow ĠIllegalStateException Ġif Ġnone Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIllegalStateException :: class Ġshould Throw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . single Ġ{ Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġthrow ĠIllegalStateException Ġif Ġtoo Ġmany Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIllegalStateException :: class Ġshould Throw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . single Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġvalue Ġif Ġone Ġvalue Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter ( 0 .. SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . single Ġ{ Ġcounter . is Random () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġcondition : Ġ( Long ) Ġ-> ĠBoolean Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġany : ĠAny Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġwhen Ġ( any ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChar ĠĠĠ Ġ-> Ġ! any . is Letter Or Digit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNumber Ġ Ġ-> Ġany . toInt () Ġ% Ġ 2 Ġ== Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠ Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġselect Ġ= Ġlist . select ( condition ) ĊĠĠĠ Ġgiven (" function : Ġfirst Ġwith Ġcondition ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġthrow ĠNoSuch ElementException Ġif Ġnone Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNoSuch ElementException :: class Ġshould Throw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . first Ġ{ Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfirst Ġvalue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . first ( condition ) Ġ== Ġselect . first ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgiven (" function : Ġlast Ġwith Ġcondition ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġthrow ĠNoSuch ElementException Ġif Ġnone Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNoSuch ElementException :: class Ġshould Throw Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . last Ġ{ Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġlast Ġvalue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . last ( condition ) Ġ== Ġselect . last ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgiven (" function : Ġ` index Ġof Ġfirst ` Ġwith Ġcondition ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġ- 1 Ġif Ġnone Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject .` index Ġof Ġfirst ` Ġ{ Ġfalse Ġ} Ġshould Equal Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfirst Ġvalue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject .` index Ġof Ġfirst `( condition ) Ġ== Ġlist . indexOf ( select . first ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġgiven (" function : Ġ` index Ġof Ġlast ` Ġwith Ġcondition ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġ- 1 Ġif Ġnone Ġelements Ġsatisfied ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject .` index Ġof Ġlast ` Ġ{ Ġfalse Ġ} Ġshould Equal Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfirst Ġvalue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject .` index Ġof Ġlast `( condition ) Ġ== Ġlist . lastIndexOf ( select . last ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ġ{ ĊĠĠĠ Ġclass ĠCounter ( val Ġexpect : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor ( range : ĠInt Range ): Ġthis ( expect Ġ= ĠThread Local Random . current (). nextInt ( range . first , Ġrange . last )) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġ_ value Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġvalue : ĠInt Ġget () Ġ= Ġ_ value . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ value ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġcontains ( index : ĠInt ) Ġ= Ġvalue Ġ== Ġindex ĊĠĠĠĠĠĠĠ Ġfun Ġis Random () Ġ= Ġexpect Ġin Ġthis ĊĠĠĠ Ġ} Ċ } ĊĊ