package Ġcom . eta . shapes . impl . geometry Ċ Ċ import Ġcom . eta . shapes . api . geometry .* Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . given Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ internal Ġclass ĠRectangle Geometry Handler Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcircle Handler : ĠCircle Geometry Handler Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġpolygon Handler : ĠPolygon Geometry Handler Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠRectangle Geometry Handler ( circle Handler , Ġpolygon Handler ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġcalculate Ġboundary `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// given ĊĠĠĠĠĠĠĠ Ġval Ġrectangle Ġ= ĠRectangle ( 1 , Ġ 2 , Ġ 1 , Ġ 4 ) ĊĊĠĠĠĠĠĠĠ Ġ// when ĊĠĠĠĠĠĠĠ Ġval Ġboundary Ġ= Ġhandler . get Boundary ( rectangle ) ĊĊĠĠĠĠĠĠĠ Ġ// then ĊĠĠĠĠĠĠĠ ĠassertThat ( boundary ). isEqualTo ( rectangle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġfind Ġpartial Ġintersection `() Ġ= Ġ` should Ġfind Ġintersection `( ĊĠĠĠĠĠĠĠ ĠRectangle ( 1 , Ġ 1 0 , Ġ 1 , Ġ 1 0 ), ĊĠĠĠĠĠĠĠ ĠRectangle ( 2 , Ġ 2 0 , Ġ 5 , Ġ 3 0 ), ĊĠĠĠĠĠĠĠ ĠRectangle ( 2 , Ġ 1 0 , Ġ 5 , Ġ 1 0 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġfind Ġinner Ġintersection `() Ġ= Ġ` should Ġfind Ġintersection `( ĊĠĠĠĠĠĠĠ ĠRectangle ( 1 , Ġ 1 0 , Ġ 1 , Ġ 1 0 ), ĊĠĠĠĠĠĠĠ ĠRectangle ( 2 , Ġ 5 , Ġ 2 , Ġ 5 ), ĊĠĠĠĠĠĠĠ ĠRectangle ( 2 , Ġ 5 , Ġ 2 , Ġ 5 ) ĊĠĠĠ Ġ) ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġfind Ġouter Ġintersection `() Ġ= Ġ` should Ġfind Ġintersection `( ĊĠĠĠĠĠĠĠ ĠRectangle ( 1 , Ġ 1 0 , Ġ 1 , Ġ 1 0 ), ĊĠĠĠĠĠĠĠ ĠRectangle ( 0 , Ġ 2 0 , Ġ 0 , Ġ 2 0 ), ĊĠĠĠĠĠĠĠ ĠRectangle ( 1 , Ġ 1 0 , Ġ 1 , Ġ 1 0 ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġignore Ġborder Ġintersection `() Ġ= Ġ` should Ġfind Ġintersection `( ĊĠĠĠĠĠĠĠ ĠRectangle ( 1 , Ġ 1 0 , Ġ 1 , Ġ 1 0 ), ĊĠĠĠĠĠĠĠ ĠRectangle ( 1 , Ġ 1 0 , Ġ 1 0 , Ġ 3 0 ), ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġignore Ġnon Ġintersect ing `() Ġ= Ġ` should Ġfind Ġintersection `( ĊĠĠĠĠĠĠĠ ĠRectangle ( 1 , Ġ 1 0 , Ġ 1 , Ġ 1 0 ), ĊĠĠĠĠĠĠĠ ĠRectangle ( 1 0 0 , Ġ 1 1 0 , Ġ 1 0 0 , Ġ 3 0 0 ), ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġintersect Ġcircle `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// given ĊĠĠĠĠĠĠĠ Ġval Ġrectangle Ġ= ĠRectangle ( 1 , Ġ 2 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġcircle Ġ= ĠCircle ( Point ( 1 , Ġ 1 ), Ġ 1 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠGeometry Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġgiven ( circle Handler . intersect ( circle , Ġrectangle )). willReturn ( expected ) ĊĊĠĠĠĠĠĠĠ Ġ// when ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġhandler . intersect ( rectangle , Ġcircle ) ĊĊĠĠĠĠĠĠĠ Ġ// then ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġintersect Ġpolygon `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// given ĊĠĠĠĠĠĠĠ Ġval Ġrectangle Ġ= ĠRectangle ( 1 , Ġ 2 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġpolygon Ġ= ĠPolygon ( listOf ( Point ( 1 , Ġ 1 ))) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠGeometry Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġgiven ( polygon Handler . intersect ( polygon , Ġrectangle )). willReturn ( expected ) ĊĊĠĠĠĠĠĠĠ Ġ// when ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġhandler . intersect ( rectangle , Ġpolygon ) ĊĊĠĠĠĠĠĠĠ Ġ// then ĊĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEqualTo ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ` should Ġfind Ġintersection `( geometry 1 : ĠRectangle , Ġgeometry 2 : ĠRectangle , Ġexpected : ĠRectangle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// when ĊĠĠĠĠĠĠĠ Ġval Ġintersection Ġ= Ġhandler . intersect ( geometry 1 , Ġgeometry 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// then ĊĠĠĠĠĠĠĠ ĠassertThat ( intersection ). isEqualTo ( expected ) ĊĠĠĠ Ġ} Ċ } Ċ