@ file : Suppress ( ĊĠĠĠ Ġ" Unused Imports " ĊĠĠĠ Ġ// TODO Ġremove Ġonce Ġwe Ġupdate Ġto Ġde te kt ĠRC 1 0 Ġor Ġnewer , Ġthe Ġtype Ġalias Ġis Ġthe Ġproblem Ċ ) Ċ Ċ package Ġch . tut tel i . k box Ċ Ċ import Ġch . tut tel i . at rium . api . cc . en _ GB . contains Exactly Ċ import Ġch . tut tel i . at rium . api . cc . en _ GB . isEmpty Ċ import Ġch . tut tel i . at rium . assert Ċ import Ġorg . jetbrains . spe k . api . Spe k Ċ import Ġorg . jetbrains . spe k . api . dsl . describe Ċ import Ġorg . jetbrains . spe k . api . dsl . given Ċ import Ġorg . jetbrains . spe k . api . dsl . it Ċ import Ġkotlin . reflect . K Function 2 Ċ import Ġch . tut tel i . k box . forEach Remaining Ġas Ġforeach Remaining Ġ// otherwise Ġwe Ġuse Ġj dk 8 Ċ Ċ object ĠFor Each Remaining Spec Ġ: ĠSpe k ({ ĊĠĠĠ Ġval ĠforEach Remaining Fun : ĠK Function 2 < Iterator < Int >, Ġ( Int ) Ġ-> ĠUnit , ĠUnit > Ġ= ĠIterator < Int >:: foreach Remaining ĊĠĠĠ Ġval ĠforEach Remaining Ġ= ĠforEach Remaining Fun . name ĊĊĠĠĠ Ġdescribe (" fun Ġ$ forEach Remaining Ġand Ġadd Ġto Ġlist ") Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven (" empty Ġiterator ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġempty Ġlist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf < Int >(). iterator (). foreach Remaining Ġ{ Ġresult . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( result ). isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgiven (" iterator Ġwith Ġone Ġelement Ġbut Ġalready Ġone Ġconsumed ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġempty Ġlist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitr Ġ= ĠlistOf ( 1 ). iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitr . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitr . foreach Remaining Ġ{ Ġresult . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( result ). isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgiven (" iterator Ġwith Ġtwo Ġelement Ġand Ġone Ġalready Ġconsumed ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġa Ġlist Ġwith Ġone Ġmapped Ġelement ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitr Ġ= ĠlistOf ( 1 , Ġ 2 ). iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitr . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitr . foreach Remaining Ġ{ Ġresult . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( result ). contains Exactly ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgiven (" iterator Ġwith Ġthree Ġelement Ġand Ġone Ġalready Ġconsumed ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġa Ġlist Ġwith Ġtwo Ġmapped Ġelements ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitr Ġ= ĠlistOf ( 1 , Ġ 2 , Ġ 4 ). iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitr . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitr . foreach Remaining Ġ{ Ġresult . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( result ). contains Exactly ( 2 , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ