package Ġnl . jh vh . s udoku . grid . model . segment Ċ Ċ /* ĠCopyright Ġ 2 0 2 0 ĠJan - H end rik Ġvan ĠHe us den ĊĊĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĊĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ import Ġio . mock k . Capt uring Slot Ċ import Ġio . mock k . confirm Verified Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Object Ċ import Ġio . mock k . slot Ċ import Ġio . mock k . spy k Ċ import Ġio . mock k . un mock k Object Ċ import Ġio . mock k . verify Ċ import Ġnl . jh vh . s udoku . format . Format table Ċ import Ġnl . jh vh . s udoku . format . S udoku Formatter Ċ import Ġnl . jh vh . s udoku . grid . Grid With Cells TestBase Ċ import Ġnl . jh vh . s udoku . grid . model . cell . Cell Ref . Cell Ref Calculation Ċ import Ġnl . jh vh . s udoku . grid . model . cell . Cell Ref . Cell Ref Calculation . index To Col Ref Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġkotlin . random . Random Ċ Ċ /** Ġgrid Ġmock Ġand Ġcell Ġmocks Ġinitialized Ġin Ġ[ Grid With Cells TestBase . grid SetUp ] Ġ*/ Ċ internal Ġclass ĠCol Test : ĠGrid With Cells TestBase ( block Size Ġ= Ġ 3 ) Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Col Ref () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcol Index Capt urer : ĠCapt uring Slot < Int > Ġ= Ġslot () ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġfor Ġ( col Index Ġin Ġ 0 Ġuntil Ġgrid Size ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock k Object ( Cell Ref Calculation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ ĠCell Ref Calculation . index To Col Ref ( capture ( col Index Capt urer )) Ġ} Ġanswers Ġ{ Ġ( col Index Capt urer . captured + 1 ). toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= ĠCol ( grid Mock , Ġcol Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwhen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Ref Ġ= Ġsubject . col Ref ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( col Ref ). isEqualTo (( col Index + 1 ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠCell Ref Calculation . index To Col Ref ( col Index ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Verified ( Cell Ref Calculation ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun mock k Object ( Cell Ref Calculation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Cells () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( col Index Ġin Ġ 0 Ġuntil Ġgrid Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= ĠCol ( grid Mock , Ġcol Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Set Ġ= Ġsubject . cells ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( cell Set ). has Size ( grid Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell Set . forEach Indexed Ġ{ Ġindex , Ġcell Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( cell . col Index ). isEqualTo ( col Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( cell . rowIndex ). isEqualTo ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest ToString () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcol Index Ġ= ĠRandom . nextInt ( 0 , Ġgrid Size ) ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= ĠCol ( grid Mock , Ġcol Index ) ĊĠĠĠĠĠĠĠ ĠassertThat ( subject . toString ()). contains ("${ Col :: class . simple Name }: Ġ", Ġ"[ col Index =$ col Index ]", Ġ"[ col Ref =${ index To Col Ref ( col Index )} ]") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġformat () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĊĠĠĠĠĠĠĠ Ġval Ġspi ed Subject Ġ= Ġspy k ( Col ( grid Mock , Ġ 4 )) ĊĠĠĠĠĠĠĠ Ġval Ġformatter Mock : ĠS udoku Formatter Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠFormat table . Format table List ( listOf (" formatted ĠColumn ")) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġformatter Mock . format ( sp ied Subject ) Ġ} Ġreturns Ġexpected ĊĠĠĠĠĠĠĠ Ġ// Ġwhen , Ġthen ĊĠĠĠĠĠĠĠ ĠassertThat ( sp ied Subject . format ( formatter Mock )). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠ Ġverify Ġ( exact ly Ġ= Ġ 1 ) Ġ{ Ġspi ed Subject . format ( formatter Mock ) Ġ} ĊĠĠĠĠĠĠĠ Ġverify Ġ( exact ly Ġ= Ġ 1 ) Ġ{ Ġformatter Mock . format ( sp ied Subject ) Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġconfirm Ġthat Ġno Ġfurther Ġcalls Ġwere Ġmade ĊĠĠĠĠĠĠĠ Ġconfirm Verified ( sp ied Subject , Ġformatter Mock ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ