package Ġio . wave beans . lib . stream . window Ċ Ċ import Ġassert k . Assert Ċ import Ġassert k . all Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . support . fail Ċ import Ġio . wave beans . lib .* Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ Ċ object ĠSample Scalar Window Stream Spec Ġ: ĠSpe k ({ ĊĠĠĠ Ġdescribe (" Fixed Ġwindow Ġsize = 2 ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠDouble Stream ( listOf ( 0 . 1 , Ġ 0 . 2 , Ġ 0 . 3 , Ġ 0 . 4 )). window ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġcalculated Ġas Ġsum Ġwith Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ( stream Ġ+ Ġ 1 . 0 ). as Sequence ( 2 . 0 f ). as Group ed Doubles (). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( l ). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 0 ). is ListOf ( 1 . 1 , Ġ 1 . 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 1 ). is ListOf ( 1 . 3 , Ġ 1 . 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġcalculated Ġas Ġsub traction Ġof Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ( stream Ġ- Ġ 0 . 1 ). as Sequence ( 2 . 0 f ). as Group ed Doubles (). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( l ). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 0 ). is ListOf ( 0 . 0 , Ġ 0 . 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 1 ). is ListOf ( 0 . 2 , Ġ 0 . 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġcalculated Ġas Ġmultiplication Ġon Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ( stream Ġ* Ġ 2 ). as Sequence ( 2 . 0 f ). as Group ed Doubles (). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( l ). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 0 ). is ListOf ( 0 . 2 , Ġ 0 . 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 1 ). is ListOf ( 0 . 6 , Ġ 0 . 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġcalculated Ġas Ġdivision Ġon Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ( stream Ġ/ Ġ 2 ). as Sequence ( 2 . 0 f ). as Group ed Doubles (). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( l ). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 0 ). is ListOf ( 0 . 0 5 , Ġ 0 . 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 1 ). is ListOf ( 0 . 1 5 , Ġ 0 . 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Sl iding Ġwindow Ġsize = 3 Ġstep = 2 ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠDouble Stream ( listOf ( 0 . 1 , Ġ 0 . 2 , Ġ 0 . 3 , Ġ 0 . 4 )). window ( 3 , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġcalculated Ġas Ġsum Ġwith Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ( stream Ġ+ Ġ 1 . 0 ). as Sequence ( 2 . 0 f ). as Group ed Doubles (). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( l ). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 0 ). is ListOf ( 1 . 1 , Ġ 1 . 2 , Ġ 1 . 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 1 ). is ListOf ( 1 . 3 , Ġ 1 . 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġcalculated Ġas Ġsub traction Ġof Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ( stream Ġ- Ġ 0 . 1 ). as Sequence ( 2 . 0 f ). as Group ed Doubles (). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( l ). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 0 ). is ListOf ( 0 . 0 , Ġ 0 . 1 , Ġ 0 . 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 1 ). is ListOf ( 0 . 2 , Ġ 0 . 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġcalculated Ġas Ġmultiplication Ġon Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ( stream Ġ* Ġ 2 ). as Sequence ( 2 . 0 f ). as Group ed Doubles (). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( l ). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 0 ). is ListOf ( 0 . 2 , Ġ 0 . 4 , Ġ 0 . 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 1 ). is ListOf ( 0 . 6 , Ġ 0 . 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġbe Ġcalculated Ġas Ġdivision Ġon Ġscalar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ( stream Ġ/ Ġ 2 ). as Sequence ( 2 . 0 f ). as Group ed Doubles (). toList () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( l ). all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 0 ). is ListOf ( 0 . 0 5 , Ġ 0 . 1 , Ġ 0 . 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat ( 1 ). is ListOf ( 0 . 1 5 , Ġ 0 . 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ Ċ private Ġfun ĠAssert < List < Sample >> . is ListOf ( var arg Ġexpected : ĠDouble ) Ġ= Ġgiven Ġ{ Ġactual Ġ-> ĊĠĠĠ Ġval Ġexpected As List Ġ= Ġexpected . toList () ĊĠĠĠ Ġif Ġ( actual . zip ( expected As List ). map Ġ{ Ġ( a , Ġb ) Ġ-> Ġkotlin . math . abs ( a Ġ- Ġb ) Ġ}. all Ġ{ Ġit Ġ< Ġ 1 e - 1 0 Ġ}) Ġreturn ĊĠĠĠ Ġfail ( expected As List , Ġactual ) Ċ } ĊĊ