package Ġorg . hex works . z ir con . api . graphics Ċ Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . hex works . z ir con . api . Tiles Ċ import Ġorg . hex works . z ir con . api . builder . graphics . Tile Graphics Builder Ċ import Ġorg . hex works . z ir con . api . color . ANS IT ile Color Ċ import Ġorg . hex works . z ir con . api . data . Position Ċ import Ġorg . hex works . z ir con . api . data . Rect Ċ import Ġorg . hex works . z ir con . api . data . Size Ċ import Ġorg . hex works . z ir con . api . data . Tile Ċ import Ġorg . hex works . z ir con . fetch Characters Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠSub Tile Graphics Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbackend Ġ= ĠTile Graphics Builder . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Size ( BACKEND _ SIZE _ 5 X 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġlateinit Ġvar Ġtarget : ĠTile Graphics ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget Ġ= Ġbackend . to Sub Tile Graphics ( BOUN DS _ 1 TO 1 _ 3 X 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠUnsupportedOperationException :: class ) ĊĠĠĠ Ġfun Ġshould Restrict Resize () Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget . to Res ized ( Size . default Grid Size ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠUnsupportedOperationException :: class ) ĊĠĠĠ Ġfun Ġshould Restrict Resize With Fill er () Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget . to Res ized ( Size . default Grid Size (), ĠTile . empty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Pro per ly Fill Backend When Fill Is Called () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsub Fill er Ġ= ĠT iles . default Tile (). with Character (' x ') ĊĊĠĠĠĠĠĠĠ Ġtarget . fill ( sub Fill er ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchars Ġ= Ġbackend . fetch Characters () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( chars ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' x ', Ġ' x ', Ġ' x ', Ġ' Ġ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' x ', Ġ' x ', Ġ' x ', Ġ' Ġ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' x ', Ġ' x ', Ġ' x ', Ġ' Ġ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Pro per ly Fetch Cells () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( target . size . fetch Positions (). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly Elements Of ( BOUN DS _ 1 TO 1 _ 3 X 3 . size . fetch Positions (). toList ()) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Pro per ly Apply Style () Ġ{ ĊĠĠĠĠĠĠĠ Ġbackend . fill ( Tiles . default Tile ()) ĊĠĠĠĠĠĠĠ Ġbackend . apply Style ( BLUE _ RED _ STYLE ) ĊĊĠĠĠĠĠĠĠ Ġtarget . apply Style ( YELLOW _ GREEN _ STYLE ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( backend . size . fetch Positions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġbackend . get Tile At ( it ). get (). style Set Ġ}). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBL UE _ RED _ STYLE , ĠBL UE _ RED _ STYLE , ĠBL UE _ RED _ STYLE , ĠBL UE _ RED _ STYLE , ĠBL UE _ RED _ STYLE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBL UE _ RED _ STYLE , ĠY ELLOW _ GREEN _ STYLE , ĠY ELLOW _ GREEN _ STYLE , ĠY ELLOW _ GREEN _ STYLE , ĠBL UE _ RED _ STYLE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBL UE _ RED _ STYLE , ĠY ELLOW _ GREEN _ STYLE , ĠY ELLOW _ GREEN _ STYLE , ĠY ELLOW _ GREEN _ STYLE , ĠBL UE _ RED _ STYLE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBL UE _ RED _ STYLE , ĠY ELLOW _ GREEN _ STYLE , ĠY ELLOW _ GREEN _ STYLE , ĠY ELLOW _ GREEN _ STYLE , ĠBL UE _ RED _ STYLE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBL UE _ RED _ STYLE , ĠBL UE _ RED _ STYLE , ĠBL UE _ RED _ STYLE , ĠBL UE _ RED _ STYLE , ĠBL UE _ RED _ STYLE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Pro per ly Create Sub Sub Tile Graphics () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsub Fill er Ġ= ĠFIL LER _ UNDER SCORE . with Character (' x ') ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtarget ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Sub Tile Graphics ( Rect . create ( Position . offset 1 x 1 (), ĠSize . create ( 2 , Ġ 1 ))) ĊĠĠĠĠĠĠĠ Ġresult . fill ( sub Fill er ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchars Ġ= Ġbackend . size . fetch Positions (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackend . get Tile At ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġtile Ġ-> Ġtile . as Character Tile (). get (). character Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. orElse (' Ġ') ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertThat ( chars ). contains Exactly ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' Ġ', Ġ' x ', Ġ' x ', Ġ' Ġ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ', Ġ' Ġ') ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠBL UE _ RED _ STYLE Ġ= ĠStyle Set . create ( ANS IT ile Color . BLUE , ĠAN S IT ile Color . RED ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠY ELLOW _ GREEN _ STYLE Ġ= ĠStyle Set . create ( ANS IT ile Color . YELLOW , ĠAN S IT ile Color . GREEN ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠBACK END _ SIZE _ 5 X 5 Ġ= ĠSize . create ( 5 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠFIL LER _ UNDER SCORE Ġ= ĠT iles . default Tile (). with Character ('_ ') ĊĊĠĠĠĠĠĠĠ Ġval ĠBO UN DS _ 1 TO 1 _ 3 X 3 Ġ= ĠRect . create ( Position . offset 1 x 1 (), ĠSize . create ( 3 , Ġ 3 )) ĊĠĠĠ Ġ} Ċ Ċ } Ċ