{- 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