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