genvalidity-hspec-0.3.1.0: Standard spec's for GenValidity instances

Safe HaskellNone
LanguageHaskell2010

Test.Validity.Relations

Description

Properties of relations

Synopsis

Documentation

reflexiveOnElem Source #

Arguments

:: (a -> a -> Bool)

A relation

-> a

An element

-> Bool 

\[ Reflexive(\prec) \quad\equiv\quad \forall a: (a \prec a) \]

reflexivityOnGen :: Show a => (a -> a -> Bool) -> Gen a -> Property Source #

reflexivityOnValid :: (Show a, GenValid a) => (a -> a -> Bool) -> Property Source #

reflexivityOnValid ((<=) @Double)
reflexivityOnValid ((==) @Double)
reflexivityOnValid ((>=) @Double)
reflexivityOnValid (Data.List.isPrefixOf @Double)
reflexivityOnValid (Data.List.isSuffixOf @Double)
reflexivityOnValid (Data.List.isInfixOf @Double)
reflexivityOnValid (Data.List.isSubsequenceOf @Double)

reflexivity :: (Show a, GenUnchecked a) => (a -> a -> Bool) -> Property Source #

reflexivity ((<=) @Int)
reflexivity ((==) @Int)
reflexivity ((>=) @Int)
reflexivity (Data.List.isPrefixOf @Int)
reflexivity (Data.List.isSuffixOf @Int)
reflexivity (Data.List.isInfixOf @Int)
reflexivity (Data.List.isSubsequenceOf @Int)

reflexivityOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property Source #

reflexivityOnArbitrary ((<=) @Int)
reflexivityOnArbitrary ((==) @Int)
reflexivityOnArbitrary ((>=) @Int)
reflexivityOnArbitrary (Data.List.isPrefixOf @Int)
reflexivityOnArbitrary (Data.List.isSuffixOf @Int)
reflexivityOnArbitrary (Data.List.isInfixOf @Int)
reflexivityOnArbitrary (Data.List.isSubsequenceOf @Int)

transitiveOnElems Source #

Arguments

:: (a -> a -> Bool)

A relation

-> a 
-> a 
-> a

Three elements

-> Bool 

\[ Transitive(\prec) \quad\equiv\quad \forall a, b, c: ((a \prec b) \wedge (b \prec c)) \Rightarrow (a \prec c) \]

transitivityOnGens :: Show a => (a -> a -> Bool) -> Gen (a, a, a) -> Property Source #

transitivityOnValid :: (Show a, GenValid a) => (a -> a -> Bool) -> Property Source #

transitivityOnValid ((>) @Double)
transitivityOnValid ((>=) @Double)
transitivityOnValid ((==) @Double)
transitivityOnValid ((<=) @Double)
transitivityOnValid ((<) @Double)
transitivityOnValid (Data.List.isPrefixOf @Double)
transitivityOnValid (Data.List.isSuffixOf @Double)
transitivityOnValid (Data.List.isInfixOf @Double)
transitivityOnValid (Data.List.isSubsequenceOf @Double)

transitivity :: (Show a, GenUnchecked a) => (a -> a -> Bool) -> Property Source #

transitivity ((>) @Int)
transitivity ((>=) @Int)
transitivity ((==) @Int)
transitivity ((<=) @Int)
transitivity ((<) @Int)
transitivity (Data.List.isPrefixOf @Int)
transitivity (Data.List.isSuffixOf @Int)
transitivity (Data.List.isInfixOf @Int)
transitivity (Data.List.isSubsequenceOf @Int)

transitivityOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property Source #

transitivityOnArbitrary ((>) @Int)
transitivityOnArbitrary ((>=) @Int)
transitivityOnArbitrary ((==) @Int)
transitivityOnArbitrary ((<=) @Int)
transitivityOnArbitrary ((<) @Int)
transitivityOnArbitrary (Data.List.isPrefixOf @Int)
transitivityOnArbitrary (Data.List.isSuffixOf @Int)
transitivityOnArbitrary (Data.List.isInfixOf @Int)
transitivityOnArbitrary (Data.List.isSubsequenceOf @Int)

antisymmetricOnElemsWithEquality Source #

Arguments

:: (a -> a -> Bool)

A relation

-> (a -> a -> Bool)

An equivalence relation

-> a 
-> a

Two elements

-> Bool 

\[ Antisymmetric(\prec, \doteq) \quad\equiv\quad \forall a, b: ((a \prec b) \wedge (b \prec a)) \Rightarrow (a \doteq b) \]

antisymmetryOnGensWithEquality :: Show a => (a -> a -> Bool) -> Gen (a, a) -> (a -> a -> Bool) -> Property Source #

antisymmetryOnGens :: (Show a, Eq a) => (a -> a -> Bool) -> Gen (a, a) -> Property Source #

antisymmetryOnValid :: (Show a, Eq a, GenValid a) => (a -> a -> Bool) -> Property Source #

antisymmetryOnValid ((>) @Double)
antisymmetryOnValid ((>=) @Double)
antisymmetryOnValid ((<=) @Double)
antisymmetryOnValid ((<) @Double)
antisymmetryOnValid (Data.List.isPrefixOf @Double)
antisymmetryOnValid (Data.List.isSuffixOf @Double)
antisymmetryOnValid (Data.List.isInfixOf @Double)
antisymmetryOnValid (Data.List.isSubsequenceOf @Double)

antisymmetry :: (Show a, Eq a, GenUnchecked a) => (a -> a -> Bool) -> Property Source #

antisymmetry ((>) @Int)
antisymmetry ((>=) @Int)
antisymmetry ((<=) @Int)
antisymmetry ((<) @Int)
antisymmetry (Data.List.isPrefixOf @Int)
antisymmetry (Data.List.isSuffixOf @Int)
antisymmetry (Data.List.isInfixOf @Int)
antisymmetry (Data.List.isSubsequenceOf @Int)
antisymmetry ((\x y -> even x && odd y) :: Int -> Int -> Bool)

antisymmetryOnArbitrary :: (Show a, Eq a, Arbitrary a) => (a -> a -> Bool) -> Property Source #

antisymmetryOnArbitrary ((>) @Int)
antisymmetryOnArbitrary ((>=) @Int)
antisymmetryOnArbitrary ((<=) @Int)
antisymmetryOnArbitrary ((<) @Int)
antisymmetryOnArbitrary (Data.List.isPrefixOf @Int)
antisymmetryOnArbitrary (Data.List.isSuffixOf @Int)
antisymmetryOnArbitrary (Data.List.isInfixOf @Int)
antisymmetryOnArbitrary (Data.List.isSubsequenceOf @Int)
antisymmetryOnArbitrary ((\x y -> even x && odd y) :: Int -> Int -> Bool)

antireflexiveOnElem Source #

Arguments

:: (a -> a -> Bool)

A relation

-> a

An element

-> Bool 

\[ Antireflexive(\prec) \quad\equiv\quad \forall a: \neg (a \prec a) \]

antireflexivityOnGen :: Show a => (a -> a -> Bool) -> Gen a -> Property Source #

antireflexivityOnValid :: (Show a, GenValid a) => (a -> a -> Bool) -> Property Source #

antireflexivityOnValid ((<) @Double)
antireflexivityOnValid ((/=) @Double)
antireflexivityOnValid ((>) @Double)

antireflexivity :: (Show a, GenUnchecked a) => (a -> a -> Bool) -> Property Source #

antireflexivity ((<) @Int)
antireflexivity ((/=) @Int)
antireflexivity ((>) @Int)

antireflexivityOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property Source #

antireflexivityOnArbitrary ((<) @Int)
antireflexivityOnArbitrary ((/=) @Int)
antireflexivityOnArbitrary ((>) @Int)

symmetricOnElems Source #

Arguments

:: (a -> a -> Bool)

A relation

-> a 
-> a

Two elements

-> Bool 

\[ Symmetric(\prec) \quad\equiv\quad \forall a, b: (a \prec b) \Leftrightarrow (b \prec a) \]

symmetryOnGens :: Show a => (a -> a -> Bool) -> Gen (a, a) -> Property Source #

symmetryOnValid :: (Show a, GenValid a) => (a -> a -> Bool) -> Property Source #

symmetryOnValid ((==) @Double)
symmetryOnValid ((/=) @Double)

symmetry :: (Show a, GenUnchecked a) => (a -> a -> Bool) -> Property Source #

symmetry ((==) @Int)
symmetry ((/=) @Int)

symmetryOnArbitrary :: (Show a, Arbitrary a) => (a -> a -> Bool) -> Property Source #

symmetryOnArbitrary ((==) @Int)
symmetryOnArbitrary ((/=) @Int)