holy-project-0.1.0.1: scaffold/test/ModuleName/Coconut/Test.hs
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module {{moduleName}}.Coconut.Test
(coconutSuite)
where
import Test.Tasty (testGroup, TestTree)
import Test.Tasty.HUnit
import Test.Tasty.SmallCheck as SC
import {{moduleName}}.Coconut
-- Make instance of CoconutDataStruct
-- we simply use consN Constr where N is the arity of Constr (SmallCheck)
-- we also needed the
-- {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
import Test.SmallCheck.Series
instance Monad m => Serial m CoconutDataStruct where series = cons1 CoconutConstr
-- Now we could test properties with smallcheck on CoconutDataStruct type.
coconutSuite :: TestTree
coconutSuite = testGroup "coconut"
[ testCase "coconut" testCoconut
, SC.testProperty "coconut property" prop_coconut
]
testCoconut :: Assertion
testCoconut = coconut @=? 10
prop_coconut :: Property IO
prop_coconut = forAll $ \coconutStruct -> coconutfunc coconutStruct >= 0