{-# LANGUAGE GeneralizedNewtypeDeriving #-}

module Test.Tasty.QuickCheck (
  module QC,
  QuickCheckMaxRatio (..),
  testProperty,
) where

import GHC.Stack
import Test.Hspec
import Test.Hspec.QuickCheck
-- Using re-exported operators causes fourmolu not to know their fixity
import Test.QuickCheck as QC hiding ((.&&.), (.&.), (.||.), (=/=), (===), (==>), (><))

newtype QuickCheckMaxRatio = QuickCheckMaxRatio Int
  deriving (Integer -> QuickCheckMaxRatio
QuickCheckMaxRatio -> QuickCheckMaxRatio
QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
(QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (Integer -> QuickCheckMaxRatio)
-> Num QuickCheckMaxRatio
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
+ :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
$c- :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
- :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
$c* :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
* :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
$cnegate :: QuickCheckMaxRatio -> QuickCheckMaxRatio
negate :: QuickCheckMaxRatio -> QuickCheckMaxRatio
$cabs :: QuickCheckMaxRatio -> QuickCheckMaxRatio
abs :: QuickCheckMaxRatio -> QuickCheckMaxRatio
$csignum :: QuickCheckMaxRatio -> QuickCheckMaxRatio
signum :: QuickCheckMaxRatio -> QuickCheckMaxRatio
$cfromInteger :: Integer -> QuickCheckMaxRatio
fromInteger :: Integer -> QuickCheckMaxRatio
Num, Eq QuickCheckMaxRatio
Eq QuickCheckMaxRatio =>
(QuickCheckMaxRatio -> QuickCheckMaxRatio -> Ordering)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> Ord QuickCheckMaxRatio
QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
QuickCheckMaxRatio -> QuickCheckMaxRatio -> Ordering
QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Ordering
compare :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Ordering
$c< :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
< :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
$c<= :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
<= :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
$c> :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
> :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
$c>= :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
>= :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
$cmax :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
max :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
$cmin :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
min :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
Ord, QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
(QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool)
-> Eq QuickCheckMaxRatio
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
== :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
$c/= :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
/= :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> Bool
Eq, Num QuickCheckMaxRatio
Ord QuickCheckMaxRatio
(Num QuickCheckMaxRatio, Ord QuickCheckMaxRatio) =>
(QuickCheckMaxRatio -> Rational) -> Real QuickCheckMaxRatio
QuickCheckMaxRatio -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: QuickCheckMaxRatio -> Rational
toRational :: QuickCheckMaxRatio -> Rational
Real, Int -> QuickCheckMaxRatio
QuickCheckMaxRatio -> Int
QuickCheckMaxRatio -> [QuickCheckMaxRatio]
QuickCheckMaxRatio -> QuickCheckMaxRatio
QuickCheckMaxRatio -> QuickCheckMaxRatio -> [QuickCheckMaxRatio]
QuickCheckMaxRatio
-> QuickCheckMaxRatio -> QuickCheckMaxRatio -> [QuickCheckMaxRatio]
(QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (Int -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> Int)
-> (QuickCheckMaxRatio -> [QuickCheckMaxRatio])
-> (QuickCheckMaxRatio
    -> QuickCheckMaxRatio -> [QuickCheckMaxRatio])
-> (QuickCheckMaxRatio
    -> QuickCheckMaxRatio -> [QuickCheckMaxRatio])
-> (QuickCheckMaxRatio
    -> QuickCheckMaxRatio
    -> QuickCheckMaxRatio
    -> [QuickCheckMaxRatio])
-> Enum QuickCheckMaxRatio
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: QuickCheckMaxRatio -> QuickCheckMaxRatio
succ :: QuickCheckMaxRatio -> QuickCheckMaxRatio
$cpred :: QuickCheckMaxRatio -> QuickCheckMaxRatio
pred :: QuickCheckMaxRatio -> QuickCheckMaxRatio
$ctoEnum :: Int -> QuickCheckMaxRatio
toEnum :: Int -> QuickCheckMaxRatio
$cfromEnum :: QuickCheckMaxRatio -> Int
fromEnum :: QuickCheckMaxRatio -> Int
$cenumFrom :: QuickCheckMaxRatio -> [QuickCheckMaxRatio]
enumFrom :: QuickCheckMaxRatio -> [QuickCheckMaxRatio]
$cenumFromThen :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> [QuickCheckMaxRatio]
enumFromThen :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> [QuickCheckMaxRatio]
$cenumFromTo :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> [QuickCheckMaxRatio]
enumFromTo :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> [QuickCheckMaxRatio]
$cenumFromThenTo :: QuickCheckMaxRatio
-> QuickCheckMaxRatio -> QuickCheckMaxRatio -> [QuickCheckMaxRatio]
enumFromThenTo :: QuickCheckMaxRatio
-> QuickCheckMaxRatio -> QuickCheckMaxRatio -> [QuickCheckMaxRatio]
Enum, Enum QuickCheckMaxRatio
Real QuickCheckMaxRatio
(Real QuickCheckMaxRatio, Enum QuickCheckMaxRatio) =>
(QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio)
-> (QuickCheckMaxRatio
    -> QuickCheckMaxRatio -> (QuickCheckMaxRatio, QuickCheckMaxRatio))
-> (QuickCheckMaxRatio
    -> QuickCheckMaxRatio -> (QuickCheckMaxRatio, QuickCheckMaxRatio))
-> (QuickCheckMaxRatio -> Integer)
-> Integral QuickCheckMaxRatio
QuickCheckMaxRatio -> Integer
QuickCheckMaxRatio
-> QuickCheckMaxRatio -> (QuickCheckMaxRatio, QuickCheckMaxRatio)
QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
quot :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
$crem :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
rem :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
$cdiv :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
div :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
$cmod :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
mod :: QuickCheckMaxRatio -> QuickCheckMaxRatio -> QuickCheckMaxRatio
$cquotRem :: QuickCheckMaxRatio
-> QuickCheckMaxRatio -> (QuickCheckMaxRatio, QuickCheckMaxRatio)
quotRem :: QuickCheckMaxRatio
-> QuickCheckMaxRatio -> (QuickCheckMaxRatio, QuickCheckMaxRatio)
$cdivMod :: QuickCheckMaxRatio
-> QuickCheckMaxRatio -> (QuickCheckMaxRatio, QuickCheckMaxRatio)
divMod :: QuickCheckMaxRatio
-> QuickCheckMaxRatio -> (QuickCheckMaxRatio, QuickCheckMaxRatio)
$ctoInteger :: QuickCheckMaxRatio -> Integer
toInteger :: QuickCheckMaxRatio -> Integer
Integral)

testProperty :: (HasCallStack, Testable prop) => String -> prop -> Spec
testProperty :: forall prop.
(HasCallStack, Testable prop) =>
String -> prop -> Spec
testProperty = String -> prop -> Spec
forall prop.
(HasCallStack, Testable prop) =>
String -> prop -> Spec
prop