either-n-0.1.0.0: test/Gens.hs
{-# OPTIONS_GHC -Wall #-}
-- | Generators shared by the property tests.
module Gens (
genUnit,
genInt,
genString,
genList,
genMaybeInt,
genEither3,
genFnInt,
) where
import Data.Either3 (Either3 (..))
import Hedgehog (Gen)
import Hedgehog.Function (Fn, fn)
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
genUnit :: Gen ()
genUnit = pure ()
genInt :: Gen Int
genInt = Gen.int (Range.linear (-100) 100)
genString :: Gen String
genString = Gen.string (Range.linear 0 50) Gen.unicode
genList :: Gen [Int]
genList = Gen.list (Range.linear 0 10) genInt
genMaybeInt :: Gen (Maybe Int)
genMaybeInt = Gen.maybe genInt
genEither3 :: Gen a -> Gen b -> Gen c -> Gen (Either3 a b c)
genEither3 a b c = Gen.choice [fmap First3 a, fmap Second3 b, fmap Third3 c]
genFnInt :: Gen (Fn Int Int)
genFnInt = fn genInt