package Ġworld . greg s . void ps . engine . path . traverse Ċ Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ 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 Ċ import Ġworld . greg s . void ps . engine . Test Flags Ċ import Ġworld . greg s . void ps . engine . entity . Direction Ċ import Ġworld . greg s . void ps . engine . entity . Size Ċ import Ġworld . greg s . void ps . engine . map . Tile Ċ import Ġworld . greg s . void ps . engine . map . collision . Collision Flag Ċ import Ġworld . greg s . void ps . engine . map . collision . Collision Strategy Ċ import Ġworld . greg s . void ps . engine . map . collision . Coll isions Ċ import Ġworld . greg s . void ps . engine . map . collision . strategy . Character Collision Ċ import Ġworld . greg s . void ps . engine . map . collision . strategy . Ignored Collision Ċ import Ġworld . greg s . void ps . engine . map . collision . strategy . Land Collision Ċ import Ġworld . greg s . void ps . engine . map . collision . strategy . Sky Collision Ċ Ċ internal Ġclass ĠSmall Traversal Test Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġcollisions : ĠColl isions ĊĠĠĠ Ġlateinit Ġvar Ġcollision : ĠCollision Strategy ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġcollisions Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcollision Ġ= ĠCharacter Collision ( coll isions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Blocked Ġcard inal `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= ĠDirection . NORTH ĊĠĠĠĠĠĠĠ Ġval Ġtile Ġ= Ġstart . add ( direction . delta ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( tile . x , Ġtile . y , Ġtile . plane , Ġany ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , Ġdirection ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Clear Ġcard inal `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( 1 , Ġ 2 , Ġ 0 , Ġany ()) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , ĠDirection . NORTH ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertFalse ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Diag onal Ġblocked Ġdiag on ally `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( 2 , Ġ 2 , Ġ 0 , Ġany ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , ĠDirection . NORTH _ EAST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Diag onal Ġblocked Ġh orizontally `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( 2 , Ġ 1 , Ġ 0 , Ġany ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , ĠDirection . NORTH _ EAST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Diag onal Ġblocked Ġvert ically `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( 1 , Ġ 0 , Ġ 0 , Ġany ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , ĠDirection . SO UTH _ WEST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Diag onal Ġclear `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , ĠDirection . SO UTH _ WEST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertFalse ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Blocked Ġby Ġentities `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( any (), Ġany (), Ġany (), ĠTest Flags . LAND _ BLOCK _ NORTH _ EAST Ġor ĠCollision Flag . ENTITY ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , ĠDirection . SO UTH _ WEST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Not Ġblocked Ġby Ġentities `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcollision Ġ= ĠCharacter Collision ( coll isions ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( any (), Ġany (), Ġany (), ĠTest Flags . LAND _ BLOCK _ NORTH _ EAST Ġor ĠCollision Flag . PLAYER ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , ĠDirection . SO UTH _ WEST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertFalse ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Blocked Ġsky `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcollision Ġ= ĠSky Collision ( coll isions ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( any (), Ġany (), Ġany (), ĠTest Flags . SK Y _ BLOCK _ NORTH _ EAST Ġor ĠCollision Flag . IG NO RED ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , ĠDirection . SO UTH _ WEST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Blocked Ġignored `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcollision Ġ= ĠIgnore d Collision ( coll isions , ĠLand Collision ( coll isions )) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( any (), Ġany (), Ġany (), ĠTest Flags . IG NO RED _ BLOCK _ NORTH _ EAST ) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( any (), Ġany (), Ġany (), ĠTest Flags . LAND _ BLOCK _ NORTH _ EAST ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSmall Traversal . blocked ( collision , Ġstart , ĠSize . ONE , ĠDirection . SO UTH _ WEST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} Ċ }