{-# 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 { forall a. ArbitraryUniform a -> a
unArbitraryUniform :: a }
deriving 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 :: forall x. Rep (ArbitraryUniform a) x -> ArbitraryUniform a
$cto :: forall a x.
Generic a =>
Rep (ArbitraryUniform a) x -> ArbitraryUniform a
from :: forall x. 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 = forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
Random.genericArbitraryU
arbitraryIO :: (Arbitrary a, Monad.MonadIO m) => m a
arbitraryIO :: forall a (m :: * -> *). (Arbitrary a, MonadIO m) => m a
arbitraryIO = forall (m :: * -> *) a. MonadIO m => IO a -> m a
Monad.liftIO (forall a. Gen a -> IO a
generate forall a. Arbitrary a => Gen a
arbitrary)