blob: ba060b7ad289427843a3df5d67de21968e2a1842 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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
]
]
]
|