plur-0.2.0.0: test/Properties.hs
module Main (main) where
import Control.Applicative
import Data.Plur
import System.Exit
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
import Hedgehog
import Hedgehog.Classes
genPlur :: Gen x -> Gen (Plur x)
genPlur gen = Gen.choice
[ pure Zero
, One <$> gen
, Two <$> gen <*> gen
]
main :: IO ()
main = do
result <- lawsCheckMany
[ ("Plur",
[ functorLaws genPlur
, applicativeLaws genPlur
, monadLaws genPlur
, traversableLaws genPlur
, semigroupLaws $ genPlur Gen.unicode
, monoidLaws $ genPlur Gen.unicode
])
]
exitWith $ if result then ExitSuccess else ExitFailure 1