-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Standard spec's for GenValidity instances -- -- Please see README.md @package genvalidity-hspec @version 0.2.0.5 module Test.Validity.Types -- | A class of types that are the result of functions that can fail class CanFail f hasFailed :: CanFail f => f a -> Bool resultIfSucceeded :: CanFail f => f a -> Maybe a instance Test.Validity.Types.CanFail GHC.Base.Maybe instance Test.Validity.Types.CanFail (Data.Either.Either e) module Test.Validity.RelativeValidity -- | A Spec that specifies that isValidFor implies -- isValid -- -- In general it is a good idea to add this spec to your test suite if -- the a and b in RelativeValidity a b also -- have a Validity instance. -- -- Example usage: -- --
--   relativeValiditySpec
--       (Proxy :: Proxy MyDataFor)
--       (Proxy :: Proxy MyOtherData)
--   
relativeValiditySpec :: (Typeable a, Typeable b, Show a, Show b, GenValidity a, GenValidity b, GenRelativeValidity a b) => Proxy a -> Proxy b -> Spec -- | isValidFor a b implies isValid a for all b relativeValidityImpliesValidA :: (Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b) => Proxy a -> Proxy b -> Property -- | isValidFor a b implies isValid b for all a relativeValidityImpliesValidB :: (Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b) => Proxy a -> Proxy b -> Property module Test.Validity.Relations.Transitivity -- | <math> transitiveOnElems :: (a -> a -> Bool) -> a -> a -> a -> Bool transitivityOnGens :: Show a => (a -> a -> Bool) -> Gen (a, a, a) -> Property transitivityOnValid :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property transitivity :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   transitivityOnArbitrary ((==) :: Int -> Int -> Bool)
--   
transitivityOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property module Test.Validity.Relations.Symmetry -- | <math> symmetricOnElems :: (a -> a -> Bool) -> a -> a -> Bool symmetryOnGens :: Show a => (a -> a -> Bool) -> Gen (a, a) -> Property symmetryOnValid :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property symmetry :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   symmetryOnArbitrary ((==) :: Int -> Int -> Bool)
--   
symmetryOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property module Test.Validity.Relations.Reflexivity -- | <math> reflexiveOnElem :: (a -> a -> Bool) -> a -> Bool reflexivityOnGen :: Show a => (a -> a -> Bool) -> Gen a -> Property reflexivityOnValid :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property reflexivity :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   reflexivityOnArbitrary ((==) :: Int -> Int -> Bool)
--   
reflexivityOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property module Test.Validity.Relations.Antisymmetry -- | <math> antisymmetricOnElemsWithEquality :: (a -> a -> Bool) -> (a -> a -> Bool) -> a -> a -> Bool antisymmetryOnGensWithEquality :: Show a => (a -> a -> Bool) -> Gen (a, a) -> (a -> a -> Bool) -> Property antisymmetryOnGensEq :: (Show a, Eq a) => (a -> a -> Bool) -> Gen (a, a) -> Property antisymmetryOnValid :: (Show a, Eq a, GenValidity a) => (a -> a -> Bool) -> Property antisymmetry :: (Show a, Eq a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   antisymmetryOnArbitrary ((<=) :: Int -> Int -> Bool)
--   
antisymmetryOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> Bool) -> Property module Test.Validity.Relations -- | <math> reflexiveOnElem :: (a -> a -> Bool) -> a -> Bool reflexivityOnGen :: Show a => (a -> a -> Bool) -> Gen a -> Property reflexivityOnValid :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property reflexivity :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   reflexivityOnArbitrary ((==) :: Int -> Int -> Bool)
--   
reflexivityOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property -- | <math> transitiveOnElems :: (a -> a -> Bool) -> a -> a -> a -> Bool transitivityOnGens :: Show a => (a -> a -> Bool) -> Gen (a, a, a) -> Property transitivityOnValid :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property transitivity :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   transitivityOnArbitrary ((==) :: Int -> Int -> Bool)
--   
transitivityOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property -- | <math> antisymmetricOnElemsWithEquality :: (a -> a -> Bool) -> (a -> a -> Bool) -> a -> a -> Bool antisymmetryOnGensWithEquality :: Show a => (a -> a -> Bool) -> Gen (a, a) -> (a -> a -> Bool) -> Property antisymmetryOnGensEq :: (Show a, Eq a) => (a -> a -> Bool) -> Gen (a, a) -> Property antisymmetryOnValid :: (Show a, Eq a, GenValidity a) => (a -> a -> Bool) -> Property antisymmetry :: (Show a, Eq a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   antisymmetryOnArbitrary ((<=) :: Int -> Int -> Bool)
--   
antisymmetryOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> Bool) -> Property -- | <math> symmetricOnElems :: (a -> a -> Bool) -> a -> a -> Bool symmetryOnGens :: Show a => (a -> a -> Bool) -> Gen (a, a) -> Property symmetryOnValid :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property symmetry :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   symmetryOnArbitrary ((==) :: Int -> Int -> Bool)
--   
symmetryOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property module Test.Validity.Ord ordSpec :: (Show a, Eq a, Ord a, Typeable a, GenValidity a) => Proxy a -> Spec module Test.Validity.Operations.Identity -- | <math> leftIdentityOnElemWithEquality :: (b -> a -> a) -> (a -> a -> Bool) -> b -> a -> Bool leftIdentityOnGenWithEquality :: Show a => (b -> a -> a) -> (a -> a -> Bool) -> b -> Gen a -> Property leftIdentityOnGen :: (Show a, Eq a) => (b -> a -> a) -> b -> Gen a -> Property leftIdentityOnValid :: (Show a, Eq a, GenValidity a) => (b -> a -> a) -> b -> Property leftIdentity :: (Show a, Eq a, GenValidity a) => (b -> a -> a) -> b -> Property -- | <math> rightIdentityOnElemWithEquality :: (a -> b -> a) -> (a -> a -> Bool) -> b -> a -> Bool rightIdentityOnGenWithEquality :: Show a => (a -> b -> a) -> (a -> a -> Bool) -> b -> Gen a -> Property rightIdentityOnGen :: (Show a, Eq a) => (a -> b -> a) -> b -> Gen a -> Property rightIdentityOnValid :: (Show a, Eq a, GenValidity a) => (a -> b -> a) -> b -> Property rightIdentity :: (Show a, Eq a, GenValidity a) => (a -> b -> a) -> b -> Property identityOnGen :: (Show a, Eq a) => (a -> a -> a) -> a -> Gen a -> Property identityOnValid :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> a -> Property identity :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> a -> Property module Test.Validity.Operations.Commutativity commutativeOnGens :: (Show a, Eq a) => (a -> a -> a) -> Gen (a, a) -> Property commutativeOnValids :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property commutative :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property commutativeOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> a) -> Property module Test.Validity.Operations.Associativity associativeOnGens :: (Show a, Eq a) => (a -> a -> a) -> Gen (a, a, a) -> Property associativeOnValids :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property associative :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property associativeOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> a) -> Property module Test.Validity.Operations -- | <math> leftIdentityOnElemWithEquality :: (b -> a -> a) -> (a -> a -> Bool) -> b -> a -> Bool leftIdentityOnGenWithEquality :: Show a => (b -> a -> a) -> (a -> a -> Bool) -> b -> Gen a -> Property leftIdentityOnGen :: (Show a, Eq a) => (b -> a -> a) -> b -> Gen a -> Property leftIdentityOnValid :: (Show a, Eq a, GenValidity a) => (b -> a -> a) -> b -> Property leftIdentity :: (Show a, Eq a, GenValidity a) => (b -> a -> a) -> b -> Property -- | <math> rightIdentityOnElemWithEquality :: (a -> b -> a) -> (a -> a -> Bool) -> b -> a -> Bool rightIdentityOnGenWithEquality :: Show a => (a -> b -> a) -> (a -> a -> Bool) -> b -> Gen a -> Property rightIdentityOnGen :: (Show a, Eq a) => (a -> b -> a) -> b -> Gen a -> Property rightIdentityOnValid :: (Show a, Eq a, GenValidity a) => (a -> b -> a) -> b -> Property rightIdentity :: (Show a, Eq a, GenValidity a) => (a -> b -> a) -> b -> Property identityOnGen :: (Show a, Eq a) => (a -> a -> a) -> a -> Gen a -> Property identityOnValid :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> a -> Property identity :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> a -> Property associativeOnGens :: (Show a, Eq a) => (a -> a -> a) -> Gen (a, a, a) -> Property associativeOnValids :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property associative :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property associativeOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> a) -> Property commutativeOnGens :: (Show a, Eq a) => (a -> a -> a) -> Gen (a, a) -> Property commutativeOnValids :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property commutative :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property commutativeOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> a) -> Property module Test.Validity.GenValidity -- | A Spec that specifies that genValid only generates -- valid data and that genInvalid only generates invalid data. -- -- In general it is a good idea to add this spec to your test suite if -- you write a custom implementation of genValid or -- genInvalid. -- -- Example usage: -- --
--   genValiditySpec (Proxy :: Proxy MyData)
--   
genValiditySpec :: (Typeable a, Show a, GenValidity a) => Proxy a -> Spec -- | genValid only generates valid data genValidityValidGeneratesValid :: forall a. (Show a, GenValidity a) => Proxy a -> Property -- | The given generator generates only valid data points genGeneratesValid :: (Show a, Validity a) => Gen a -> Property -- | genValid only generates invalid data genValidityInvalidGeneratesInvalid :: forall a. (Show a, GenValidity a) => Proxy a -> Property -- | The given generator generates only invalid data points genGeneratesInvalid :: (Show a, Validity a) => Gen a -> Property module Test.Validity.GenRelativeValidity -- | A Spec that specifies that genValidFor and -- genInvalidFor work as intended. -- -- In general it is a good idea to add this spec to your test suite if -- you write a custom implementation of genValidFor or -- genInvalidFor. -- -- Example usage: -- --
--   relativeGenValiditySpec (proxy :: MyDataFor) (proxy :: MyOtherData)
--   
genRelativeValiditySpec :: (Typeable a, Typeable b, Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b, GenRelativeValidity a b) => Proxy a -> Proxy b -> Spec -- | genValidFor b only generates values that satisfy -- isValidFor b genRelativeValidityValidGeneratesValid :: (Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b, GenRelativeValidity a b) => Proxy a -> Proxy b -> Property -- | genInvalidFor b only generates values that do not satisfy -- isValidFor b genRelativeValidityInvalidGeneratesInvalid :: (Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b, GenRelativeValidity a b) => Proxy a -> Proxy b -> Property module Test.Validity.Functions.Validity -- | The function produces valid output when the input is generated as -- specified by the given generator. producesValidsOnGen :: (Show a, Show b, Validity b) => (a -> b) -> Gen a -> Property -- | The function produces valid output when the input is generated by -- genValid producesValidsOnValids :: (Show a, Show b, GenValidity a, Validity b) => (a -> b) -> Property -- | The function produces valid output when the input is generated by -- genUnchecked producesValid :: (Show a, Show b, GenValidity a, Validity b) => (a -> b) -> Property -- | The function produces valid output when the input is generated by -- arbitrary producesValidsOnArbitrary :: (Show a, Show b, Arbitrary a, Validity b) => (a -> b) -> Property producesValidsOnGens2 :: (Show a, Show b, Show c, Validity c) => (a -> b -> c) -> Gen (a, b) -> Property producesValidsOnValids2 :: (Show a, Show b, Show c, GenValidity a, GenValidity b, Validity c) => (a -> b -> c) -> Property producesValid2 :: (Show a, Show b, Show c, GenValidity a, GenValidity b, Validity c) => (a -> b -> c) -> Property producesValidsOnArbitrary2 :: (Show a, Show b, Show c, Arbitrary a, Arbitrary b, Validity c) => (a -> b -> c) -> Property producesValidsOnGens3 :: (Show a, Show b, Show c, Show d, Validity d) => (a -> b -> c -> d) -> Gen (a, b, c) -> Property producesValidsOnValids3 :: (Show a, Show b, Show c, Show d, GenValidity a, GenValidity b, GenValidity c, Validity d) => (a -> b -> c -> d) -> Property producesValid3 :: (Show a, Show b, Show c, Show d, GenValidity a, GenValidity b, GenValidity c, Validity d) => (a -> b -> c -> d) -> Property producesValidsOnArbitrary3 :: (Show a, Show b, Show c, Show d, Arbitrary a, Arbitrary b, Arbitrary c, Validity d) => (a -> b -> c -> d) -> Property module Test.Validity.Functions.Inverse inverseFunctionsOnGen :: (Show a, Eq a) => (a -> b) -> (b -> a) -> Gen a -> Property inverseFunctionsOnValid :: (Show a, Eq a, GenValidity a) => (a -> b) -> (b -> a) -> Property inverseFunctions :: (Show a, Eq a, GenValidity a) => (a -> b) -> (b -> a) -> Property -- | id is its own inverse function for every type: prop> -- inverseFunctionsOnArbitrary id (id :: Int -> Int) inverseFunctionsOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> b) -> (b -> a) -> Property inverseFunctionsIfFirstSucceedsOnGen :: (Show a, Eq a, CanFail f) => (a -> f b) -> (b -> a) -> Gen a -> Property inverseFunctionsIfFirstSucceedsOnValid :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> f b) -> (b -> a) -> Property inverseFunctionsIfFirstSucceeds :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> f b) -> (b -> a) -> Property inverseFunctionsIfFirstSucceedsOnArbitrary :: (Show a, Eq a, Arbitrary a, CanFail f) => (a -> f b) -> (b -> a) -> Property inverseFunctionsIfSecondSucceedsOnGen :: (Show a, Eq a, CanFail f) => (a -> b) -> (b -> f a) -> Gen a -> Property inverseFunctionsIfSecondSucceedsOnValid :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> b) -> (b -> f a) -> Property inverseFunctionsIfSecondSucceeds :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> b) -> (b -> f a) -> Property inverseFunctionsIfSecondSucceedsOnArbitrary :: (Show a, Eq a, Arbitrary a, CanFail f) => (a -> b) -> (b -> f a) -> Property inverseFunctionsIfSucceedOnGen :: (Show a, Eq a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Gen a -> Property inverseFunctionsIfSucceedOnValid :: (Show a, Eq a, GenValidity a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Property inverseFunctionsIfSucceed :: (Show a, Eq a, GenValidity a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Property inverseFunctionsIfSucceedOnArbitrary :: (Show a, Eq a, Arbitrary a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Property module Test.Validity.Functions.Idempotence idempotentOnGen :: (Show a, Eq a) => (a -> a) -> Gen a -> Property idempotentOnValid :: (Show a, Eq a, GenValidity a) => (a -> a) -> Property idempotent :: (Show a, Eq a, GenValidity a) => (a -> a) -> Property -- | id is idempotent for any type: -- --
--   idempotentOnArbitrary (id :: Int -> Int)
--   
-- -- const, given any input, is idempotent for any type as well: -- --
--   \int -> idempotentOnArbitrary (const int :: Int -> Int)
--   
idempotentOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a) -> Property module Test.Validity.Functions.Equivalence equivalentOnGen :: (Show a, Eq a, Show b, Eq b) => (a -> b) -> (a -> b) -> Gen a -> Property equivalentOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b) => (a -> b) -> (a -> b) -> Property equivalent :: (Show a, Eq a, GenValidity a, Show b, Eq b) => (a -> b) -> (a -> b) -> Property equivalentOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c) => (a -> b -> c) -> (a -> b -> c) -> Gen (a, b) -> Property equivalentOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c) => (a -> b -> c) -> (a -> b -> c) -> Property equivalent2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c) => (a -> b -> c) -> (a -> b -> c) -> Property equivalentWhenFirstSucceedsOnGen :: (Show a, Eq a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> b) -> Gen a -> Property equivalentWhenFirstSucceedsOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> b) -> Property equivalentWhenFirstSucceeds :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> b) -> Property equivalentWhenFirstSucceedsOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> c) -> Gen (a, b) -> Property equivalentWhenFirstSucceedsOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> c) -> Property equivalentWhenFirstSucceeds2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> c) -> Property equivalentWhenSecondSucceedsOnGen :: (Show a, Eq a, Show b, Eq b, CanFail f) => (a -> b) -> (a -> f b) -> Gen a -> Property equivalentWhenSecondSucceedsOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> b) -> (a -> f b) -> Property equivalentWhenSecondSucceeds :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> b) -> (a -> f b) -> Property equivalentWhenSecondSucceedsOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c, CanFail f) => (a -> b -> c) -> (a -> b -> f c) -> Gen (a, b) -> Property equivalentWhenSecondSucceedsOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> c) -> (a -> b -> f c) -> Property equivalentWhenSecondSucceeds2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> c) -> (a -> b -> f c) -> Property equivalentWhenSucceedOnGen :: (Show a, Eq a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> f b) -> Gen a -> Property equivalentWhenSucceedOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> f b) -> Property equivalentWhenSucceed :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> f b) -> Property equivalentWhenSucceedOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> f c) -> Gen (a, b) -> Property equivalentWhenSucceedOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> f c) -> Property equivalentWhenSucceed2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> f c) -> Property module Test.Validity.Functions.CanFail -- | The function succeeds if the input is generated by the given generator succeedsOnGen :: (Show a, Show b, Show (f b), CanFail f) => (a -> f b) -> Gen a -> Property -- | The function succeeds if the input is generated by genValid succeedsOnValid :: (Show a, Show b, Show (f b), GenValidity a, CanFail f) => (a -> f b) -> Property -- | The function succeeds if the input is generated by -- genUnchecked succeeds :: (Show a, Show b, Show (f b), GenValidity a, CanFail f) => (a -> f b) -> Property -- | The function succeeds if the input is generated by arbitrary succeedsOnArbitrary :: (Show a, Show b, Show (f b), Arbitrary a, CanFail f) => (a -> f b) -> Property succeedsOnGens2 :: (Show a, Show b, Show c, Show (f c), CanFail f) => (a -> b -> f c) -> Gen (a, b) -> Property succeedsOnValids2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, CanFail f) => (a -> b -> f c) -> Property succeeds2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, CanFail f) => (a -> b -> f c) -> Property succeedsOnArbitrary2 :: (Show a, Show b, Show c, Show (f c), Arbitrary a, Arbitrary b, CanFail f) => (a -> b -> f c) -> Property -- | The function fails if the input is generated by the given generator failsOnGen :: (Show a, Show b, Show (f b), CanFail f) => (a -> f b) -> Gen a -> Property -- | The function fails if the input is generated by genInvalid failsOnInvalid :: (Show a, Show b, Show (f b), GenValidity a, CanFail f) => (a -> f b) -> Property failsOnGens2 :: (Show a, Show b, Show c, Show (f c), CanFail f) => (a -> b -> f c) -> Gen a -> Gen b -> Property failsOnInvalid2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, CanFail f) => (a -> b -> f c) -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by the given generator. validIfSucceedsOnGen :: (Show a, Show b, Show (f b), Validity b, CanFail f) => (a -> f b) -> Gen a -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by arbitrary. validIfSucceedsOnValid :: (Show a, Show b, Show (f b), GenValidity a, Validity b, CanFail f) => (a -> f b) -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by arbitrary. validIfSucceedsOnArbitrary :: (Show a, Show b, Show (f b), Arbitrary a, Validity b, CanFail f) => (a -> f b) -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by genUnchecked. validIfSucceeds :: (Show a, Show b, Show (f b), GenValidity a, Validity b, CanFail f) => (a -> f b) -> Property validIfSucceedsOnGens2 :: (Show a, Show b, Show c, Show (f c), Validity c, CanFail f) => (a -> b -> f c) -> Gen (a, b) -> Property validIfSucceedsOnValids2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, Validity c, CanFail f) => (a -> b -> f c) -> Property validIfSucceeds2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, Validity c, CanFail f) => (a -> b -> f c) -> Property validIfSucceedsOnArbitrary2 :: (Show a, Show b, Show c, Show (f c), Arbitrary a, Arbitrary b, Validity c, CanFail f) => (a -> b -> f c) -> Property module Test.Validity.Functions -- | The function produces valid output when the input is generated as -- specified by the given generator. producesValidsOnGen :: (Show a, Show b, Validity b) => (a -> b) -> Gen a -> Property -- | The function produces valid output when the input is generated by -- genValid producesValidsOnValids :: (Show a, Show b, GenValidity a, Validity b) => (a -> b) -> Property -- | The function produces valid output when the input is generated by -- genUnchecked producesValid :: (Show a, Show b, GenValidity a, Validity b) => (a -> b) -> Property -- | The function produces valid output when the input is generated by -- arbitrary producesValidsOnArbitrary :: (Show a, Show b, Arbitrary a, Validity b) => (a -> b) -> Property producesValidsOnGens2 :: (Show a, Show b, Show c, Validity c) => (a -> b -> c) -> Gen (a, b) -> Property producesValidsOnValids2 :: (Show a, Show b, Show c, GenValidity a, GenValidity b, Validity c) => (a -> b -> c) -> Property producesValid2 :: (Show a, Show b, Show c, GenValidity a, GenValidity b, Validity c) => (a -> b -> c) -> Property producesValidsOnArbitrary2 :: (Show a, Show b, Show c, Arbitrary a, Arbitrary b, Validity c) => (a -> b -> c) -> Property producesValidsOnGens3 :: (Show a, Show b, Show c, Show d, Validity d) => (a -> b -> c -> d) -> Gen (a, b, c) -> Property producesValidsOnValids3 :: (Show a, Show b, Show c, Show d, GenValidity a, GenValidity b, GenValidity c, Validity d) => (a -> b -> c -> d) -> Property producesValid3 :: (Show a, Show b, Show c, Show d, GenValidity a, GenValidity b, GenValidity c, Validity d) => (a -> b -> c -> d) -> Property producesValidsOnArbitrary3 :: (Show a, Show b, Show c, Show d, Arbitrary a, Arbitrary b, Arbitrary c, Validity d) => (a -> b -> c -> d) -> Property -- | The function succeeds if the input is generated by the given generator succeedsOnGen :: (Show a, Show b, Show (f b), CanFail f) => (a -> f b) -> Gen a -> Property -- | The function succeeds if the input is generated by genValid succeedsOnValid :: (Show a, Show b, Show (f b), GenValidity a, CanFail f) => (a -> f b) -> Property -- | The function succeeds if the input is generated by -- genUnchecked succeeds :: (Show a, Show b, Show (f b), GenValidity a, CanFail f) => (a -> f b) -> Property -- | The function succeeds if the input is generated by arbitrary succeedsOnArbitrary :: (Show a, Show b, Show (f b), Arbitrary a, CanFail f) => (a -> f b) -> Property succeedsOnGens2 :: (Show a, Show b, Show c, Show (f c), CanFail f) => (a -> b -> f c) -> Gen (a, b) -> Property succeedsOnValids2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, CanFail f) => (a -> b -> f c) -> Property succeeds2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, CanFail f) => (a -> b -> f c) -> Property succeedsOnArbitrary2 :: (Show a, Show b, Show c, Show (f c), Arbitrary a, Arbitrary b, CanFail f) => (a -> b -> f c) -> Property -- | The function fails if the input is generated by the given generator failsOnGen :: (Show a, Show b, Show (f b), CanFail f) => (a -> f b) -> Gen a -> Property -- | The function fails if the input is generated by genInvalid failsOnInvalid :: (Show a, Show b, Show (f b), GenValidity a, CanFail f) => (a -> f b) -> Property failsOnGens2 :: (Show a, Show b, Show c, Show (f c), CanFail f) => (a -> b -> f c) -> Gen a -> Gen b -> Property failsOnInvalid2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, CanFail f) => (a -> b -> f c) -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by the given generator. validIfSucceedsOnGen :: (Show a, Show b, Show (f b), Validity b, CanFail f) => (a -> f b) -> Gen a -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by arbitrary. validIfSucceedsOnValid :: (Show a, Show b, Show (f b), GenValidity a, Validity b, CanFail f) => (a -> f b) -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by arbitrary. validIfSucceedsOnArbitrary :: (Show a, Show b, Show (f b), Arbitrary a, Validity b, CanFail f) => (a -> f b) -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by genUnchecked. validIfSucceeds :: (Show a, Show b, Show (f b), GenValidity a, Validity b, CanFail f) => (a -> f b) -> Property validIfSucceedsOnGens2 :: (Show a, Show b, Show c, Show (f c), Validity c, CanFail f) => (a -> b -> f c) -> Gen (a, b) -> Property validIfSucceedsOnValids2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, Validity c, CanFail f) => (a -> b -> f c) -> Property validIfSucceeds2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, Validity c, CanFail f) => (a -> b -> f c) -> Property validIfSucceedsOnArbitrary2 :: (Show a, Show b, Show c, Show (f c), Arbitrary a, Arbitrary b, Validity c, CanFail f) => (a -> b -> f c) -> Property equivalentOnGen :: (Show a, Eq a, Show b, Eq b) => (a -> b) -> (a -> b) -> Gen a -> Property equivalentOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b) => (a -> b) -> (a -> b) -> Property equivalent :: (Show a, Eq a, GenValidity a, Show b, Eq b) => (a -> b) -> (a -> b) -> Property equivalentOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c) => (a -> b -> c) -> (a -> b -> c) -> Gen (a, b) -> Property equivalentOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c) => (a -> b -> c) -> (a -> b -> c) -> Property equivalent2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c) => (a -> b -> c) -> (a -> b -> c) -> Property equivalentWhenFirstSucceedsOnGen :: (Show a, Eq a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> b) -> Gen a -> Property equivalentWhenFirstSucceedsOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> b) -> Property equivalentWhenFirstSucceeds :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> b) -> Property equivalentWhenFirstSucceedsOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> c) -> Gen (a, b) -> Property equivalentWhenFirstSucceedsOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> c) -> Property equivalentWhenFirstSucceeds2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> c) -> Property equivalentWhenSecondSucceedsOnGen :: (Show a, Eq a, Show b, Eq b, CanFail f) => (a -> b) -> (a -> f b) -> Gen a -> Property equivalentWhenSecondSucceedsOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> b) -> (a -> f b) -> Property equivalentWhenSecondSucceeds :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> b) -> (a -> f b) -> Property equivalentWhenSecondSucceedsOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c, CanFail f) => (a -> b -> c) -> (a -> b -> f c) -> Gen (a, b) -> Property equivalentWhenSecondSucceedsOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> c) -> (a -> b -> f c) -> Property equivalentWhenSecondSucceeds2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> c) -> (a -> b -> f c) -> Property equivalentWhenSucceedOnGen :: (Show a, Eq a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> f b) -> Gen a -> Property equivalentWhenSucceedOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> f b) -> Property equivalentWhenSucceed :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> f b) -> Property equivalentWhenSucceedOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> f c) -> Gen (a, b) -> Property equivalentWhenSucceedOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> f c) -> Property equivalentWhenSucceed2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> f c) -> Property inverseFunctionsOnGen :: (Show a, Eq a) => (a -> b) -> (b -> a) -> Gen a -> Property inverseFunctionsOnValid :: (Show a, Eq a, GenValidity a) => (a -> b) -> (b -> a) -> Property inverseFunctions :: (Show a, Eq a, GenValidity a) => (a -> b) -> (b -> a) -> Property -- | id is its own inverse function for every type: prop> -- inverseFunctionsOnArbitrary id (id :: Int -> Int) inverseFunctionsOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> b) -> (b -> a) -> Property inverseFunctionsIfFirstSucceedsOnGen :: (Show a, Eq a, CanFail f) => (a -> f b) -> (b -> a) -> Gen a -> Property inverseFunctionsIfFirstSucceedsOnValid :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> f b) -> (b -> a) -> Property inverseFunctionsIfFirstSucceeds :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> f b) -> (b -> a) -> Property inverseFunctionsIfFirstSucceedsOnArbitrary :: (Show a, Eq a, Arbitrary a, CanFail f) => (a -> f b) -> (b -> a) -> Property inverseFunctionsIfSecondSucceedsOnGen :: (Show a, Eq a, CanFail f) => (a -> b) -> (b -> f a) -> Gen a -> Property inverseFunctionsIfSecondSucceedsOnValid :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> b) -> (b -> f a) -> Property inverseFunctionsIfSecondSucceeds :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> b) -> (b -> f a) -> Property inverseFunctionsIfSecondSucceedsOnArbitrary :: (Show a, Eq a, Arbitrary a, CanFail f) => (a -> b) -> (b -> f a) -> Property inverseFunctionsIfSucceedOnGen :: (Show a, Eq a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Gen a -> Property inverseFunctionsIfSucceedOnValid :: (Show a, Eq a, GenValidity a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Property inverseFunctionsIfSucceed :: (Show a, Eq a, GenValidity a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Property inverseFunctionsIfSucceedOnArbitrary :: (Show a, Eq a, Arbitrary a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Property idempotentOnGen :: (Show a, Eq a) => (a -> a) -> Gen a -> Property idempotentOnValid :: (Show a, Eq a, GenValidity a) => (a -> a) -> Property idempotent :: (Show a, Eq a, GenValidity a) => (a -> a) -> Property -- | id is idempotent for any type: -- --
--   idempotentOnArbitrary (id :: Int -> Int)
--   
-- -- const, given any input, is idempotent for any type as well: -- --
--   \int -> idempotentOnArbitrary (const int :: Int -> Int)
--   
idempotentOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a) -> Property module Test.Validity.Eq eqSpec :: (Show a, Eq a, Typeable a, GenValidity a) => Proxy a -> Spec module Test.Validity.Arbitrary -- | A Spec that specifies that arbitrary only generates -- data that satisfy isValid and that shrink only -- produces data that satisfy isValid. -- -- Example usage: -- --
--   arbitrarySpec (Proxy :: Proxy MyData)
--   
arbitrarySpec :: (Typeable a, Show a, Validity a, Arbitrary a) => Proxy a -> Spec -- | arbitrary only generates valid data arbitraryGeneratesOnlyValid :: forall a. (Show a, Validity a, Arbitrary a) => Proxy a -> Property -- | shrink, applied to valid data only produces valid data shrinkProducesOnlyValids :: forall a. (Show a, Validity a, Arbitrary a) => Proxy a -> Property module Test.Validity -- | A concrete, poly-kinded proxy type data Proxy k (t :: k) :: forall k. k -> * Proxy :: Proxy k -- | A Spec that specifies that arbitrary only generates -- data that satisfy isValid and that shrink only -- produces data that satisfy isValid. -- -- Example usage: -- --
--   arbitrarySpec (Proxy :: Proxy MyData)
--   
arbitrarySpec :: (Typeable a, Show a, Validity a, Arbitrary a) => Proxy a -> Spec -- | arbitrary only generates valid data arbitraryGeneratesOnlyValid :: forall a. (Show a, Validity a, Arbitrary a) => Proxy a -> Property -- | shrink, applied to valid data only produces valid data shrinkProducesOnlyValids :: forall a. (Show a, Validity a, Arbitrary a) => Proxy a -> Property -- | A Spec that specifies that genValid only generates -- valid data and that genInvalid only generates invalid data. -- -- In general it is a good idea to add this spec to your test suite if -- you write a custom implementation of genValid or -- genInvalid. -- -- Example usage: -- --
--   genValiditySpec (Proxy :: Proxy MyData)
--   
genValiditySpec :: (Typeable a, Show a, GenValidity a) => Proxy a -> Spec -- | genValid only generates valid data genValidityValidGeneratesValid :: forall a. (Show a, GenValidity a) => Proxy a -> Property -- | The given generator generates only valid data points genGeneratesValid :: (Show a, Validity a) => Gen a -> Property -- | genValid only generates invalid data genValidityInvalidGeneratesInvalid :: forall a. (Show a, GenValidity a) => Proxy a -> Property -- | The given generator generates only invalid data points genGeneratesInvalid :: (Show a, Validity a) => Gen a -> Property -- | A Spec that specifies that isValidFor implies -- isValid -- -- In general it is a good idea to add this spec to your test suite if -- the a and b in RelativeValidity a b also -- have a Validity instance. -- -- Example usage: -- --
--   relativeValiditySpec
--       (Proxy :: Proxy MyDataFor)
--       (Proxy :: Proxy MyOtherData)
--   
relativeValiditySpec :: (Typeable a, Typeable b, Show a, Show b, GenValidity a, GenValidity b, GenRelativeValidity a b) => Proxy a -> Proxy b -> Spec -- | isValidFor a b implies isValid a for all b relativeValidityImpliesValidA :: (Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b) => Proxy a -> Proxy b -> Property -- | isValidFor a b implies isValid b for all a relativeValidityImpliesValidB :: (Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b) => Proxy a -> Proxy b -> Property -- | A Spec that specifies that genValidFor and -- genInvalidFor work as intended. -- -- In general it is a good idea to add this spec to your test suite if -- you write a custom implementation of genValidFor or -- genInvalidFor. -- -- Example usage: -- --
--   relativeGenValiditySpec (proxy :: MyDataFor) (proxy :: MyOtherData)
--   
genRelativeValiditySpec :: (Typeable a, Typeable b, Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b, GenRelativeValidity a b) => Proxy a -> Proxy b -> Spec -- | genValidFor b only generates values that satisfy -- isValidFor b genRelativeValidityValidGeneratesValid :: (Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b, GenRelativeValidity a b) => Proxy a -> Proxy b -> Property -- | genInvalidFor b only generates values that do not satisfy -- isValidFor b genRelativeValidityInvalidGeneratesInvalid :: (Show a, Show b, GenValidity a, GenValidity b, RelativeValidity a b, GenRelativeValidity a b) => Proxy a -> Proxy b -> Property -- | The function produces valid output when the input is generated as -- specified by the given generator. producesValidsOnGen :: (Show a, Show b, Validity b) => (a -> b) -> Gen a -> Property -- | The function produces valid output when the input is generated by -- genValid producesValidsOnValids :: (Show a, Show b, GenValidity a, Validity b) => (a -> b) -> Property -- | The function produces valid output when the input is generated by -- genUnchecked producesValid :: (Show a, Show b, GenValidity a, Validity b) => (a -> b) -> Property -- | The function produces valid output when the input is generated by -- arbitrary producesValidsOnArbitrary :: (Show a, Show b, Arbitrary a, Validity b) => (a -> b) -> Property producesValidsOnGens2 :: (Show a, Show b, Show c, Validity c) => (a -> b -> c) -> Gen (a, b) -> Property producesValidsOnValids2 :: (Show a, Show b, Show c, GenValidity a, GenValidity b, Validity c) => (a -> b -> c) -> Property producesValid2 :: (Show a, Show b, Show c, GenValidity a, GenValidity b, Validity c) => (a -> b -> c) -> Property producesValidsOnArbitrary2 :: (Show a, Show b, Show c, Arbitrary a, Arbitrary b, Validity c) => (a -> b -> c) -> Property producesValidsOnGens3 :: (Show a, Show b, Show c, Show d, Validity d) => (a -> b -> c -> d) -> Gen (a, b, c) -> Property producesValidsOnValids3 :: (Show a, Show b, Show c, Show d, GenValidity a, GenValidity b, GenValidity c, Validity d) => (a -> b -> c -> d) -> Property producesValid3 :: (Show a, Show b, Show c, Show d, GenValidity a, GenValidity b, GenValidity c, Validity d) => (a -> b -> c -> d) -> Property producesValidsOnArbitrary3 :: (Show a, Show b, Show c, Show d, Arbitrary a, Arbitrary b, Arbitrary c, Validity d) => (a -> b -> c -> d) -> Property -- | A class of types that are the result of functions that can fail class CanFail f hasFailed :: CanFail f => f a -> Bool resultIfSucceeded :: CanFail f => f a -> Maybe a -- | The function succeeds if the input is generated by the given generator succeedsOnGen :: (Show a, Show b, Show (f b), CanFail f) => (a -> f b) -> Gen a -> Property -- | The function succeeds if the input is generated by genValid succeedsOnValid :: (Show a, Show b, Show (f b), GenValidity a, CanFail f) => (a -> f b) -> Property -- | The function succeeds if the input is generated by -- genUnchecked succeeds :: (Show a, Show b, Show (f b), GenValidity a, CanFail f) => (a -> f b) -> Property -- | The function succeeds if the input is generated by arbitrary succeedsOnArbitrary :: (Show a, Show b, Show (f b), Arbitrary a, CanFail f) => (a -> f b) -> Property succeedsOnGens2 :: (Show a, Show b, Show c, Show (f c), CanFail f) => (a -> b -> f c) -> Gen (a, b) -> Property succeedsOnValids2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, CanFail f) => (a -> b -> f c) -> Property succeeds2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, CanFail f) => (a -> b -> f c) -> Property succeedsOnArbitrary2 :: (Show a, Show b, Show c, Show (f c), Arbitrary a, Arbitrary b, CanFail f) => (a -> b -> f c) -> Property -- | The function fails if the input is generated by the given generator failsOnGen :: (Show a, Show b, Show (f b), CanFail f) => (a -> f b) -> Gen a -> Property -- | The function fails if the input is generated by genInvalid failsOnInvalid :: (Show a, Show b, Show (f b), GenValidity a, CanFail f) => (a -> f b) -> Property failsOnGens2 :: (Show a, Show b, Show c, Show (f c), CanFail f) => (a -> b -> f c) -> Gen a -> Gen b -> Property failsOnInvalid2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, CanFail f) => (a -> b -> f c) -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by the given generator. validIfSucceedsOnGen :: (Show a, Show b, Show (f b), Validity b, CanFail f) => (a -> f b) -> Gen a -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by arbitrary. validIfSucceedsOnValid :: (Show a, Show b, Show (f b), GenValidity a, Validity b, CanFail f) => (a -> f b) -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by arbitrary. validIfSucceedsOnArbitrary :: (Show a, Show b, Show (f b), Arbitrary a, Validity b, CanFail f) => (a -> f b) -> Property -- | The function produces output that satisfies isValid if it is -- given input that is generated by genUnchecked. validIfSucceeds :: (Show a, Show b, Show (f b), GenValidity a, Validity b, CanFail f) => (a -> f b) -> Property validIfSucceedsOnGens2 :: (Show a, Show b, Show c, Show (f c), Validity c, CanFail f) => (a -> b -> f c) -> Gen (a, b) -> Property validIfSucceedsOnValids2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, Validity c, CanFail f) => (a -> b -> f c) -> Property validIfSucceeds2 :: (Show a, Show b, Show c, Show (f c), GenValidity a, GenValidity b, Validity c, CanFail f) => (a -> b -> f c) -> Property validIfSucceedsOnArbitrary2 :: (Show a, Show b, Show c, Show (f c), Arbitrary a, Arbitrary b, Validity c, CanFail f) => (a -> b -> f c) -> Property equivalentOnGen :: (Show a, Eq a, Show b, Eq b) => (a -> b) -> (a -> b) -> Gen a -> Property equivalentOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b) => (a -> b) -> (a -> b) -> Property equivalent :: (Show a, Eq a, GenValidity a, Show b, Eq b) => (a -> b) -> (a -> b) -> Property equivalentOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c) => (a -> b -> c) -> (a -> b -> c) -> Gen (a, b) -> Property equivalentOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c) => (a -> b -> c) -> (a -> b -> c) -> Property equivalent2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c) => (a -> b -> c) -> (a -> b -> c) -> Property equivalentWhenFirstSucceedsOnGen :: (Show a, Eq a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> b) -> Gen a -> Property equivalentWhenFirstSucceedsOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> b) -> Property equivalentWhenFirstSucceeds :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> b) -> Property equivalentWhenFirstSucceedsOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> c) -> Gen (a, b) -> Property equivalentWhenFirstSucceedsOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> c) -> Property equivalentWhenFirstSucceeds2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> c) -> Property equivalentWhenSecondSucceedsOnGen :: (Show a, Eq a, Show b, Eq b, CanFail f) => (a -> b) -> (a -> f b) -> Gen a -> Property equivalentWhenSecondSucceedsOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> b) -> (a -> f b) -> Property equivalentWhenSecondSucceeds :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> b) -> (a -> f b) -> Property equivalentWhenSecondSucceedsOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c, CanFail f) => (a -> b -> c) -> (a -> b -> f c) -> Gen (a, b) -> Property equivalentWhenSecondSucceedsOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> c) -> (a -> b -> f c) -> Property equivalentWhenSecondSucceeds2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> c) -> (a -> b -> f c) -> Property equivalentWhenSucceedOnGen :: (Show a, Eq a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> f b) -> Gen a -> Property equivalentWhenSucceedOnValid :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> f b) -> Property equivalentWhenSucceed :: (Show a, Eq a, GenValidity a, Show b, Eq b, CanFail f) => (a -> f b) -> (a -> f b) -> Property equivalentWhenSucceedOnGens2 :: (Show a, Eq a, Show b, Eq b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> f c) -> Gen (a, b) -> Property equivalentWhenSucceedOnValids2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> f c) -> Property equivalentWhenSucceed2 :: (Show a, Eq a, GenValidity a, Show b, Eq b, GenValidity b, Show c, Eq c, CanFail f) => (a -> b -> f c) -> (a -> b -> f c) -> Property inverseFunctionsOnGen :: (Show a, Eq a) => (a -> b) -> (b -> a) -> Gen a -> Property inverseFunctionsOnValid :: (Show a, Eq a, GenValidity a) => (a -> b) -> (b -> a) -> Property inverseFunctions :: (Show a, Eq a, GenValidity a) => (a -> b) -> (b -> a) -> Property -- | id is its own inverse function for every type: prop> -- inverseFunctionsOnArbitrary id (id :: Int -> Int) inverseFunctionsOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> b) -> (b -> a) -> Property inverseFunctionsIfFirstSucceedsOnGen :: (Show a, Eq a, CanFail f) => (a -> f b) -> (b -> a) -> Gen a -> Property inverseFunctionsIfFirstSucceedsOnValid :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> f b) -> (b -> a) -> Property inverseFunctionsIfFirstSucceeds :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> f b) -> (b -> a) -> Property inverseFunctionsIfFirstSucceedsOnArbitrary :: (Show a, Eq a, Arbitrary a, CanFail f) => (a -> f b) -> (b -> a) -> Property inverseFunctionsIfSecondSucceedsOnGen :: (Show a, Eq a, CanFail f) => (a -> b) -> (b -> f a) -> Gen a -> Property inverseFunctionsIfSecondSucceedsOnValid :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> b) -> (b -> f a) -> Property inverseFunctionsIfSecondSucceeds :: (Show a, Eq a, GenValidity a, CanFail f) => (a -> b) -> (b -> f a) -> Property inverseFunctionsIfSecondSucceedsOnArbitrary :: (Show a, Eq a, Arbitrary a, CanFail f) => (a -> b) -> (b -> f a) -> Property inverseFunctionsIfSucceedOnGen :: (Show a, Eq a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Gen a -> Property inverseFunctionsIfSucceedOnValid :: (Show a, Eq a, GenValidity a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Property inverseFunctionsIfSucceed :: (Show a, Eq a, GenValidity a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Property inverseFunctionsIfSucceedOnArbitrary :: (Show a, Eq a, Arbitrary a, CanFail f, CanFail g) => (a -> f b) -> (b -> g a) -> Property idempotentOnGen :: (Show a, Eq a) => (a -> a) -> Gen a -> Property idempotentOnValid :: (Show a, Eq a, GenValidity a) => (a -> a) -> Property idempotent :: (Show a, Eq a, GenValidity a) => (a -> a) -> Property -- | id is idempotent for any type: -- --
--   idempotentOnArbitrary (id :: Int -> Int)
--   
-- -- const, given any input, is idempotent for any type as well: -- --
--   \int -> idempotentOnArbitrary (const int :: Int -> Int)
--   
idempotentOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a) -> Property -- | <math> reflexiveOnElem :: (a -> a -> Bool) -> a -> Bool reflexivityOnGen :: Show a => (a -> a -> Bool) -> Gen a -> Property reflexivityOnValid :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property reflexivity :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   reflexivityOnArbitrary ((==) :: Int -> Int -> Bool)
--   
reflexivityOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property -- | <math> transitiveOnElems :: (a -> a -> Bool) -> a -> a -> a -> Bool transitivityOnGens :: Show a => (a -> a -> Bool) -> Gen (a, a, a) -> Property transitivityOnValid :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property transitivity :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   transitivityOnArbitrary ((==) :: Int -> Int -> Bool)
--   
transitivityOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property -- | <math> antisymmetricOnElemsWithEquality :: (a -> a -> Bool) -> (a -> a -> Bool) -> a -> a -> Bool antisymmetryOnGensWithEquality :: Show a => (a -> a -> Bool) -> Gen (a, a) -> (a -> a -> Bool) -> Property antisymmetryOnGensEq :: (Show a, Eq a) => (a -> a -> Bool) -> Gen (a, a) -> Property antisymmetryOnValid :: (Show a, Eq a, GenValidity a) => (a -> a -> Bool) -> Property antisymmetry :: (Show a, Eq a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   antisymmetryOnArbitrary ((<=) :: Int -> Int -> Bool)
--   
antisymmetryOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> Bool) -> Property -- | <math> symmetricOnElems :: (a -> a -> Bool) -> a -> a -> Bool symmetryOnGens :: Show a => (a -> a -> Bool) -> Gen (a, a) -> Property symmetryOnValid :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property symmetry :: (Show a, GenValidity a) => (a -> a -> Bool) -> Property -- |
--   symmetryOnArbitrary ((==) :: Int -> Int -> Bool)
--   
symmetryOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property -- | <math> leftIdentityOnElemWithEquality :: (b -> a -> a) -> (a -> a -> Bool) -> b -> a -> Bool leftIdentityOnGenWithEquality :: Show a => (b -> a -> a) -> (a -> a -> Bool) -> b -> Gen a -> Property leftIdentityOnGen :: (Show a, Eq a) => (b -> a -> a) -> b -> Gen a -> Property leftIdentityOnValid :: (Show a, Eq a, GenValidity a) => (b -> a -> a) -> b -> Property leftIdentity :: (Show a, Eq a, GenValidity a) => (b -> a -> a) -> b -> Property -- | <math> rightIdentityOnElemWithEquality :: (a -> b -> a) -> (a -> a -> Bool) -> b -> a -> Bool rightIdentityOnGenWithEquality :: Show a => (a -> b -> a) -> (a -> a -> Bool) -> b -> Gen a -> Property rightIdentityOnGen :: (Show a, Eq a) => (a -> b -> a) -> b -> Gen a -> Property rightIdentityOnValid :: (Show a, Eq a, GenValidity a) => (a -> b -> a) -> b -> Property rightIdentity :: (Show a, Eq a, GenValidity a) => (a -> b -> a) -> b -> Property identityOnGen :: (Show a, Eq a) => (a -> a -> a) -> a -> Gen a -> Property identityOnValid :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> a -> Property identity :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> a -> Property associativeOnGens :: (Show a, Eq a) => (a -> a -> a) -> Gen (a, a, a) -> Property associativeOnValids :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property associative :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property associativeOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> a) -> Property commutativeOnGens :: (Show a, Eq a) => (a -> a -> a) -> Gen (a, a) -> Property commutativeOnValids :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property commutative :: (Show a, Eq a, GenValidity a) => (a -> a -> a) -> Property commutativeOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> a) -> Property eqSpec :: (Show a, Eq a, Typeable a, GenValidity a) => Proxy a -> Spec ordSpec :: (Show a, Eq a, Ord a, Typeable a, GenValidity a) => Proxy a -> Spec