diff options
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 + ] + ] + ] |