- ...
- Quote and escape in
Print.string
andPrint.char
in theQCheck
module, mirroring theQCheck2.Print
module's behaviour. Also quote and escapePrint.bytes
in bothQCheck
andQCheck2
. - Clean-up
QCheck
andQCheck2
documentation pages - Add
exponential
generator toQCheck
,QCheck.Gen
, andQCheck2.Gen
- Add
Shrink.bool
and use it inQCheck.bool
- Remove unread
fun_gen
field fromQCheck2
'sfun_repr_tbl
type thereby silencing a compiler warning
- Remove
QCheck2.TestResult.get_instances
as retaining previous test inputs cause memory leaks - Make
QCheck2.state.res
immutable, silencing a compilation warning
- Drop the dependency on
base-bytes
as it is provided in all supported versions of the OCaml compiler
- Reintroduce the
Shrink.list_spine
fix by catchingInvalid_argument
and falling back on an address comparison. - Fix #273 by lowering
ppx_deriving_qcheck
'sqcheck
dependency toqcheck-core
- Roll back the
Shrink.list_spine
fix, as it was utilizing polymorphic equality that can raise an exception on function comparison.
- make
Test.check_result
,Test.check_cell_exn
, andTest.check_exn
honor test polarity by raisingTest_unexpected_success
when a negative test (expected to have a counter example), unexpectedly succeeds. - fix issue with
ppx_deriving_qcheck
deriving a generator with unboundgen
for recursive types #269 and a related issue when deriving a generator for a record type - fix #241 causing
QCheck.Shrink.int*
to emit duplicates, also affectingQCheck.Shrink.{char,string}
- fix a cornercase where
Shrink.list_spine
would emit duplicates
- add several new
bytes
combinators:{QCheck,QCheck2}.Gen.{bytes_size,bytes,bytes_of,bytes_printable,bytes_small,bytes_small_of}
QCheck.{Print,Shrink,Observable}.bytes
QCheck2.{Print,Shrink}.bytes
QCheck.{bytes_gen_of_size,bytes_of,bytes,bytes_small,bytes_small_of,bytes_of_size,bytes_printable}
- add new
string
combinators and aliases:{QCheck,QCheck2}.Gen.{string_small,string_small_of}
QCheck.{string_small,string_small_of,string_of,string_printable,string_printable_of_size,string_small_printable,string_numeral,string_numeral_of_size}
- (
QCheck2.small_string
character generator argument is no more optional - reverted again due to backwards incompatibility) - add an optional argument with conservative default to
Shrink.string
- fix shrinkers in
QCheck.{printable_string,printable_string_of_size,small_printable_string,numeral_string,numeral_string_of_size}
#257 - add
QCheck2.Gen.set_shrink
to modify the generator's shrinker - add
QCheck2.Gen.no_shrink
to build a generator with no shrinking - add an environment variable
QCHECK_MSG_INTERVAL
to controlQCheck_base_runner.time_between_msg
- fix unknown option error message referring to
qtest
- fix: allow
~count
inTest.make
to be 0 - fix: allow
~long_factor
inTest.make
to be 0
-
use
Float.equal
for comparingfloat
s in theObservable
module underlying function generators. -
add optional
debug_shrink
parameters in alcotest interface and expose defaultdebug_shrinking_choices
in test runners -
add missing
?handler
parameter toTest.check_cell_exn
-
remove
--no-buffer
option ondune runtest
to avoid garbling the test output -
add an option
retries
parameter toTest.make
et al. for checking a property repeatedly while shrinking. This can be useful when testing non-deterministic code. #212 -
add
tup2
totup9
for generators -
add
Test.make_neg
for negative property-based tests, that are expected not to satisfy the tested property. -
rename
Gen.opt
toGen.option
but keep the old binding for compatibility. -
add additional expect and unit tests and refactor expect test suite
-
fix function generation affecting reproducability #236
-
add a shrinker performance benchmark #177
-
fix distribution of
QCheck2.printable
which would omit certain characters -
shrinker changes
- recursive list shrinker with better complexity
- string shrinker reuses improved list shrinker and adds char shrinking
- function shrinker now shrinks default entry first and benefits from list shrinker improvements
- replacing the linear-time char shrinker with a faster one reusing the bisecting int shrinker algorithm
- add
Shrink.char_numeral
andShrink.char_printable
- add shrinking for
char arbitrary
schar
,printable_char
, andnumeral_char
-
documentation updates:
- clarify upper bound inclusion in
Gen.int_bound
andGen.int_range
- clarify
printable_char
andGen.printable
distributions - add missing
string_gen_of_size
andsmall_printable_string
documentation - document
QCheck_alcotest.to_alcotest
- fix documented size distribution for
arbitrary
generatorsstring_gen
,string
,printable_string
,numeral_string
,list
, andarray
- fix exception documentation for
check_result
,check_cell_exn
, andcheck_exn
- fix documentation for the distribution of
Gen.printable
andprintable_char
- fix documentation for the shrinking behaviour of
QCheck2.printable
- clarify upper bound inclusion in
-
add environment variable
QCHECK_LONG_FACTOR
similar toQCHECK_COUNT
#220 -
make test suite run on 32-bit architectures
- fix
Gen.{nat,pos}_split{2,}
- fix stack overflow in #156
This releases marks the addition of QCheck2
, a module where generation
and shrinking are better integrated.
See #109 and #116.
This API is still experimental. The normal QCheck
module is still there
and hasn't changed much.
deprecations and breakges:
- make
QCheck.Test_result.t
abstract and add missing getters - deprecate
QCheck.oneof
- deprecate
Gen.string_readable
in favor ofGen.(string_of char)
or the newGen.string_printable
- require at least OCaml 4.08
other changes:
- unsigned int32 and int64
- rename
small_int_corners
- add
?ratio
toopt
, to modify random distribution of options
-
new function:
Gen.delay
-
install printer for an internal exception
-
fix(runner): use random state independently for each test
-
Fixes distribution and
min_int
issues -
doc: point to @jmid 's website
- fix(runner): detect more failures in the runner
- fix: catch exceptions in generators and log them. (#99)
- test: add test for #99
- fix doc
- fix: in main runner, remove reset line in more places if
colors=false
- fix: invalid arg in
int_range
when a<0 - fix(runner): do not use ansi code for random seed if
colors=false
- feat: on
>=4.08
, provide let operators
- modify
int_range
to make it accept ranges bigger thanmax_int
. - less newline-verbose stats
- add
int{32,64}
shrinkers to arbitrary gens - add
int{32,int64}
shrinkers - move to ounit2 for
QCheck_ounit
- make counter private
- Add debug shrinking log
- fix: small fix related to stdlib/pervasives
- feat: add flatten combinators in
gen
- fix singleton list shrinking
- feat: add
Gen.char_range
andGen.(<$>)
(credit @spewspews)
- Add
QCheck.Gen.{string_of,string_readable}
- fix
int_bound
bound inclusiveness problem - change implementation of
int_bound
to generate values usingRandom.State.int
forbound < 2^30
- add weighted shuffled lists generator
- add
float_range
to generate a floating-point number in the given range (inclusive) - add
float_bound_inclusive
andfloat_bound_exclusive
to generate floating-point numbers between 0 and a given bound
Shrink
: decompose Shrink.list into Shrink.list_spine and Shrink.list_elemsGen.fix
has a more general and useful type- update README to include
Rely
section (qcheck now available for reason-native!) - Fix stat printing
- speed-up list shrinker
- Better int shrinking
- core: modify proba distributions again, add
big_nat
- feat: add
small_array
, modify distributions - print number of warnings in runner's summary
- refactor: modify type of results to make them more accurate
- feat: warn/fail if too many tests passed only b/c precondition failed
-
add
qcheck-ounit
sublibrary -
use environment variables to configure
qcheck-alcotest
tests -
alcotest backend for qcheck
-
make
qcheck.ounit
tests verbose by default -
make
qcheck
is a compatibility library, depends onqcheck-core
-
split lib into
qcheck
andqcheck.ounit
-
add
TestResult.is_success
helper -
give access to list of instances in test results
-
allow setting
time_between_msg
in runner -
chore: remove submodule
-
chore: add travis support
-
doc: explanations about qcheck.ounit runners
-
doc: update readme
- migrate to jbuilder
- fix warnings
- add some useful functions
- update oasis files (close #48)
- update copyright header (closes #47)
-
switch to BSD license, make it more explicit (close #43)
-
improve multi-line message printing in ounit (closes #46)
-
fix complexity of
add_stat
-
allow negative entries in statistics (see #40)
-
add a way for tests to report messages to the user (see #39)
-
add
QCheck.Shrink.int_aggressive
and make default int shrinker faster -
shrinker for
map_keep_input
-
add
QCheck.set_gen
, missing for some reason -
more compact verbose output (see #33)
-
better handling of dynamic progress line
-
Add colors to checkmarks in verbose mode
-
improve statistics display for runner
-
recover exception of shrunk input
-
print status line before the solving starts
-
add
find_example
andfind_example_gen
to synthesize values from properties (see #31) -
add
QCheck.gen
for accessing the random generator easily -
colorful runners, with
--no-colors
to disable them -
add more generator (for corner cases)
-
better generation of random functions (see #8), using
Observable
and an efficient internal representation using heterogeneous tuples, printing, and shrinking. deprecate old hacks. -
add statistics gathering and display (see #30)
-
better printing of Tuple
-
improve
Shrink.{array,list}
(see #32) -
Change asserts to raise
Invalid_arg
(following the doc), and update doc -
Change
Gen.{int_bount,int_range}
to support up to 2^62
- fix regression in runner output (print results of
collect
) - update the
@since
tags
- missing char in
Gen.char
(close #23) - add
test
anddoc
to opam - add
small_list
generator - add
~long_factor
to tests and runner, for long tests - add more examples in readme, better doc for runners
- improved reporting when running qcheck tests
- add
Test.get_count
on test cells
- Add cli option for backtraces in
QCheck_runner
- Add test case for raising exception
- Better handling of backtraces
- All tests now have a name
- Add step function called on each instance in a test
- make
small_int
a deprecated alias tosmall_nat
- add
small_signed_int
- remove some warnings
- use safe-string, and fix related bug
- Add long tests options to
QCheck_runner
- Add
length
specification forto_ounit2_test
- Added paragraph in README about long tests
- document exceptions
- add
small_nat
, changesmall_int
semantics (close #10) - add
QCheck.assume_fail
- add
QCheck.assume
; explain preconditions a bit (close #9) - Polish documentation
- Added quad support uniformly
- merge back from
qtest
: big changes in API, shrinking, use'a arbitrary
type that combines printer, generator, shrinker, etc. (see git log) - merlin file
- reorganize sources,
_oasis
,.merlin
, etc.
-
bugfix in
fix_fuel
-
if verbose enabled, print each test case
-
add
QCheck.run_main
-
QCheck_ounit.~::
-
add
(>:::)
-
add
qcheck_ounit ml{lib,dylib}
-
trivial ounit integration
-
make
test_cell.name
optional -
Arbitrary.fix_fuel(_gen)
: add a recursive case -
Arbitrary.fix_fuel_gen
, similar tofix_fuel
but threading a state bottom-up to make choices depend on the path -
Arbitrary.fail_fix
to fail in a fixpoint -
helper cases for
Arbitrary.fix_fuel
- get rid of submodule
generator
Arbitrary.fix_fuel
, to generate complex recursive structures- new combinators (infix map, applicative funs, shuffle)
- remove generator/Generator, and a deprecation warning
- output of printers of lists/arrays now parsable by ocaml toplevel
- integrate Gabriel Scherer's
Generator
intoQCheck
- add
|||
- add
Prop.raises
- print the faulty instance in case of error (if a printer is available)
- some combinators for
QCheck.Arbitrary
QCheck.mk_test
takes more arguments
- oasis based build system
- source files