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 . 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 Flag . ENTITY Ċ 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 ĠMedium Traversal Test Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġcollisions : ĠColl isions ĊĠĠĠ Ġlateinit Ġvar Ġcollision : ĠCollision Strategy ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġcollisions Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġcollision Ġ= ĠLand Collision ( coll isions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ| X | Ġ| Ġ| ĊĠĠĠĠ Ġ* Ġ| E | E | Ġ| ĊĠĠĠĠ Ġ* Ġ| E | E | Ġ| ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` North Ġblocked Ġat Ġthe Ġstart `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( start . x , Ġstart . y Ġ+ Ġ 2 , Ġstart . plane , ĠTest Flags . LAND _ BLOCK _ SO UTH _ EAST ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMedium Traversal . blocked ( collision , Ġstart , ĠSize . TWO , ĠDirection . NORTH ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ| Ġ| X | Ġ| ĊĠĠĠĠ Ġ* Ġ| E | E | Ġ| ĊĠĠĠĠ Ġ* Ġ| E | E | Ġ| ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` North Ġblocked Ġat Ġthe Ġend `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( start . x Ġ+ Ġ 1 , Ġstart . y Ġ+ Ġ 2 , Ġstart . plane , ĠTest Flags . LAND _ BLOCK _ SO UTH _ WEST ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMedium Traversal . blocked ( collision , Ġstart , ĠSize . TWO , ĠDirection . NORTH ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ| E | E | Ġ| ĊĠĠĠĠ Ġ* Ġ| E | E | Ġ| ĊĠĠĠĠ Ġ* Ġ| Ġ| Ġ| X | ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` South - east Ġblocked Ġdiag on ally `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( start . x Ġ+ Ġ 2 , Ġstart . y Ġ- Ġ 1 , Ġstart . plane , ĠTest Flags . LAND _ WALL _ NORTH _ WEST ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMedium Traversal . blocked ( collision , Ġstart , ĠSize . TWO , ĠDirection . SO UTH _ EAST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ| E | E | Ġ| ĊĠĠĠĠ Ġ* Ġ| E | E | Ġ| ĊĠĠĠĠ Ġ* Ġ| Ġ| X | Ġ| ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` South - east Ġblocked Ġvert ically `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( start . x Ġ+ Ġ 1 , Ġstart . y Ġ- Ġ 1 , Ġstart . plane , Test Flags . ĠL AND _ CLEAR _ NORTH ) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMedium Traversal . blocked ( collision , Ġstart , ĠSize . TWO , ĠDirection . SO UTH _ EAST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ| E | E | Ġ| ĊĠĠĠĠ Ġ* Ġ| E | E | X | ĊĠĠĠĠ Ġ* Ġ| Ġ| Ġ| Ġ| ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` South - east Ġblocked Ġh orizontally `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( any (), Ġany (), Ġany (), Ġany ()) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( start . x Ġ+ Ġ 2 , Ġstart . y , Ġstart . plane , ĠTest Flags . LAND _ CLEAR _ WEST ) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMedium Traversal . blocked ( collision , Ġstart , ĠSize . TWO , ĠDirection . SO UTH _ EAST ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` North Ġblocked Ġby Ġentity `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcollision Ġ= ĠCharacter Collision ( coll isions ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( start . x , Ġstart . y Ġ+ Ġ 2 , Ġstart . plane , ĠTest Flags . LAND _ BLOCK _ SO UTH _ EAST Ġor ĠENT ITY ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMedium Traversal . blocked ( collision , Ġstart , ĠSize . TWO , ĠDirection . NORTH ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Blocked Ġby Ġsky `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcollision Ġ= ĠSky Collision ( coll isions ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollisions . check ( start . x , Ġstart . y Ġ+ Ġ 2 , Ġstart . plane , ĠTest Flags . SK Y _ BLOCK _ SO UTH _ EAST Ġor ĠCollision Flag . IG NO RED ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMedium Traversal . blocked ( collision , Ġstart , ĠSize . TWO , ĠDirection . NORTH ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Blocked Ġby Ġignored `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= ĠTile ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcollision Ġ= ĠIgnore d Collision ( coll isions , ĠLand Collision ( coll isions )) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcollision . blocked ( start . x , Ġstart . y Ġ+ Ġ 2 , Ġstart . plane , ĠDirection . SO UTH _ EAST ) Ġ} Ġreturns Ġtrue ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMedium Traversal . blocked ( collision , Ġstart , ĠSize . TWO , ĠDirection . NORTH ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertTrue ( result ) ĊĠĠĠ Ġ} Ċ Ċ }