package Ġcom . github . ade yn ack . kot ti . collections Ċ Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . jetbrains . spe k . api . Spe k Ċ import Ġorg . jetbrains . spe k . api . dsl . context Ċ import Ġorg . jetbrains . spe k . api . dsl . describe Ċ import Ġorg . jetbrains . spe k . api . dsl . it Ċ import Ġjava . util . stream . Int Stream Ċ import Ġkotlin . streams . as Sequence Ċ Ċ object ĠFilter By OneOf Spec Ġ: ĠSpe k ({ ĊĊĠĠĠ Ġdescribe (" filter By OneOf ") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Multiple Of 2 ( i : ĠInt ): ĠBoolean Ġ= Ġi Ġ% Ġ 2 Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġfun Ġis Multiple Of 3 ( i : ĠInt ): ĠBoolean Ġ= Ġi Ġ% Ġ 3 Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġfun Ġis Multiple Of 5 ( i : ĠInt ): ĠBoolean Ġ= Ġi Ġ% Ġ 5 Ġ== Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġcontext (" return Ġthe Ġright Ġresult ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġon Ġan ĠIterable ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 .. 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter By OneOf (:: is Multiple Of 2 , Ġ:: is Multiple Of 3 , Ġ:: is Multiple Of 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Equal ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 2 , Ġ 1 4 , Ġ 1 5 , Ġ 1 6 , Ġ 1 8 , Ġ 2 0 , Ġ 2 1 , Ġ 2 2 , Ġ 2 4 , Ġ 2 5 , Ġ 2 6 , Ġ 2 7 , Ġ 2 8 , Ġ 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġon Ġa ĠSequence ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 .. 3 0 ). as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter By OneOf (:: is Multiple Of 2 , Ġ:: is Multiple Of 3 , Ġ:: is Multiple Of 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Equal ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 2 , Ġ 1 4 , Ġ 1 5 , Ġ 1 6 , Ġ 1 8 , Ġ 2 0 , Ġ 2 1 , Ġ 2 2 , Ġ 2 4 , Ġ 2 5 , Ġ 2 6 , Ġ 2 7 , Ġ 2 8 , Ġ 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġon Ġa ĠSequence Ġcreated Ġfrom Ġa ĠStream ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt Stream . range Closed ( 1 , Ġ 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter By OneOf (:: is Multiple Of 2 , Ġ:: is Multiple Of 3 , Ġ:: is Multiple Of 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Equal ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 2 , Ġ 1 4 , Ġ 1 5 , Ġ 1 6 , Ġ 1 8 , Ġ 2 0 , Ġ 2 1 , Ġ 2 2 , Ġ 2 4 , Ġ 2 5 , Ġ 2 6 , Ġ 2 7 , Ġ 2 8 , Ġ 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" should Ġuse Ġthe Ġfilters Ġappropriately ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" on Ġan ĠIterable ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġused 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġused 3 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġused 5 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġ( 1 .. 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter By OneOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġused 2 ++; Ġis Multiple Of 2 ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġused 3 ++; Ġis Multiple Of 3 ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġused 5 ++; Ġis Multiple Of 5 ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 2 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġthe Ġright Ġresult ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġshould Equal ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 2 , Ġ 1 4 , Ġ 1 5 , Ġ 1 6 , Ġ 1 8 , Ġ 2 0 , Ġ 2 1 , Ġ 2 2 , Ġ 2 4 , Ġ 2 5 , Ġ 2 6 , Ġ 2 7 , Ġ 2 8 , Ġ 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhave Ġcalled Ġthe Ġ` is Multiple Of 2 ` Ġpredicate Ġonly Ġfor Ġevery Ġelement Ġof Ġthe Ġinitial Ġiterable ") Ġ{ Ġused 2 Ġshould Equal Ġ 5 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhave Ġcalled Ġthe Ġ` is Multiple Of 3 ` Ġpredicate Ġonly Ġjust Ġas Ġit Ġneeds Ġit Ġ( non - lazy )") Ġ{ Ġused 3 Ġshould Equal Ġ 2 5 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhave Ġcalled Ġthe Ġ` is Multiple Of 5 ` Ġpredicate Ġonly Ġjust Ġas Ġit Ġneeds Ġit Ġ( non - lazy )") Ġ{ Ġused 5 Ġshould Equal Ġ 1 7 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" on Ġa ĠSequence ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġused 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġused 3 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġused 5 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġ( 1 .. 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter By OneOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġused 2 ++; Ġis Multiple Of 2 ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġused 3 ++; Ġis Multiple Of 3 ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġused 5 ++; Ġis Multiple Of 5 ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 2 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġthe Ġright Ġresult ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġshould Equal ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 2 , Ġ 1 4 , Ġ 1 5 , Ġ 1 6 , Ġ 1 8 , Ġ 2 0 , Ġ 2 1 , Ġ 2 2 , Ġ 2 4 , Ġ 2 5 , Ġ 2 6 , Ġ 2 7 , Ġ 2 8 , Ġ 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhave Ġcalled Ġthe Ġ` is Multiple Of 2 ` Ġpredicate Ġjust Ġas Ġit Ġneeds Ġit ") Ġ{ Ġused 2 Ġshould Equal Ġ 3 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhave Ġcalled Ġthe Ġ` is Multiple Of 3 ` Ġpredicate Ġjust Ġas Ġit Ġneeds Ġit ") Ġ{ Ġused 3 Ġshould Equal Ġ 1 5 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhave Ġcalled Ġthe Ġ` is Multiple Of 5 ` Ġpredicate Ġjust Ġas Ġit Ġneeds Ġit ") Ġ{ Ġused 5 Ġshould Equal Ġ 1 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" on Ġa ĠSequence Ġcreated Ġfrom Ġa ĠStream ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġused 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġused 3 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġused 5 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt Stream . range Closed ( 1 , Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter By OneOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġused 2 ++; Ġis Multiple Of 2 ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġused 3 ++; Ġis Multiple Of 3 ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġused 5 ++; Ġis Multiple Of 5 ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( 2 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġthe Ġright Ġresult ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġshould Equal ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 2 , Ġ 1 4 , Ġ 1 5 , Ġ 1 6 , Ġ 1 8 , Ġ 2 0 , Ġ 2 1 , Ġ 2 2 , Ġ 2 4 , Ġ 2 5 , Ġ 2 6 , Ġ 2 7 , Ġ 2 8 , Ġ 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhave Ġcalled Ġthe Ġ` is Multiple Of 2 ` Ġpredicate Ġjust Ġas Ġit Ġneeds Ġit ") Ġ{ Ġused 2 Ġshould Equal Ġ 3 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhave Ġcalled Ġthe Ġ` is Multiple Of 3 ` Ġpredicate Ġjust Ġas Ġit Ġneeds Ġit ") Ġ{ Ġused 3 Ġshould Equal Ġ 1 5 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġhave Ġcalled Ġthe Ġ` is Multiple Of 5 ` Ġpredicate Ġjust Ġas Ġit Ġneeds Ġit ") Ġ{ Ġused 5 Ġshould Equal Ġ 1 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" return Ġan Ġempty Ġlist Ġwhen Ġnone Ġof Ġthe Ġfilter Ġis Ġmatched ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġon Ġan ĠIterable ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 1 , Ġ 7 , Ġ 1 1 , Ġ 1 3 , Ġ 1 7 , Ġ 1 9 , Ġ 2 3 , Ġ 2 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter By OneOf (:: is Multiple Of 2 , Ġ:: is Multiple Of 3 , Ġ:: is Multiple Of 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Equal ( emptyList < Int >()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġon Ġa ĠSequence ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 1 , Ġ 7 , Ġ 1 1 , Ġ 1 3 , Ġ 1 7 , Ġ 1 9 , Ġ 2 3 , Ġ 2 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter By OneOf (:: is Multiple Of 2 , Ġ:: is Multiple Of 3 , Ġ:: is Multiple Of 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Equal ( emptyList < Int >()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" should Ġon Ġa ĠStream ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt Stream . of ( 1 , Ġ 7 , Ġ 1 1 , Ġ 1 3 , Ġ 1 7 , Ġ 1 9 , Ġ 2 3 , Ġ 2 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter By OneOf (:: is Multiple Of 2 , Ġ:: is Multiple Of 3 , Ġ:: is Multiple Of 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. should Equal ( emptyList < Int >()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }) Ċ