quickcheck-special-0.1.0.1: Edge cases and special values for QuickCheck Arbitrary instances

CopyrightDaniel Mendler (c) 2016
LicenseMIT (see the file LICENSE)
Maintainermail@daniel-mendler.de
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Test.QuickCheck.Special

Description

The standard Arbitrary instances don't generate special values. This is fixed by this package which provides the newtype Special with an Arbitrary instance. The special values are given by the SpecialValues typeclass.

Synopsis

Documentation

newtype Special a Source #

Additionally to the standard Arbitrary instances, this generates special values with a small probability.

Constructors

Special 

Fields

Instances

Functor Special Source # 

Methods

fmap :: (a -> b) -> Special a -> Special b #

(<$) :: a -> Special b -> Special a #

Bounded a => Bounded (Special a) Source # 
Enum a => Enum (Special a) Source # 

Methods

succ :: Special a -> Special a #

pred :: Special a -> Special a #

toEnum :: Int -> Special a #

fromEnum :: Special a -> Int #

enumFrom :: Special a -> [Special a] #

enumFromThen :: Special a -> Special a -> [Special a] #

enumFromTo :: Special a -> Special a -> [Special a] #

enumFromThenTo :: Special a -> Special a -> Special a -> [Special a] #

Eq a => Eq (Special a) Source # 

Methods

(==) :: Special a -> Special a -> Bool #

(/=) :: Special a -> Special a -> Bool #

Integral a => Integral (Special a) Source # 

Methods

quot :: Special a -> Special a -> Special a #

rem :: Special a -> Special a -> Special a #

div :: Special a -> Special a -> Special a #

mod :: Special a -> Special a -> Special a #

quotRem :: Special a -> Special a -> (Special a, Special a) #

divMod :: Special a -> Special a -> (Special a, Special a) #

toInteger :: Special a -> Integer #

Num a => Num (Special a) Source # 

Methods

(+) :: Special a -> Special a -> Special a #

(-) :: Special a -> Special a -> Special a #

(*) :: Special a -> Special a -> Special a #

negate :: Special a -> Special a #

abs :: Special a -> Special a #

signum :: Special a -> Special a #

fromInteger :: Integer -> Special a #

Ord a => Ord (Special a) Source # 

Methods

compare :: Special a -> Special a -> Ordering #

(<) :: Special a -> Special a -> Bool #

(<=) :: Special a -> Special a -> Bool #

(>) :: Special a -> Special a -> Bool #

(>=) :: Special a -> Special a -> Bool #

max :: Special a -> Special a -> Special a #

min :: Special a -> Special a -> Special a #

Read a => Read (Special a) Source # 
Real a => Real (Special a) Source # 

Methods

toRational :: Special a -> Rational #

Show a => Show (Special a) Source # 

Methods

showsPrec :: Int -> Special a -> ShowS #

show :: Special a -> String #

showList :: [Special a] -> ShowS #

(Arbitrary a, SpecialValues a) => Arbitrary (Special a) Source # 

Methods

arbitrary :: Gen (Special a) #

shrink :: Special a -> [Special a] #

CoArbitrary a => CoArbitrary (Special a) Source # 

Methods

coarbitrary :: Special a -> Gen b -> Gen b #

class SpecialValues a where Source #

Provides a list of special values or edge cases

Minimal complete definition

specialValues

Methods

specialValues :: [a] Source #

Finite list of special values

Instances

SpecialValues Bool Source # 
SpecialValues Char Source # 
SpecialValues Double Source # 
SpecialValues Float Source # 
SpecialValues Int Source # 
SpecialValues Int8 Source # 
SpecialValues Int16 Source # 
SpecialValues Int32 Source # 
SpecialValues Int64 Source # 
SpecialValues Integer Source # 
SpecialValues Word Source # 
SpecialValues Word8 Source # 
SpecialValues Word16 Source # 
SpecialValues Word32 Source # 
SpecialValues Word64 Source # 
SpecialValues Natural Source # 
SpecialValues ByteString Source # 
SpecialValues ByteString Source # 
SpecialValues Scientific Source # 
SpecialValues Text Source # 
SpecialValues Text Source # 
SpecialValues a => SpecialValues [a] Source # 

Methods

specialValues :: [[a]] Source #

SpecialValues a => SpecialValues (Maybe a) Source # 

Methods

specialValues :: [Maybe a] Source #

(SpecialValues a, SpecialValues b) => SpecialValues (Either a b) Source # 

Methods

specialValues :: [Either a b] Source #

(SpecialValues a, SpecialValues b) => SpecialValues (a, b) Source # 

Methods

specialValues :: [(a, b)] Source #