Pythonic library for QuickCheck-style randomized testing and SmallCheck-style exhaustive testing of the same test suite.

## Project description

A library for property-based testing in two different ways:

1. “QuickCheck” - randomly generated inputs

2. “SmallCheck” - exhaustively enumerated inputs

These testing approaches are named for the pioneering Haskell libraries. The two approaches truly shine when used together - once a property is found to be refutable by some probably-huge-and-crazy random input, it is often worth investing the CPU time to find the _smallest_ counterexample.

This library is a brand new work-in-progress (see commit log for dates) with known issues:

• Does not have randomly generated strings just yet.

• No existential quantification yet, but smallcheck does allow it!

• Needs more thorough testing.

• Needs to be able to test that a property always throws an exception.

• Needs lots more combinators.

• Needs one-liner interface rather than checking status of test cases.

## Installation & Usage

(TODO: Describe in more detail. For now, read doublecheck/gen.py and doublecheck/prop.py)

$pip install doublecheck$ python >>> from doublecheck import * >>> ForAll(lambda i: i > 0, PosInts()).quickcheck(100000).status ‘Certain’

## Project details

Uploaded source