blob: e23f7faba3a692444decaa6aec58491deee0e87b (
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
36
37
38
39
40
41
42
43
44
45
|
{-# LANGUAGE RecordWildCards #-}
--------------------------------------------------------------------------------
module Xanthous.Entities.RawTypesSpec (main, test) where
--------------------------------------------------------------------------------
import Test.Prelude
--------------------------------------------------------------------------------
import Data.Interval (Extended(..), (<=..<=))
--------------------------------------------------------------------------------
import Xanthous.Entities.RawTypes
--------------------------------------------------------------------------------
main :: IO ()
main = defaultMain test
test :: TestTree
test = testGroup "Xanthous.Entities.RawTypesSpec"
[ testGroup "CreatureGenerateParams"
[ testGroup "Ord laws"
[ testProperty "comparability" $ \(a :: CreatureGenerateParams) b ->
a <= b || b <= a
, testProperty "transitivity" $ \(a :: CreatureGenerateParams) b c ->
a <= b && b <= c ==> a <= c
, testProperty "reflexivity" $ \(a :: CreatureGenerateParams) ->
a <= a
, testProperty "antisymmetry" $ \(a :: CreatureGenerateParams) b ->
(a <= b && b <= a) == (a == b)
]
, testGroup "canGenerate" $
let makeParams minB maxB =
let _levelRange = maybe NegInf Finite minB <=..<= maybe PosInf Finite maxB
_equippedItem = Nothing
in CreatureGenerateParams {..}
in
[ testProperty "no bounds" $ \level ->
let gps = makeParams Nothing Nothing
in canGenerate level gps
, testProperty "min bound" $ \level minB ->
let gps = makeParams (Just minB) Nothing
in canGenerate level gps === (level >= minB)
, testProperty "max bound" $ \level maxB ->
let gps = makeParams Nothing (Just maxB)
in canGenerate level gps === (level <= maxB)
]
]
]
|