diff options
author | Griffin Smith <root@gws.fyi> | 2019-08-31T17·17-0400 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2019-08-31T17·18-0400 |
commit | 4ef19aa35a6d63a8d9f7b6a7a11ac82c2a525783 (patch) | |
tree | 00a0109cca42bbdda93fa117142d381501c1bf00 /test/Xanthous/GameSpec.hs | |
parent | 6eba471e2426e7e4e7d5c935e3ce973e13fd6b24 (diff) |
Add entities, and allow walking around
Add support for entities via a port of the EntityMap type, and implement command support starting at basic hjkl.
Diffstat (limited to 'test/Xanthous/GameSpec.hs')
-rw-r--r-- | test/Xanthous/GameSpec.hs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/Xanthous/GameSpec.hs b/test/Xanthous/GameSpec.hs new file mode 100644 index 000000000000..1f1cc2e4d55e --- /dev/null +++ b/test/Xanthous/GameSpec.hs @@ -0,0 +1,30 @@ +module Xanthous.GameSpec where + +import Test.Prelude hiding (Down) +import Xanthous.Game +import Control.Lens.Properties +import Xanthous.Data (move, Direction(Down)) +import Xanthous.Data.EntityMap (atPosition) +import Xanthous.Entities.SomeEntity + +main :: IO () +main = defaultMain test + +test :: TestTree +test = testGroup "Xanthous.Game" + [ testGroup "positionedCharacter" + [ testProperty "lens laws" $ isLens positionedCharacter + , testCase "updates the position of the character" $ do + let initialGame = getInitialState + initialPos = initialGame ^. characterPosition + updatedGame = initialGame & characterPosition %~ move Down + updatedPos = updatedGame ^. characterPosition + updatedPos @?= move Down initialPos + updatedGame ^. entities . atPosition initialPos @?= fromList [] + updatedGame ^. entities . atPosition updatedPos + @?= fromList [SomeEntity $ initialGame ^. character] + ] + , testGroup "characterPosition" + [ testProperty "lens laws" $ isLens characterPosition + ] + ] |