module Data.GenRelativeValidity
( module Data.RelativeValidity
, module Data.GenRelativeValidity
) where
import Data.GenValidity
import Data.RelativeValidity
import Test.QuickCheck
class (GenUnchecked a, RelativeValidity a b) =>
GenRelativeUnchecked a b where
genUncheckedFor :: b -> Gen a
genUncheckedFor _ = genUnchecked
class (GenValid a, RelativeValidity a b) =>
GenRelativeValid a b where
genValidFor :: b -> Gen a
genValidFor b = genValid `suchThat` (`isValidFor` b)
class (GenUnchecked a, RelativeValidity a b, GenRelativeUnchecked a b) =>
GenRelativeInvalid a b where
genInvalidFor :: b -> Gen a
genInvalidFor b = genUncheckedFor b `suchThat` (not . (`isValidFor` b))