package Ġworld . greg s . void ps . engine . entity . list Ċ Ċ import Ġio . mock k .* Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġworld . greg s . void ps . engine . any Value Ċ import Ġworld . greg s . void ps . engine . entity . Entity Ċ import Ġworld . greg s . void ps . engine . map . Tile Ċ Ċ internal Ġclass ĠEntity List Test Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġlist : ĠEntity List < Entity > ĊĠĠĠ Ġlateinit Ġvar Ġentity : ĠEntity ĊĠĠĠ Ġval Ġtile Ġ= ĠTile ( 1 0 , Ġ 2 0 , Ġ 1 ) ĊĠĠĠ Ġval Ġhash Ġ= Ġtile . id ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Ġ= Ġspy k ( object Ġ: ĠEntity List < Entity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( hash : ĠInt ): ĠSet < Entity >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremove ( hash : ĠInt , Ġentity : ĠEntity ): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠforEach ( action : Ġ( Entity ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd ( hash : ĠInt , Ġentity : ĠEntity ): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġentity Ġ= Ġmock k () ĊĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġentity . tile Ġ} Ġreturns Ġtile ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Get Ġtile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġlist [ tile ] ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġlist [ hash ] Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Get Ġcoordinates `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġlist [ 1 0 , Ġ 2 0 , Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ any Value < Tile >() ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ hash ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Add Ġtile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġlist . add ( tile , Ġentity ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġlist . add ( hash , Ġentity ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Add Ġcoordinates `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġlist . add ( 1 0 , Ġ 2 0 , Ġ 1 , Ġentity ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( any Value < Tile >(), Ġentity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( hash , Ġentity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Set Ġadds `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġlist [ hash ] Ġ= Ġentity ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġlist . add ( hash , Ġentity ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Set Ġtile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġlist [ tile ] Ġ= Ġentity ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġlist . add ( hash , Ġentity ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Set Ġcoordinates `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġlist [ 1 0 , Ġ 2 0 , Ġ 1 ] Ġ= Ġentity ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( hash , Ġentity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Remove Ġtile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġlist . remove ( tile , Ġentity ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġlist . remove ( hash , Ġentity ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Remove Ġcoordinates `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġlist . remove ( 1 0 , Ġ 2 0 , Ġ 1 , Ġentity ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġverify Order Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . remove ( any Value < Tile >(), Ġentity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . remove ( hash , Ġentity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }