/* Ċ Ġ* ĠFX GL Ġ- ĠJava FX ĠGame ĠLibrary . ĠThe ĠMIT ĠLicense Ġ( MIT ). Ċ Ġ* ĠCopyright Ġ( c ) ĠAl mas B Ġ( al mas lvl @ gmail . com ). Ċ Ġ* ĠSee ĠLICENSE Ġfor Ġdetails . Ċ Ġ*/ Ċ Ċ package Ġcom . al mas b . fx gl . dsl . components Ċ Ċ import Ġcom . al mas b . fx gl . app . scene . Viewport Ċ import Ġcom . al mas b . fx gl . entity . Entity Ċ import Ġcom . al mas b . fx gl . entity . Game World Ċ import Ġcom . al mas b . fx gl . physics . Bounding Shape Ċ import Ġcom . al mas b . fx gl . physics . Hit Box Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . hamcrest . Matchers . contains Ċ import Ġorg . junit . jupiter . api . Assertions . assertFalse Ċ import Ġorg . junit . jupiter . api . Assertions . assertTrue Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ /** Ċ Ġ* Ġ@ author ĠJ oh an ĠD yk str Ã¶ m Ċ Ġ*/ Ċ class ĠOff screen In visible Component Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġviewport : ĠView port ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġviewport Ġ= ĠView port ( 8 0 0 . 0 , Ġ 6 0 0 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Entity Ġis Ġhidden Ġwhen Ġentity Ġmoves Ġoff screen `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġe . addComponent ( Off screen In visible Component ( viewport )) ĊĊĠĠĠĠĠĠĠ Ġval Ġworld Ġ= ĠGame World () ĊĠĠĠĠĠĠĠ Ġworld . add Entity ( e ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġe . x Ġ= Ġ- 1 5 . 0 ĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ Ġ// ĠWorld Ġstill Ġcontains Ġentity , Ġbut Ġit Ġis Ġinvisible ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( e . isVisible ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Entity Ġis Ġhidden Ġwhen Ġentity Ġwith Ġbbox Ġmoves Ġoff screen `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġe . addComponent ( Off screen In visible Component ( viewport )) ĊĠĠĠĠĠĠĠ Ġe . bounding Box Component . add Hit Box ( Hit Box ( Bounding Shape . box ( 3 0 . 0 , Ġ 3 0 . 0 ))) ĊĊĠĠĠĠĠĠĠ Ġval Ġworld Ġ= ĠGame World () ĊĠĠĠĠĠĠĠ Ġworld . add Entity ( e ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġe . x Ġ= Ġ- 2 5 . 0 ĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġe . x Ġ= Ġ- 3 0 . 0 ĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġe . x Ġ= Ġ- 3 1 . 0 ĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ Ġ// ĠWorld Ġstill Ġcontains Ġentity , Ġbut Ġit Ġis Ġinvisible ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( e . isVisible ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Entity Ġis Ġhidden Ġwhen Ġviewport Ġmoves Ġoff screen `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġe . addComponent ( Off screen In visible Component ( viewport )) ĊĊĠĠĠĠĠĠĠ Ġval Ġworld Ġ= ĠGame World () ĊĠĠĠĠĠĠĠ Ġworld . add Entity ( e ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġviewport . x Ġ= Ġ 5 . 0 ĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ Ġ// ĠWorld Ġstill Ġcontains Ġentity , Ġbut Ġit Ġis Ġinvisible ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( e . isVisible ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Entity Ġis Ġdisplayed Ġagain Ġwhen Ġentity Ġmoves Ġback Ġon screen `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġe . addComponent ( Off screen In visible Component ( viewport )) ĊĊĠĠĠĠĠĠĠ Ġval Ġworld Ġ= ĠGame World () ĊĠĠĠĠĠĠĠ Ġworld . add Entity ( e ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġe . x Ġ= Ġ- 1 5 . 0 ĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ Ġ// ĠWorld Ġstill Ġcontains Ġentity , Ġbut Ġit Ġis Ġinvisible ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġe . x Ġ= Ġ 1 0 . 0 ĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ Ġ// ĠEntity Ġis Ġvisible Ġagain ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Entity Ġcreated Ġoff screen Ġbecomes Ġvisible Ġwhen Ġit Ġmoves Ġon screen `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠEntity () ĊĠĠĠĠĠĠĠ Ġe . x Ġ= Ġ- 1 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġe . addComponent ( Off screen In visible Component ( viewport )) ĊĊĠĠĠĠĠĠĠ Ġval Ġworld Ġ= ĠGame World () ĊĠĠĠĠĠĠĠ Ġworld . add Entity ( e ) ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( e . isVisible ) ĊĊĠĠĠĠĠĠĠ Ġe . x Ġ= Ġ 1 0 . 0 ĊĠĠĠĠĠĠĠ Ġworld . on Update ( 0 . 0 1 6 ) ĊĠĠĠĠĠĠĠ Ġ// ĠEntity Ġis Ġvisible Ġagain ĊĠĠĠĠĠĠĠ ĠassertThat ( world . entities , Ġcontains ( e )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( e . isVisible ) ĊĠĠĠ Ġ} Ċ } Ċ