Test.QuickCheck
- Package
- purescript-quickcheck
- Repository
- purescript/purescript-quickcheck
This module is a partial port of the Haskell QuickCheck library.
QuickCheck provides a way to write property-based tests.
The Arbitrary and CoArbitrary type classes allow us to create
random data with which we can run our tests. This module provides
instances of both classes for PureScript's core data structures,
as well as functions for writing new instances.
Test suites can use the quickCheck and quickCheckPure functions
to test properties.
For example:
main = quickCheck \n -> n + 1 > n
#quickCheck Source
quickCheck :: forall prop eff. Testable prop => prop -> QC eff UnitTest a property.
This function generates a new random seed, runs 100 tests and prints the test results to the console.
#quickCheck' Source
quickCheck' :: forall prop eff. Testable prop => Int -> prop -> QC eff UnitA variant of the quickCheck function which accepts an extra parameter
representing the number of tests which should be run.
#Testable Source
class Testable prop whereThe Testable class represents testable properties.
A testable property is a function of zero or more Arbitrary arguments,
returning a Boolean or Result.
Testable properties can be passed to the quickCheck function.
Members
Instances
#assertEquals Source
assertEquals :: forall a. Eq a => Show a => a -> a -> ResultSelf-documenting equality assertion
#assertNotEquals Source
assertNotEquals :: forall a. Eq a => Show a => a -> a -> ResultSelf-documenting inequality assertion
Re-exports from Test.QuickCheck.Arbitrary
#Arbitrary Source
class Arbitrary t whereThe Arbitrary class represents those types whose values can be
randomly-generated.
arbitrary uses the Gen monad to express a random generator for
the type t. Combinators in the Test.QuickCheck.Gen
module can be used to construct random generators.
Members
Instances
Arbitrary BooleanArbitrary NumberArbitrary IntArbitrary StringArbitrary CharArbitrary UnitArbitrary Ordering(Arbitrary a) => Arbitrary (Array a)(Coarbitrary a, Arbitrary b) => Arbitrary (a -> b)(Arbitrary a, Arbitrary b) => Arbitrary (Tuple a b)(Arbitrary a) => Arbitrary (Maybe a)(Arbitrary a, Arbitrary b) => Arbitrary (Either a b)(Arbitrary a) => Arbitrary (List a)(Arbitrary a) => Arbitrary (Identity a)(Arbitrary a) => Arbitrary (Lazy a)(Arbitrary (f a), Arbitrary a) => Arbitrary (NonEmpty f a)(Arbitrary a) => Arbitrary (NonEmptyList a)Arbitrary NoArguments(Arbitrary l, ArbitraryGenericSum r) => Arbitrary (Sum l r)(Arbitrary l, Arbitrary r) => Arbitrary (Product l r)(Arbitrary a) => Arbitrary (Constructor s a)(Arbitrary a) => Arbitrary (Argument a)(Arbitrary a) => Arbitrary (Rec a)(Arbitrary a) => Arbitrary (Field s a)
#Coarbitrary Source
class Coarbitrary t whereThe Coarbitrary class represents types which appear on the left of
an Arbitrary function arrow.
To construct an Arbitrary instance for the type a -> b, we need to
use the input of type a to perturb a random generator for b. This
is the role of the coarbitrary function.
Coarbitrary instances can be written using the perturbGen function.
Members
coarbitrary :: forall r. t -> Gen r -> Gen r
Instances
Coarbitrary BooleanCoarbitrary NumberCoarbitrary IntCoarbitrary StringCoarbitrary CharCoarbitrary UnitCoarbitrary Ordering(Coarbitrary a) => Coarbitrary (Array a)(Arbitrary a, Coarbitrary b) => Coarbitrary (a -> b)(Coarbitrary a, Coarbitrary b) => Coarbitrary (Tuple a b)(Coarbitrary a) => Coarbitrary (Maybe a)(Coarbitrary a, Coarbitrary b) => Coarbitrary (Either a b)(Coarbitrary a) => Coarbitrary (List a)(Coarbitrary a) => Coarbitrary (Identity a)(Coarbitrary a) => Coarbitrary (Lazy a)(Coarbitrary (f a), Coarbitrary a) => Coarbitrary (NonEmpty f a)(Coarbitrary a) => Coarbitrary (NonEmptyList a)Coarbitrary NoArguments(Coarbitrary l, Coarbitrary r) => Coarbitrary (Sum l r)(Coarbitrary l, Coarbitrary r) => Coarbitrary (Product l r)(Coarbitrary a) => Coarbitrary (Constructor s a)(Coarbitrary a) => Coarbitrary (Argument a)(Coarbitrary a) => Coarbitrary (Rec a)(Coarbitrary a) => Coarbitrary (Field s a)