prolude-0.0.0.14: Prolude/Test.hs
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE UndecidableInstances #-}
module Prolude.Test
( -- * QuickCheck re-exports
module Test.QuickCheck
-- * Type
, ArbitraryUniform(..)
-- * Function
, arbitraryIO
)
where
import Test.QuickCheck (Arbitrary(arbitrary), generate, resize, sublistOf)
import Test.QuickCheck.Instances ()
import qualified Control.Monad.IO.Class as Monad
import qualified Generic.Random as Random
import qualified GHC.Generics as Generic
newtype ArbitraryUniform a = ArbitraryUniform { unArbitraryUniform :: a }
deriving Generic.Generic via a
instance (Random.GArbitrary Random.UnsizedOpts a, Random.GUniformWeight a) => Arbitrary (ArbitraryUniform a) where
arbitrary = Random.genericArbitraryU
arbitraryIO :: (Arbitrary a, Monad.MonadIO m) => m a
arbitraryIO = Monad.liftIO (generate arbitrary)