package Ġcom . se an sh ub in . kotlin . try me . domain . coordinate Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠInt Point Test Ġ{ ĊĠ Ġ@ Test ĊĠ Ġfun Ġe ighth Turn Left 0 () Ġ{ ĊĠĠĠ Ġ// Ġgiven ĊĠĠĠ Ġval Ġpoint Ġ= ĠInt Point ( 0 , Ġ 0 ) ĊĠĠĠ Ġval Ġexpected Ġ= ĠInt Point ( 0 , Ġ 0 ) ĊĊĠĠĠ Ġ// Ġwhen ĊĠĠĠ Ġval Ġactual Ġ= Ġpoint . rotate E ighth Left () ĊĊĠĠĠ Ġ// Ġthen ĊĠĠĠ ĠassertEquals ( expected , Ġactual ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġe ighth Turn Left 1 () Ġ{ ĊĠĠĠ Ġval Ġcoordinates Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠ 1 , Ġ 1 , ĊĠĠĠĠĠĠĠĠ 0 , Ġ 1 , ĊĠĠĠĠĠĠĠ Ġ- 1 , Ġ 1 , ĊĠĠĠĠĠĠĠ Ġ- 1 , Ġ 0 , ĊĠĠĠĠĠĠĠ Ġ- 1 , Ġ- 1 , ĊĠĠĠĠĠĠĠĠ 0 , Ġ- 1 , ĊĠĠĠĠĠĠĠĠ 1 , Ġ- 1 , ĊĠĠĠĠĠĠĠĠ 1 , Ġ 0 , ĊĠĠĠĠĠĠĠĠ 1 , Ġ 1 ) ĊĠĠĠ Ġrotate E ighth Left Tester ( coordinates ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġe ighth Turn Left 2 a () Ġ{ ĊĠĠĠ Ġval Ġcoordinates Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠ 2 , Ġ 2 , ĊĠĠĠĠĠĠĠĠ 0 , Ġ 2 , ĊĠĠĠĠĠĠĠ Ġ- 2 , Ġ 2 , ĊĠĠĠĠĠĠĠ Ġ- 2 , Ġ 0 , ĊĠĠĠĠĠĠĠ Ġ- 2 , Ġ- 2 , ĊĠĠĠĠĠĠĠĠ 0 , Ġ- 2 , ĊĠĠĠĠĠĠĠĠ 2 , Ġ- 2 , ĊĠĠĠĠĠĠĠĠ 2 , Ġ 0 , ĊĠĠĠĠĠĠĠĠ 2 , Ġ 2 ) ĊĠĠĠ Ġrotate E ighth Left Tester ( coordinates ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġe ighth Turn Left 2 b () Ġ{ ĊĠĠĠ Ġval Ġcoordinates Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠ 1 , Ġ 2 , ĊĠĠĠĠĠĠĠ Ġ- 1 , Ġ 2 , ĊĠĠĠĠĠĠĠ Ġ- 2 , Ġ 1 , ĊĠĠĠĠĠĠĠ Ġ- 2 , Ġ- 1 , ĊĠĠĠĠĠĠĠ Ġ- 1 , Ġ- 2 , ĊĠĠĠĠĠĠĠĠ 1 , Ġ- 2 , ĊĠĠĠĠĠĠĠĠ 2 , Ġ- 1 , ĊĠĠĠĠĠĠĠĠ 2 , Ġ 1 , ĊĠĠĠĠĠĠĠĠ 1 , Ġ 2 ) ĊĠĠĠ Ġrotate E ighth Left Tester ( coordinates ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġe ighth Turn Left 3 a () Ġ{ ĊĠĠĠ Ġval Ġcoordinates Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠ 3 , Ġ 3 , ĊĠĠĠĠĠĠĠĠ 0 , Ġ 3 , ĊĠĠĠĠĠĠĠ Ġ- 3 , Ġ 3 , ĊĠĠĠĠĠĠĠ Ġ- 3 , Ġ 0 , ĊĠĠĠĠĠĠĠ Ġ- 3 , Ġ- 3 , ĊĠĠĠĠĠĠĠĠ 0 , Ġ- 3 , ĊĠĠĠĠĠĠĠĠ 3 , Ġ- 3 , ĊĠĠĠĠĠĠĠĠ 3 , Ġ 0 , ĊĠĠĠĠĠĠĠĠ 3 , Ġ 3 ) ĊĠĠĠ Ġrotate E ighth Left Tester ( coordinates ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġe ighth Turn Left 3 b () Ġ{ ĊĠĠĠ Ġval Ġcoordinates Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠ 2 , Ġ 3 , ĊĠĠĠĠĠĠĠ Ġ- 1 , Ġ 3 , ĊĠĠĠĠĠĠĠ Ġ- 3 , Ġ 2 , ĊĠĠĠĠĠĠĠ Ġ- 3 , Ġ- 1 , ĊĠĠĠĠĠĠĠ Ġ- 2 , Ġ- 3 , ĊĠĠĠĠĠĠĠĠ 1 , Ġ- 3 , ĊĠĠĠĠĠĠĠĠ 3 , Ġ- 2 , ĊĠĠĠĠĠĠĠĠ 3 , Ġ 1 , ĊĠĠĠĠĠĠĠĠ 2 , Ġ 3 ) ĊĠĠĠ Ġrotate E ighth Left Tester ( coordinates ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġe ighth Turn Left 3 c () Ġ{ ĊĠĠĠ Ġval Ġcoordinates Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠ 1 , Ġ 3 , ĊĠĠĠĠĠĠĠ Ġ- 2 , Ġ 3 , ĊĠĠĠĠĠĠĠ Ġ- 3 , Ġ 1 , ĊĠĠĠĠĠĠĠ Ġ- 3 , Ġ- 2 , ĊĠĠĠĠĠĠĠ Ġ- 1 , Ġ- 3 , ĊĠĠĠĠĠĠĠĠ 2 , Ġ- 3 , ĊĠĠĠĠĠĠĠĠ 3 , Ġ- 1 , ĊĠĠĠĠĠĠĠĠ 3 , Ġ 2 , ĊĠĠĠĠĠĠĠĠ 1 , Ġ 3 ) ĊĠĠĠ Ġrotate E ighth Left Tester ( coordinates ) ĊĠ Ġ} ĊĊĠ Ġfun Ġrotate E ighth Left Tester ( coordinates : ĠList < Int >) Ġ{ ĊĠĠĠ Ġcoordinates ĊĠĠĠĠĠĠĠ Ġ. chunk ed ( 2 ) ĊĠĠĠĠĠĠĠ Ġ. map ( Int Point . Companion :: from Chunk ) ĊĠĠĠĠĠĠĠ Ġ. window ed ( 2 ) ĊĠĠĠĠĠĠĠ Ġ. map ( TestCase . Companion :: from Chunk ) ĊĠĠĠĠĠĠĠ Ġ. forEach ( TestCase . run ( Int Point . Companion :: rotate E ighth Left )) ĊĠ Ġ} ĊĊĠ Ġdata Ġclass ĠTestCase ( val Ġinput : ĠInt Point , Ġval Ġexpected : ĠInt Point ) Ġ{ ĊĠĠĠ Ġfun Ġrun ( f : Ġ( Int Point ) Ġ-> ĠInt Point ) Ġ{ ĊĠĠĠĠĠ Ġval Ġactual Ġ= Ġf ( input ) ĊĠĠĠĠĠ ĠassertEquals ( expected , Ġactual , Ġinput . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠ Ġfun Ġfrom Chunk ( chunk : ĠList < Int Point >): ĠTestCase Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( chunk . size Ġ!= Ġ 2 ) Ġthrow ĠRuntimeException (" chunk Ġsize Ġmust Ġbe Ġexactly Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġ( from , Ġto ) Ġ= Ġchunk ĊĠĠĠĠĠĠĠ Ġreturn ĠTestCase ( from , Ġto ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġfun Ġrun ( f : Ġ( Int Point ) Ġ-> ĠInt Point ): Ġ( TestCase ) Ġ-> ĠUnit Ġ= Ġ{ ĠtestCase Ġ-> ĊĠĠĠĠĠĠĠ ĠtestCase . run ( f ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ