package Ġde . gle ex . plt cmd . util . geometry Ċ Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . inspect ors . for All Ċ import Ġio . kot est . matchers . collections . should Contain Ċ import Ġio . kot est . matchers . double s . shouldBe LessThan OrEqual Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġkotlin . math . sqrt Ċ Ċ class ĠCircle Test Ġ: ĠString Spec ({ ĊĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Pair < Int , ĠInt >>() ĊĠĠĠ Ġval Ġresult Catch er : Ġ( Int , ĠInt ) Ġ-> ĠUnit Ġ= Ġ{ Ġx , Ġy Ġ-> Ġresult . add ( Pair ( x , Ġy )) Ġ} ĊĠĠĠ Ġval Ġcenter Ġ= ĠPair ( 1 3 , Ġ 1 7 ) ĊĊĠĠĠ Ġ" circle With Radius Ġ 0 " Ġ{ ĊĠĠĠĠ Ġresult . clear () ĊĠĠĠĠ Ġcircle With Radius ( center . first , Ġcenter . second , Ġ 0 , Ġresult Catch er ) ĊĠĠĠĠ Ġresult ĠshouldBe ĠlistOf ( center ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" circle With Radius Ġ 1 " Ġ{ ĊĠĠĠĠ Ġresult . clear () ĊĠĠĠĠ Ġcircle With Radius ( center . first , Ġcenter . second , Ġ 1 , Ġresult Catch er ) ĊĠĠĠĠ Ġresult . size ĠshouldBe Ġ 9 ĊĠĠĠĠ Ġ// Ġsquare Ġwith Ġedge Ġlength Ġ 3 ĊĠĠĠĠ Ġfor Ġ( x Ġin Ġ( center . first Ġ- Ġ 1 ) .. ( center . first Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ( center . second Ġ- Ġ 1 ) .. ( center . second Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠ Ġresult Ġshould Contain ĠPair ( x , Ġy ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" circle With Radius Ġ 5 " Ġ{ ĊĠĠĠĠĠĠĠ Ġresult . clear () ĊĠĠĠĠĠĠĠ Ġcircle With Radius ( center . first , Ġcenter . second , Ġ 5 , Ġresult Catch er ) ĊĠĠĠĠĠĠĠ Ġresult . size ĠshouldBe Ġ 9 7 ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġdistance Ġfor Ġeach Ġpoint ĊĠĠĠĠĠĠĠ Ġresult . for All Ġ{ Ġit . distance To ( center ) ĠshouldBe LessThan OrEqual Ġ 5 . 5 Ġ} ĊĠĠĠ Ġ} Ċ Ċ }) Ċ Ċ fun ĠPair < Int , ĠInt >. distance To ( other : ĠPair < Int , ĠInt >): ĠDouble Ġ{ ĊĠĠĠ Ġval Ġdx Ġ= Ġfirst Ġ- Ġother . first ĊĠĠĠ Ġval Ġdy Ġ= Ġsecond Ġ- Ġother . second ĊĠĠĠ Ġreturn Ġsqrt (( dx Ġ* Ġdx Ġ+ Ġdy Ġ* Ġdy ). toDouble ()) Ċ }