{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE TemplateHaskell #-}
module Main (main) where
import Prelude
import GHC.Generics (Generic)
import Data.Aeson (FromJSON, ToJSON)
import Hedgehog (Gen, Property)
import Hedgehog (checkParallel, discover)
import Hedgehog.Main (defaultMain)
import Hedgehog.Range (singleton)
import qualified Hedgehog.Golden.Aeson as Aeson
import qualified Hedgehog.Gen as Gen
data HigherKinded a = HigherKinded { wrapped :: a }
deriving stock (Generic)
deriving anyclass FromJSON
deriving anyclass ToJSON
higherKinded :: Gen (HigherKinded Int)
higherKinded = fmap HigherKinded (Gen.int $ singleton 7)
prop_hexit :: Property
prop_hexit = Aeson.goldenProperty Gen.hexit
prop_bool :: Property
prop_bool = Aeson.goldenProperty Gen.bool
prop_higher_kinded :: Property
prop_higher_kinded = Aeson.goldenProperty higherKinded
tests :: IO Bool
tests = checkParallel $$discover
main :: IO ()
main = defaultMain [ tests ]