A class of types for which valid values can be generated to be valid.
How to instantiate GenValid
Step 1: Try to instantiate GenValid without overriding any functions. It is possible that, if few values are valid or if validity checking is expensive, the resulting generator is too slow. In that case, go to Step 2.
Step 2: Consider using genValidStructurallyWithoutExtraChecking and shrinkValidStructurallyWithoutExtraFiltering to speed up generation. This only works if your type has a derived or trivial Validity instance.
Step 3: If that still is not fast enough, consider writing your own generator and shrinking function. Make sure to generate any possible valid value, but only valid values.
A note about Arbitrary
If you also write Arbitrary instances for GenValid types, it may be
best to simply use
instance Arbitrary A where
arbitrary = genValid
shrink = shrinkValidMethods
genValid :: Gen aGenerate a valid datum, this should cover all possible valid values in the type
The default implementation is as follows:
genValid = genValidStructurallyTo speed up testing, it may be a good idea to implement this yourself. If you do, make sure that it is possible to generate all possible valid data, otherwise your testing may not cover all cases.
shrinkValid :: a -> [a]Shrink a valid value.
The default implementation is as follows:
shrinkValid = shrinkValidStructurallyIt is important that this shrinking function only shrinks values to valid values. If shrinkValid ever shrinks a value to an invalid value, the test that is being shrunk for might fail for a different reason than for the reason that it originally failed. This would lead to very confusing error messages.
Instances36GenValid, …
GenValid IntegerDefined in genvalidity-1.1.1.0 · Data.GenValidityGenValid NaturalDefined in genvalidity-1.1.1.0 · Data.GenValidityGenValid Int16Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid Int32Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid Int64Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid Int8Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid Word16Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid Word32Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid Word64Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid Word8Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid BoolDefined in genvalidity-1.1.1.0 · Data.GenValidityGenValid CharDefined in genvalidity-1.1.1.0 · Data.GenValidityGenValid DoubleDefined in genvalidity-1.1.1.0 · Data.GenValidityGenValid FloatDefined in genvalidity-1.1.1.0 · Data.GenValidityGenValid IntDefined in genvalidity-1.1.1.0 · Data.GenValidityGenValid OrderingDefined in genvalidity-1.1.1.0 · Data.GenValidityGenValid WordDefined in genvalidity-1.1.1.0 · Data.GenValidityGenValid ()Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid (First a)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid (Last a)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid (NonEmpty a)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid (Identity a)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid (First a)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid (Last a)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid (Dual a)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid (Maybe a)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid [a]Defined in genvalidity-1.1.1.0 · Data.GenValidity(Integral a, Num a, Ord a, GenValid a) => GenValid (Ratio a)Defined in genvalidity-1.1.1.0 · Data.GenValidityHasResolution a => GenValid (Fixed a)Defined in genvalidity-1.1.1.0 · Data.GenValidity(GenValid a, GenValid b) => GenValid (Either a b)Defined in genvalidity-1.1.1.0 · Data.GenValidity(GenValid a, GenValid b) => GenValid (a, b)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid (f a) => GenValid (Alt f a)Defined in genvalidity-1.1.1.0 · Data.GenValidityGenValid a => GenValid (Const a b)Defined in genvalidity-1.1.1.0 · Data.GenValidity(GenValid a, GenValid b, GenValid c) => GenValid (a, b, c)Defined in genvalidity-1.1.1.0 · Data.GenValidity(GenValid a, GenValid b, GenValid c, GenValid d) => GenValid (a, b, c, d)Defined in genvalidity-1.1.1.0 · Data.GenValidity(GenValid a, GenValid b, GenValid c, GenValid d, GenValid e) => GenValid (a, b, c, d, e)Defined in genvalidity-1.1.1.0 · Data.GenValidity