summoner-2.0.0.0: test/Test/DecisionSpec.hs
{- HLINT ignore "Monoid law, right identity" -}
{- HLINT ignore "Monoid law, left identity" -}
module Test.DecisionSpec
( decisionPropertySpec
-- * Gen
, genDecision
) where
import Hedgehog (MonadGen, forAll, (===))
import Test.Hspec (Spec, describe, it)
import Test.Hspec.Hedgehog (hedgehog)
import Summoner.Decision (Decision)
import qualified Hedgehog.Gen as Gen
decisionPropertySpec :: Spec
decisionPropertySpec = describe "Decision property tests" $ do
it "Decision Semigroup:Assoc" $ hedgehog $ do
x <- forAll genDecision
y <- forAll genDecision
z <- forAll genDecision
(x <> y) <> z === x <> (y <> z)
it "Decision Monoid:Mempty" $ hedgehog $ do
x <- forAll genDecision
x <> mempty === x
mempty <> x === x
genDecision :: MonadGen m => m Decision
genDecision = Gen.enumBounded