25a1c5ade3
Factor out a new EntityAttributes type from some of the methods of the Entity class, to avoid the proliferation of 1-argument boolean methods on the entity class that always have to be forwarded through the Entity instance for SomeEntity if they have defaults (forgetting to do which has wasted tons of my time up to this point). Currently blocksVision, blocksObject, and collision are all in there.
46 lines
1.5 KiB
Haskell
46 lines
1.5 KiB
Haskell
--------------------------------------------------------------------------------
|
|
module Xanthous.Data.EntityMap.GraphicsSpec (main, test) where
|
|
--------------------------------------------------------------------------------
|
|
import Test.Prelude
|
|
import Data.Aeson
|
|
--------------------------------------------------------------------------------
|
|
import Xanthous.Game.State
|
|
import Xanthous.Data
|
|
import Xanthous.Data.EntityMap
|
|
import Xanthous.Data.EntityMap.Graphics
|
|
--------------------------------------------------------------------------------
|
|
|
|
main :: IO ()
|
|
main = defaultMain test
|
|
|
|
test :: TestTree
|
|
test = testGroup "Xanthous.Data.EntityMap.Graphics"
|
|
[ testGroup "visiblePositions"
|
|
[ testCase "non-contiguous bug 1" $
|
|
let charPos = Position 20 20
|
|
gormlakPos = Position 17 19
|
|
em = insertAt gormlakPos TestEntity
|
|
. insertAt charPos TestEntity
|
|
$ mempty
|
|
visPositions = visiblePositions charPos 12 em
|
|
in (gormlakPos `member` visPositions) @?
|
|
( "not ("
|
|
<> show gormlakPos <> " `member` "
|
|
<> show visPositions
|
|
<> ")"
|
|
)
|
|
]
|
|
]
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
data TestEntity = TestEntity
|
|
deriving stock (Show, Eq, Ord, Generic)
|
|
deriving anyclass (ToJSON, FromJSON, NFData)
|
|
|
|
instance Brain TestEntity where
|
|
step _ = pure
|
|
instance Draw TestEntity
|
|
instance Entity TestEntity where
|
|
description _ = ""
|
|
entityChar _ = "e"
|