package Ġlib . posit Ċ Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . matchers . double s . shouldBe LessThan Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġkotlin . math . abs Ċ Ċ /** Ċ Ġ* ĠÐ¢ ÐµÑģÑĤ Ñĭ ĠÐ´Ð»Ñı ĠÐ° ÑĢÐ¸ ÑĦ Ð¼ ÐµÑĤ Ð¸ÑĩÐµÑģ ÐºÐ¸ Ñħ ĠÐ¾Ð¿ ÐµÑĢ Ð°ÑĨÐ¸ Ð¹ . Ċ Ġ*/ Ċ class ĠPos it Ar ith met ics Test Ġ: ĠString Spec () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarr 1 Ġ= Ġdouble ArrayOf ( 0 . 0 , Ġ 3 . 0 , Ġ 1 . 0 , Ġ- 1 2 3 1 5 5 . 1 2 3 4 4 ,- 0 . 0 0 0 0 9 4 , Ġ 9 7 8 5 6 5 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġarr 2 Ġ= Ġdouble ArrayOf ( 0 . 0 , Ġ 0 . 0 , Ġ- 1 . 0 , Ġ 3 5 6 . 5 6 5 2 , Ġ 0 . 0 0 0 3 1 2 , Ġ 0 . 0 0 0 3 3 ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġarr 1 . indices ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sum Ġtest Ġof Ġ${ arr 1 [ i ]} Ġ+ Ġ${ arr 2 [ i ]}" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . abs (( Pos it ( arr 1 [ i ]) Ġ+ ĠPos it ( arr 2 [ i ])). toDouble () Ġ- Ġ( arr 1 [ i ] Ġ+ Ġarr 2 [ i ])) ĠshouldBe LessThan ĠĠ 0 . 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġarr 1 . indices ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Minus Ġtest Ġof Ġ${ arr 1 [ i ]} Ġ- Ġ${ arr 2 [ i ]}" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . abs (( Pos it ( arr 1 [ i ]) Ġ- ĠPos it ( arr 2 [ i ])). toDouble () Ġ- Ġ( arr 1 [ i ] Ġ- Ġarr 2 [ i ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġarr 1 . indices ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Times Ġtest Ġof Ġ${ arr 1 [ i ]} Ġ* Ġ${ arr 2 [ i ]}" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 3 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabs (( Pos it ( arr 1 [ i ]) Ġ* ĠPos it ( arr 2 [ i ])). toDouble () Ġ- Ġ( arr 1 [ i ] Ġ* Ġarr 2 [ i ])) ĠshouldBe LessThan Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabs (( Pos it ( arr 1 [ i ]) Ġ* ĠPos it ( arr 2 [ i ])). toDouble () Ġ- Ġ( arr 1 [ i ] Ġ* Ġarr 2 [ i ])) ĠshouldBe LessThan ĠĠ 0 . 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Div Ġtest Ġzero Ġto Ġzero "{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( Pos it ( 0 ) Ġ/ ĠPos it ( 0 )). posit Chunk ĠshouldBe ĠPos it . INFINITY ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" Div Ġtest Ġ 1 Ġto Ġ- 1 "{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( Pos it ( 1 ) Ġ/ ĠPos it (- 1 )). toDouble () ĠshouldBe Ġ- 1 . 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 2 Ġuntil Ġarr 1 . size ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Div Ġtest Ġof Ġ${ arr 1 [ i ]} Ġ/ Ġ${ arr 2 [ i ]} Ġgood Ġresult :${ arr 1 [ i ] Ġ/ Ġarr 2 [ i ]}, Ġhave : Ġ${ Pos it ( arr 1 [ i ]) Ġ/ ĠPos it ( arr 2 [ i ]) } Ġ"{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabs (( Pos it ( arr 1 [ i ]) Ġ/ ĠPos it ( arr 2 [ i ])). toDouble () Ġ- Ġ( arr 1 [ i ] Ġ/ Ġarr 2 [ i ])) ĠshouldBe LessThan ĠĠ 0 . 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 2 Ġuntil Ġarr 1 . size ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Rem Ġtest Ġof Ġ${ arr 1 [ i ]} Ġ% Ġ${ arr 2 [ i ]}" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMath . abs (( Pos it ( arr 1 [ i ]) Ġ% ĠPos it ( arr 2 [ i ])). toDouble () Ġ- Ġ( arr 1 [ i ] Ġ% Ġarr 2 [ i ])) ĠshouldBe LessThan ĠĠ 0 . 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġarr 1 . indices ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Trunc ating Ġtest Ġof Ġ${ arr 1 [ i ]}" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPos it ( arr 1 [ i ]). floor (). toDouble () ĠshouldBe ĠĠ Ġarr 1 [ i ]. toInt (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġarr 1 . indices ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Compare Ġtest Ġof Ġ${ arr 1 [ i ]} Ġand Ġ${ arr 2 [ i ] }. Ġ${ arr 1 [ i ]. compareTo ( arr 2 [ i ]) }" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Pos it ( arr 1 [ i ]). compareTo ( Pos it ( arr 2 [ i ]))) ĠshouldBe Ġ( arr 1 [ i ]. compareTo ( arr 2 [ i ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }