Test.QuickCheck.Modifiers

QuickCheck-2.8.2: Automatic testing of Haskell programs

Safe Haskell | Trustworthy
Language | Haskell98

Test.QuickCheck.Modifiers

Contents

- Type-level modifiers for changing generator behavior

Description

Modifiers for test data.

These types do things such as restricting the kind of test data that can be generated. They can be pattern-matched on in properties as a stylistic alternative to using explicit quantification.

Examples:

    -- Functions cannot be shown (but see Test.QuickCheck.Function)
    prop_TakeDropWhile (Blind p) (xs :: [A]) =
      takeWhile p xs ++ dropWhile p xs == xs

    prop_TakeDrop (NonNegative n) (xs :: [A]) =
      take n xs ++ drop n xs == xs

    -- cycle does not work for empty lists
    prop_Cycle (NonNegative n) (NonEmpty (xs :: [A])) =
      take n (cycle xs) == take n (xs ++ cycle xs)

    -- Instead of forAll orderedList
    prop_Sort (Ordered (xs :: [OrdA])) =
      sort xs == xs

Synopsis

- newtype Blind a = Blind {
  - getBlind :: a
  }
- newtype Fixed a = Fixed {
  - getFixed :: a
  }
- newtype OrderedList a = Ordered {
  - getOrdered :: [a]
  }
- newtype NonEmptyList a = NonEmpty {
  - getNonEmpty :: [a]
  }
- newtype Positive a = Positive {
  - getPositive :: a
  }
- newtype NonZero a = NonZero {
  - getNonZero :: a
  }
- newtype NonNegative a = NonNegative {
  - getNonNegative :: a
  }
- newtype Large a = Large {
  - getLarge :: a
  }
- newtype Small a = Small {
  - getSmall :: a
  }
- data Smart a = Smart Int a
- newtype Shrink2 a = Shrink2 {
  - getShrink2 :: a
  }
- data Shrinking s a = Shrinking s a
- class ShrinkState s a where
  - shrinkInit :: a -> s
  - shrinkState :: a -> s -> [(a, s)]

## Type-level modifiers for changing generator behavior

newtype Blind a #

`Blind x`: as x, but x does not have to be in the `Show` class.

Constructors

Blind |
Fields getBlind :: a

Instances

Functor Blind # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> Blind a -> Blind b # (<$) :: a -> Blind b -> Blind a #
Enum a => Enum (Blind a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods succ :: Blind a -> Blind a # pred :: Blind a -> Blind a # toEnum :: Int -> Blind a # fromEnum :: Blind a -> Int # enumFrom :: Blind a -> [Blind a] # enumFromThen :: Blind a -> Blind a -> [Blind a] # enumFromTo :: Blind a -> Blind a -> [Blind a] # enumFromThenTo :: Blind a -> Blind a -> Blind a -> [Blind a] #
Eq a => Eq (Blind a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: Blind a -> Blind a -> Bool # (/=) :: Blind a -> Blind a -> Bool #
Integral a => Integral (Blind a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods quot :: Blind a -> Blind a -> Blind a # rem :: Blind a -> Blind a -> Blind a # div :: Blind a -> Blind a -> Blind a # mod :: Blind a -> Blind a -> Blind a # quotRem :: Blind a -> Blind a -> (Blind a, Blind a) # divMod :: Blind a -> Blind a -> (Blind a, Blind a) # toInteger :: Blind a -> Integer #
Num a => Num (Blind a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (+) :: Blind a -> Blind a -> Blind a # (-) :: Blind a -> Blind a -> Blind a # (*) :: Blind a -> Blind a -> Blind a # negate :: Blind a -> Blind a # abs :: Blind a -> Blind a # signum :: Blind a -> Blind a # fromInteger :: Integer -> Blind a #
Ord a => Ord (Blind a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: Blind a -> Blind a -> Ordering # (<) :: Blind a -> Blind a -> Bool # (<=) :: Blind a -> Blind a -> Bool # (>) :: Blind a -> Blind a -> Bool # (>=) :: Blind a -> Blind a -> Bool # max :: Blind a -> Blind a -> Blind a # min :: Blind a -> Blind a -> Blind a #
Real a => Real (Blind a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods toRational :: Blind a -> Rational #
Show (Blind a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> Blind a -> ShowS # show :: Blind a -> String # showList :: [Blind a] -> ShowS #
Arbitrary a => Arbitrary (Blind a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (Blind a) # shrink :: Blind a -> [Blind a] #

newtype Fixed a #

`Fixed x`: as x, but will not be shrunk.

Constructors

Fixed |
Fields getFixed :: a

Instances

Functor Fixed # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> Fixed a -> Fixed b # (<$) :: a -> Fixed b -> Fixed a #
Enum a => Enum (Fixed a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods succ :: Fixed a -> Fixed a # pred :: Fixed a -> Fixed a # toEnum :: Int -> Fixed a # fromEnum :: Fixed a -> Int # enumFrom :: Fixed a -> [Fixed a] # enumFromThen :: Fixed a -> Fixed a -> [Fixed a] # enumFromTo :: Fixed a -> Fixed a -> [Fixed a] # enumFromThenTo :: Fixed a -> Fixed a -> Fixed a -> [Fixed a] #
Eq a => Eq (Fixed a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: Fixed a -> Fixed a -> Bool # (/=) :: Fixed a -> Fixed a -> Bool #
Integral a => Integral (Fixed a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods quot :: Fixed a -> Fixed a -> Fixed a # rem :: Fixed a -> Fixed a -> Fixed a # div :: Fixed a -> Fixed a -> Fixed a # mod :: Fixed a -> Fixed a -> Fixed a # quotRem :: Fixed a -> Fixed a -> (Fixed a, Fixed a) # divMod :: Fixed a -> Fixed a -> (Fixed a, Fixed a) # toInteger :: Fixed a -> Integer #
Num a => Num (Fixed a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (+) :: Fixed a -> Fixed a -> Fixed a # (-) :: Fixed a -> Fixed a -> Fixed a # (*) :: Fixed a -> Fixed a -> Fixed a # negate :: Fixed a -> Fixed a # abs :: Fixed a -> Fixed a # signum :: Fixed a -> Fixed a # fromInteger :: Integer -> Fixed a #
Ord a => Ord (Fixed a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: Fixed a -> Fixed a -> Ordering # (<) :: Fixed a -> Fixed a -> Bool # (<=) :: Fixed a -> Fixed a -> Bool # (>) :: Fixed a -> Fixed a -> Bool # (>=) :: Fixed a -> Fixed a -> Bool # max :: Fixed a -> Fixed a -> Fixed a # min :: Fixed a -> Fixed a -> Fixed a #
Read a => Read (Fixed a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods readsPrec :: Int -> ReadS (Fixed a) # readList :: ReadS [Fixed a] # readPrec :: ReadPrec (Fixed a) # readListPrec :: ReadPrec [Fixed a] #
Real a => Real (Fixed a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods toRational :: Fixed a -> Rational #
Show a => Show (Fixed a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> Fixed a -> ShowS # show :: Fixed a -> String # showList :: [Fixed a] -> ShowS #
Arbitrary a => Arbitrary (Fixed a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (Fixed a) # shrink :: Fixed a -> [Fixed a] #

newtype OrderedList a #

`Ordered xs`: guarantees that xs is ordered.

Constructors

Ordered |
Fields getOrdered :: [a]

Instances

Functor OrderedList # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> OrderedList a -> OrderedList b # (<$) :: a -> OrderedList b -> OrderedList a #
Eq a => Eq (OrderedList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: OrderedList a -> OrderedList a -> Bool # (/=) :: OrderedList a -> OrderedList a -> Bool #
Ord a => Ord (OrderedList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: OrderedList a -> OrderedList a -> Ordering # (<) :: OrderedList a -> OrderedList a -> Bool # (<=) :: OrderedList a -> OrderedList a -> Bool # (>) :: OrderedList a -> OrderedList a -> Bool # (>=) :: OrderedList a -> OrderedList a -> Bool # max :: OrderedList a -> OrderedList a -> OrderedList a # min :: OrderedList a -> OrderedList a -> OrderedList a #
Read a => Read (OrderedList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods readsPrec :: Int -> ReadS (OrderedList a) # readList :: ReadS [OrderedList a] # readPrec :: ReadPrec (OrderedList a) # readListPrec :: ReadPrec [OrderedList a] #
Show a => Show (OrderedList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> OrderedList a -> ShowS # show :: OrderedList a -> String # showList :: [OrderedList a] -> ShowS #
(Ord a, Arbitrary a) => Arbitrary (OrderedList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (OrderedList a) # shrink :: OrderedList a -> [OrderedList a] #

newtype NonEmptyList a #

`NonEmpty xs`: guarantees that xs is non-empty.

Constructors

NonEmpty |
Fields getNonEmpty :: [a]

Instances

Functor NonEmptyList # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> NonEmptyList a -> NonEmptyList b # (<$) :: a -> NonEmptyList b -> NonEmptyList a #
Eq a => Eq (NonEmptyList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: NonEmptyList a -> NonEmptyList a -> Bool # (/=) :: NonEmptyList a -> NonEmptyList a -> Bool #
Ord a => Ord (NonEmptyList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: NonEmptyList a -> NonEmptyList a -> Ordering # (<) :: NonEmptyList a -> NonEmptyList a -> Bool # (<=) :: NonEmptyList a -> NonEmptyList a -> Bool # (>) :: NonEmptyList a -> NonEmptyList a -> Bool # (>=) :: NonEmptyList a -> NonEmptyList a -> Bool # max :: NonEmptyList a -> NonEmptyList a -> NonEmptyList a # min :: NonEmptyList a -> NonEmptyList a -> NonEmptyList a #
Read a => Read (NonEmptyList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods readsPrec :: Int -> ReadS (NonEmptyList a) # readList :: ReadS [NonEmptyList a] # readPrec :: ReadPrec (NonEmptyList a) # readListPrec :: ReadPrec [NonEmptyList a] #
Show a => Show (NonEmptyList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> NonEmptyList a -> ShowS # show :: NonEmptyList a -> String # showList :: [NonEmptyList a] -> ShowS #
Arbitrary a => Arbitrary (NonEmptyList a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (NonEmptyList a) # shrink :: NonEmptyList a -> [NonEmptyList a] #

newtype Positive a #

`Positive x`: guarantees that `x > 0`.

Constructors

Positive |
Fields getPositive :: a

Instances

Functor Positive # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> Positive a -> Positive b # (<$) :: a -> Positive b -> Positive a #
Enum a => Enum (Positive a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods succ :: Positive a -> Positive a # pred :: Positive a -> Positive a # toEnum :: Int -> Positive a # fromEnum :: Positive a -> Int # enumFrom :: Positive a -> [Positive a] # enumFromThen :: Positive a -> Positive a -> [Positive a] # enumFromTo :: Positive a -> Positive a -> [Positive a] # enumFromThenTo :: Positive a -> Positive a -> Positive a -> [Positive a] #
Eq a => Eq (Positive a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: Positive a -> Positive a -> Bool # (/=) :: Positive a -> Positive a -> Bool #
Ord a => Ord (Positive a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: Positive a -> Positive a -> Ordering # (<) :: Positive a -> Positive a -> Bool # (<=) :: Positive a -> Positive a -> Bool # (>) :: Positive a -> Positive a -> Bool # (>=) :: Positive a -> Positive a -> Bool # max :: Positive a -> Positive a -> Positive a # min :: Positive a -> Positive a -> Positive a #
Read a => Read (Positive a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods readsPrec :: Int -> ReadS (Positive a) # readList :: ReadS [Positive a] # readPrec :: ReadPrec (Positive a) # readListPrec :: ReadPrec [Positive a] #
Show a => Show (Positive a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> Positive a -> ShowS # show :: Positive a -> String # showList :: [Positive a] -> ShowS #
(Num a, Ord a, Arbitrary a) => Arbitrary (Positive a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (Positive a) # shrink :: Positive a -> [Positive a] #

newtype NonZero a #

`NonZero x`: guarantees that `x /= 0`.

Constructors

NonZero |
Fields getNonZero :: a

Instances

Functor NonZero # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> NonZero a -> NonZero b # (<$) :: a -> NonZero b -> NonZero a #
Enum a => Enum (NonZero a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods succ :: NonZero a -> NonZero a # pred :: NonZero a -> NonZero a # toEnum :: Int -> NonZero a # fromEnum :: NonZero a -> Int # enumFrom :: NonZero a -> [NonZero a] # enumFromThen :: NonZero a -> NonZero a -> [NonZero a] # enumFromTo :: NonZero a -> NonZero a -> [NonZero a] # enumFromThenTo :: NonZero a -> NonZero a -> NonZero a -> [NonZero a] #
Eq a => Eq (NonZero a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: NonZero a -> NonZero a -> Bool # (/=) :: NonZero a -> NonZero a -> Bool #
Ord a => Ord (NonZero a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: NonZero a -> NonZero a -> Ordering # (<) :: NonZero a -> NonZero a -> Bool # (<=) :: NonZero a -> NonZero a -> Bool # (>) :: NonZero a -> NonZero a -> Bool # (>=) :: NonZero a -> NonZero a -> Bool # max :: NonZero a -> NonZero a -> NonZero a # min :: NonZero a -> NonZero a -> NonZero a #
Read a => Read (NonZero a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods readsPrec :: Int -> ReadS (NonZero a) # readList :: ReadS [NonZero a] # readPrec :: ReadPrec (NonZero a) # readListPrec :: ReadPrec [NonZero a] #
Show a => Show (NonZero a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> NonZero a -> ShowS # show :: NonZero a -> String # showList :: [NonZero a] -> ShowS #
(Num a, Eq a, Arbitrary a) => Arbitrary (NonZero a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (NonZero a) # shrink :: NonZero a -> [NonZero a] #

newtype NonNegative a #

`NonNegative x`: guarantees that `x >= 0`.

Constructors

NonNegative |
Fields getNonNegative :: a

Instances

Functor NonNegative # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> NonNegative a -> NonNegative b # (<$) :: a -> NonNegative b -> NonNegative a #
Enum a => Enum (NonNegative a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods succ :: NonNegative a -> NonNegative a # pred :: NonNegative a -> NonNegative a # toEnum :: Int -> NonNegative a # fromEnum :: NonNegative a -> Int # enumFrom :: NonNegative a -> [NonNegative a] # enumFromThen :: NonNegative a -> NonNegative a -> [NonNegative a] # enumFromTo :: NonNegative a -> NonNegative a -> [NonNegative a] # enumFromThenTo :: NonNegative a -> NonNegative a -> NonNegative a -> [NonNegative a] #
Eq a => Eq (NonNegative a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: NonNegative a -> NonNegative a -> Bool # (/=) :: NonNegative a -> NonNegative a -> Bool #
Ord a => Ord (NonNegative a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: NonNegative a -> NonNegative a -> Ordering # (<) :: NonNegative a -> NonNegative a -> Bool # (<=) :: NonNegative a -> NonNegative a -> Bool # (>) :: NonNegative a -> NonNegative a -> Bool # (>=) :: NonNegative a -> NonNegative a -> Bool # max :: NonNegative a -> NonNegative a -> NonNegative a # min :: NonNegative a -> NonNegative a -> NonNegative a #
Read a => Read (NonNegative a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods readsPrec :: Int -> ReadS (NonNegative a) # readList :: ReadS [NonNegative a] # readPrec :: ReadPrec (NonNegative a) # readListPrec :: ReadPrec [NonNegative a] #
Show a => Show (NonNegative a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> NonNegative a -> ShowS # show :: NonNegative a -> String # showList :: [NonNegative a] -> ShowS #
(Num a, Ord a, Arbitrary a) => Arbitrary (NonNegative a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (NonNegative a) # shrink :: NonNegative a -> [NonNegative a] #

newtype Large a #

`Large x`: by default, QuickCheck generates `Int`s drawn from a small range. `Large Int` gives you values drawn from the entire range instead.

Constructors

Large |
Fields getLarge :: a

Instances

Functor Large # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> Large a -> Large b # (<$) :: a -> Large b -> Large a #
Enum a => Enum (Large a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods succ :: Large a -> Large a # pred :: Large a -> Large a # toEnum :: Int -> Large a # fromEnum :: Large a -> Int # enumFrom :: Large a -> [Large a] # enumFromThen :: Large a -> Large a -> [Large a] # enumFromTo :: Large a -> Large a -> [Large a] # enumFromThenTo :: Large a -> Large a -> Large a -> [Large a] #
Eq a => Eq (Large a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: Large a -> Large a -> Bool # (/=) :: Large a -> Large a -> Bool #
Integral a => Integral (Large a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods quot :: Large a -> Large a -> Large a # rem :: Large a -> Large a -> Large a # div :: Large a -> Large a -> Large a # mod :: Large a -> Large a -> Large a # quotRem :: Large a -> Large a -> (Large a, Large a) # divMod :: Large a -> Large a -> (Large a, Large a) # toInteger :: Large a -> Integer #
Num a => Num (Large a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (+) :: Large a -> Large a -> Large a # (-) :: Large a -> Large a -> Large a # (*) :: Large a -> Large a -> Large a # negate :: Large a -> Large a # abs :: Large a -> Large a # signum :: Large a -> Large a # fromInteger :: Integer -> Large a #
Ord a => Ord (Large a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: Large a -> Large a -> Ordering # (<) :: Large a -> Large a -> Bool # (<=) :: Large a -> Large a -> Bool # (>) :: Large a -> Large a -> Bool # (>=) :: Large a -> Large a -> Bool # max :: Large a -> Large a -> Large a # min :: Large a -> Large a -> Large a #
Read a => Read (Large a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods readsPrec :: Int -> ReadS (Large a) # readList :: ReadS [Large a] # readPrec :: ReadPrec (Large a) # readListPrec :: ReadPrec [Large a] #
Real a => Real (Large a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods toRational :: Large a -> Rational #
Show a => Show (Large a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> Large a -> ShowS # show :: Large a -> String # showList :: [Large a] -> ShowS #
(Integral a, Bounded a) => Arbitrary (Large a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (Large a) # shrink :: Large a -> [Large a] #

newtype Small a #

`Small x`: generates values of `x` drawn from a small range. The opposite of `Large`.

Constructors

Small |
Fields getSmall :: a

Instances

Functor Small # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> Small a -> Small b # (<$) :: a -> Small b -> Small a #
Enum a => Enum (Small a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods succ :: Small a -> Small a # pred :: Small a -> Small a # toEnum :: Int -> Small a # fromEnum :: Small a -> Int # enumFrom :: Small a -> [Small a] # enumFromThen :: Small a -> Small a -> [Small a] # enumFromTo :: Small a -> Small a -> [Small a] # enumFromThenTo :: Small a -> Small a -> Small a -> [Small a] #
Eq a => Eq (Small a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: Small a -> Small a -> Bool # (/=) :: Small a -> Small a -> Bool #
Integral a => Integral (Small a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods quot :: Small a -> Small a -> Small a # rem :: Small a -> Small a -> Small a # div :: Small a -> Small a -> Small a # mod :: Small a -> Small a -> Small a # quotRem :: Small a -> Small a -> (Small a, Small a) # divMod :: Small a -> Small a -> (Small a, Small a) # toInteger :: Small a -> Integer #
Num a => Num (Small a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (+) :: Small a -> Small a -> Small a # (-) :: Small a -> Small a -> Small a # (*) :: Small a -> Small a -> Small a # negate :: Small a -> Small a # abs :: Small a -> Small a # signum :: Small a -> Small a # fromInteger :: Integer -> Small a #
Ord a => Ord (Small a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: Small a -> Small a -> Ordering # (<) :: Small a -> Small a -> Bool # (<=) :: Small a -> Small a -> Bool # (>) :: Small a -> Small a -> Bool # (>=) :: Small a -> Small a -> Bool # max :: Small a -> Small a -> Small a # min :: Small a -> Small a -> Small a #
Read a => Read (Small a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods readsPrec :: Int -> ReadS (Small a) # readList :: ReadS [Small a] # readPrec :: ReadPrec (Small a) # readListPrec :: ReadPrec [Small a] #
Real a => Real (Small a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods toRational :: Small a -> Rational #
Show a => Show (Small a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> Small a -> ShowS # show :: Small a -> String # showList :: [Small a] -> ShowS #
Integral a => Arbitrary (Small a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (Small a) # shrink :: Small a -> [Small a] #

data Smart a #

`Smart _ x`: tries a different order when shrinking.

Constructors

Smart Int a |

Instances

Functor Smart # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> Smart a -> Smart b # (<$) :: a -> Smart b -> Smart a #
Show a => Show (Smart a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> Smart a -> ShowS # show :: Smart a -> String # showList :: [Smart a] -> ShowS #
Arbitrary a => Arbitrary (Smart a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (Smart a) # shrink :: Smart a -> [Smart a] #

newtype Shrink2 a #

`Shrink2 x`: allows 2 shrinking steps at the same time when shrinking x

Constructors

Shrink2 |
Fields getShrink2 :: a

Instances

Functor Shrink2 # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> Shrink2 a -> Shrink2 b # (<$) :: a -> Shrink2 b -> Shrink2 a #
Enum a => Enum (Shrink2 a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods succ :: Shrink2 a -> Shrink2 a # pred :: Shrink2 a -> Shrink2 a # toEnum :: Int -> Shrink2 a # fromEnum :: Shrink2 a -> Int # enumFrom :: Shrink2 a -> [Shrink2 a] # enumFromThen :: Shrink2 a -> Shrink2 a -> [Shrink2 a] # enumFromTo :: Shrink2 a -> Shrink2 a -> [Shrink2 a] # enumFromThenTo :: Shrink2 a -> Shrink2 a -> Shrink2 a -> [Shrink2 a] #
Eq a => Eq (Shrink2 a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (==) :: Shrink2 a -> Shrink2 a -> Bool # (/=) :: Shrink2 a -> Shrink2 a -> Bool #
Integral a => Integral (Shrink2 a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods quot :: Shrink2 a -> Shrink2 a -> Shrink2 a # rem :: Shrink2 a -> Shrink2 a -> Shrink2 a # div :: Shrink2 a -> Shrink2 a -> Shrink2 a # mod :: Shrink2 a -> Shrink2 a -> Shrink2 a # quotRem :: Shrink2 a -> Shrink2 a -> (Shrink2 a, Shrink2 a) # divMod :: Shrink2 a -> Shrink2 a -> (Shrink2 a, Shrink2 a) # toInteger :: Shrink2 a -> Integer #
Num a => Num (Shrink2 a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods (+) :: Shrink2 a -> Shrink2 a -> Shrink2 a # (-) :: Shrink2 a -> Shrink2 a -> Shrink2 a # (*) :: Shrink2 a -> Shrink2 a -> Shrink2 a # negate :: Shrink2 a -> Shrink2 a # abs :: Shrink2 a -> Shrink2 a # signum :: Shrink2 a -> Shrink2 a # fromInteger :: Integer -> Shrink2 a #
Ord a => Ord (Shrink2 a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods compare :: Shrink2 a -> Shrink2 a -> Ordering # (<) :: Shrink2 a -> Shrink2 a -> Bool # (<=) :: Shrink2 a -> Shrink2 a -> Bool # (>) :: Shrink2 a -> Shrink2 a -> Bool # (>=) :: Shrink2 a -> Shrink2 a -> Bool # max :: Shrink2 a -> Shrink2 a -> Shrink2 a # min :: Shrink2 a -> Shrink2 a -> Shrink2 a #
Read a => Read (Shrink2 a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods readsPrec :: Int -> ReadS (Shrink2 a) # readList :: ReadS [Shrink2 a] # readPrec :: ReadPrec (Shrink2 a) # readListPrec :: ReadPrec [Shrink2 a] #
Real a => Real (Shrink2 a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods toRational :: Shrink2 a -> Rational #
Show a => Show (Shrink2 a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> Shrink2 a -> ShowS # show :: Shrink2 a -> String # showList :: [Shrink2 a] -> ShowS #
Arbitrary a => Arbitrary (Shrink2 a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (Shrink2 a) # shrink :: Shrink2 a -> [Shrink2 a] #

data Shrinking s a #

`Shrinking _ x`: allows for maintaining a state during shrinking.

Constructors

Shrinking s a |

Instances

Functor (Shrinking s) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods fmap :: (a -> b) -> Shrinking s a -> Shrinking s b # (<$) :: a -> Shrinking s b -> Shrinking s a #
Show a => Show (Shrinking s a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods showsPrec :: Int -> Shrinking s a -> ShowS # show :: Shrinking s a -> String # showList :: [Shrinking s a] -> ShowS #
(Arbitrary a, ShrinkState s a) => Arbitrary (Shrinking s a) # |
Instance details Defined in Test.QuickCheck.Modifiers Methods arbitrary :: Gen (Shrinking s a) # shrink :: Shrinking s a -> [Shrinking s a] #

class ShrinkState s a where #

Methods

shrinkInit :: a -> s #

shrinkState :: a -> s -> [(a, s)] #