packages feed

hedgehog-golden-1.0.1: test/Main.hs

{-# 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 ]