Struct quickcheck::QuickCheck
source · pub struct QuickCheck { /* private fields */ }
Expand description
The main QuickCheck type for setting configuration and running QuickCheck.
Implementations§
source§impl QuickCheck
impl QuickCheck
sourcepub fn new() -> QuickCheck
pub fn new() -> QuickCheck
Creates a new QuickCheck value.
This can be used to run QuickCheck on things that implement Testable
.
You may also adjust the configuration, such as the number of tests to
run.
By default, the maximum number of passed tests is set to 100
, the max
number of overall tests is set to 10000
and the generator is created
with a size of 100
.
sourcepub fn gen(self, gen: Gen) -> QuickCheck
pub fn gen(self, gen: Gen) -> QuickCheck
Set the random number generator to be used by QuickCheck.
sourcepub fn tests(self, tests: u64) -> QuickCheck
pub fn tests(self, tests: u64) -> QuickCheck
Set the number of tests to run.
This actually refers to the maximum number of passed tests that
can occur. Namely, if a test causes a failure, future testing on that
property stops. Additionally, if tests are discarded, there may be
fewer than tests
passed.
sourcepub fn max_tests(self, max_tests: u64) -> QuickCheck
pub fn max_tests(self, max_tests: u64) -> QuickCheck
Set the maximum number of tests to run.
The number of invocations of a property will never exceed this number. This is necessary to cap the number of tests because QuickCheck properties can discard tests.
sourcepub fn min_tests_passed(self, min_tests_passed: u64) -> QuickCheck
pub fn min_tests_passed(self, min_tests_passed: u64) -> QuickCheck
Set the minimum number of tests that needs to pass.
This actually refers to the minimum number of valid passed tests that needs to pass for the property to be considered successful.
sourcepub fn quicktest<A>(&mut self, f: A) -> Result<u64, TestResult>where
A: Testable,
pub fn quicktest<A>(&mut self, f: A) -> Result<u64, TestResult>where A: Testable,
Tests a property and returns the result.
The result returned is either the number of tests passed or a witness of failure.
(If you’re using Rust’s unit testing infrastructure, then you’ll
want to use the quickcheck
method, which will panic!
on failure.)
sourcepub fn quickcheck<A>(&mut self, f: A)where
A: Testable,
pub fn quickcheck<A>(&mut self, f: A)where A: Testable,
Tests a property and calls panic!
on failure.
The panic!
message will include a (hopefully) minimal witness of
failure.
It is appropriate to use this method with Rust’s unit testing infrastructure.
Note that if the environment variable RUST_LOG
is set to enable
info
level log messages for the quickcheck
crate, then this will
include output on how many QuickCheck tests were passed.
Example
use quickcheck::QuickCheck;
fn prop_reverse_reverse() {
fn revrev(xs: Vec<usize>) -> bool {
let rev: Vec<_> = xs.clone().into_iter().rev().collect();
let revrev: Vec<_> = rev.into_iter().rev().collect();
xs == revrev
}
QuickCheck::new().quickcheck(revrev as fn(Vec<usize>) -> bool);
}