packages feed

summoner-1.3.0: test/Spec.hs

module Main where

import Hedgehog (Group (..), checkParallel)
import Test.Hspec (hspec)

import Test.DecisionSpec (decisionMonoidMempty, decisionSemigroupAssoc)
import Test.Golden (goldenSpec)
import Test.QuestionSpec (yesNoPromptSpec)
import Test.Script (scriptSpec)
import Test.TomlSpec (tomlProp)


main :: IO ()
main = do
    hspec $ do
        yesNoPromptSpec
        scriptSpec
        goldenSpec
    ifM (checkParallel hedgehogTests) exitSuccess exitFailure

hedgehogTests :: Group
hedgehogTests = Group "Roundtrip properties"
    [ decisionSemigroupAssoc `named` "Decision Semigroup:Assoc"
    , decisionMonoidMempty   `named` "Decision Monoid:Mempty"
    , tomlProp               `named` "decode . encode == id"
    ]
  where
    named :: a -> b -> (b, a)
    named = flip (,)