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/DataSpec.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/DataSpec.hs')
-rw-r--r-- | test/Xanthous/DataSpec.hs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/Xanthous/DataSpec.hs b/test/Xanthous/DataSpec.hs new file mode 100644 index 000000000000..ba060b7ad289 --- /dev/null +++ b/test/Xanthous/DataSpec.hs @@ -0,0 +1,35 @@ +-- | + +module Xanthous.DataSpec where + +import Test.Prelude hiding (Right, Left, Down) +import Xanthous.Data +import Data.Group + +main :: IO () +main = defaultMain test + +test :: TestTree +test = testGroup "Xanthous.Data" + [ testGroup "Position" + [ testBatch $ monoid @Position mempty + , testProperty "group laws" $ \(pos :: Position) -> + pos <> invert pos == mempty && invert pos <> pos == mempty + ] + , testGroup "Direction" + [ testProperty "opposite is involutive" $ \(dir :: Direction) -> + opposite (opposite dir) == dir + , testProperty "opposite provides inverse" $ \dir -> + invert (asPosition dir) == asPosition (opposite dir) + , testGroup "Move" + [ testCase "Up" $ move Up mempty @?= Position 0 (-1) + , testCase "Down" $ move Down mempty @?= Position 0 1 + , testCase "Left" $ move Left mempty @?= Position (-1) 0 + , testCase "Right" $ move Right mempty @?= Position 1 0 + , testCase "UpLeft" $ move UpLeft mempty @?= Position (-1) (-1) + , testCase "UpRight" $ move UpRight mempty @?= Position 1 (-1) + , testCase "DownLeft" $ move DownLeft mempty @?= Position (-1) 1 + , testCase "DownRight" $ move DownRight mempty @?= Position 1 1 + ] + ] + ] |