{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE UndecidableInstances #-}
module Prolude.Test
(
module Test.QuickCheck
, ArbitraryUniform(..)
, 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 { ArbitraryUniform a -> a
unArbitraryUniform :: a }
deriving Rep (ArbitraryUniform a) x -> ArbitraryUniform a
ArbitraryUniform a -> Rep (ArbitraryUniform a) x
(forall x. ArbitraryUniform a -> Rep (ArbitraryUniform a) x)
-> (forall x. Rep (ArbitraryUniform a) x -> ArbitraryUniform a)
-> Generic (ArbitraryUniform a)
forall a x.
Generic a =>
Rep (ArbitraryUniform a) x -> ArbitraryUniform a
forall a x.
Generic a =>
ArbitraryUniform a -> Rep (ArbitraryUniform a) x
forall x. Rep (ArbitraryUniform a) x -> ArbitraryUniform a
forall x. ArbitraryUniform a -> Rep (ArbitraryUniform a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
to :: Rep (ArbitraryUniform a) x -> ArbitraryUniform a
$cto :: forall a x.
Generic a =>
Rep (ArbitraryUniform a) x -> ArbitraryUniform a
from :: ArbitraryUniform a -> Rep (ArbitraryUniform a) x
$cfrom :: forall a x.
Generic a =>
ArbitraryUniform a -> Rep (ArbitraryUniform a) x
Generic.Generic via a
instance (Random.GArbitrary Random.UnsizedOpts a, Random.GUniformWeight a) => Arbitrary (ArbitraryUniform a) where
arbitrary :: Gen (ArbitraryUniform a)
arbitrary = Gen (ArbitraryUniform a)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
Random.genericArbitraryU
arbitraryIO :: (Arbitrary a, Monad.MonadIO m) => m a
arbitraryIO :: m a
arbitraryIO = IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
Monad.liftIO (Gen a -> IO a
forall a. Gen a -> IO a
generate Gen a
forall a. Arbitrary a => Gen a
arbitrary)