packages feed

yaya-test-0.3.0.0: test/Test/Fold.hs

{-# LANGUAGE TemplateHaskell #-}

module Test.Fold where

import           Data.Proxy
import           Hedgehog
import qualified Hedgehog.Gen as Gen

import           Yaya.Fold
import           Yaya.Fold.Common
import           Yaya.Hedgehog.Expr
import           Yaya.Hedgehog.Fold

prop_muCataCancel :: Property
prop_muCataCancel =
  property $ law_cataCancel size =<< forAll (genExpr (Gen.sized genMuExpr))

prop_muCataRefl :: Property
prop_muCataRefl =
  property $ law_cataRefl =<< forAll (Gen.sized genMuExpr)

prop_muCataCompose :: Property
prop_muCataCompose =
  property
  $ law_cataCompose (Proxy :: Proxy (Mu Expr)) size id
    =<< forAll (Gen.sized genMuExpr)

tests :: IO Bool
tests = checkParallel $$(discover)