This
optional module is part of LeanCheck, a simple enumerative
property-based testing library.
Toy
Eq and
Ord instance for functions.
instance (Listable a, Eq b) => Eq (a -> b) where
(==) = areEqualFor 12
instance (Listable a, Ord b) => Ord (a -> b) where
compare = compareFor 12
This compares functions by testing them for up to 12 different values
of each argument.
Single argument functions are tested 12 times. Two argument functions
are tested 144 times. Three argument functions are tested 1728 times.
At each subsequent argument, number of tests and runtime increases
12-fold.
To customize the number of tests, don't import this and use the above
code changing the
12 value. Keep in mind that this value is
number of tests for
each argument.
Warning: this is only intended to be used in testing modules.
Avoid importing this on modules that are used as libraries as there is
no way to unimport a typeclass instance.