package qcheck-core
- 0.91 (2025-12-21)
- 0.90 (2025-12-19)
- 0.27 (2025-10-31)
- 0.26 (2025-07-25)
- 0.25 (2025-04-05)
- 0.24 (2025-02-17)
- 0.23 (2024-12-12)
- 0.22 (2024-07-05)
- 0.21.3 (2023-11-30)
- 0.21.2 (2023-08-25)
- 0.21.1 (2023-05-19)
- 0.21 (2023-05-08)
- 0.20 (2022-11-07)
- 0.19.1 (2022-07-13)
- 0.19 (2022-07-08)
- 0.18.1 (2022-02-03)
- 0.18 (2021-09-03)
- 0.17 (2021-02-15)
- 0.16 (2020-11-04)
- 0.15 (2020-09-06)
- 0.14 (2020-07-30)
- 0.13 (2020-01-24)
- 0.12 (2019-11-08)
- 0.11 (2019-10-02)
- 0.10 (2019-07-15)
- 0.9 (2018-09-18)
- 0.8 (2018-02-03)
- 0.7 (2017-08-21)
- 0.6 (2017-05-29)
- 0.5.3.1 (2017-01-27)
- 0.5.3 (2017-01-25)
- 0.5.2 (2017-01-11)
- 0.5.1 (2017-01-08)
- 0.5 (2016-12-16)
- 0.4 (2015-06-09)
- 0.3 (2014-11-14)
- 0.2 (2013-11-07)
- 0.1 (2013-10-06)
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=ac45753406af93cb77a3c173741e0fe8
sha512=3baa8c04a43db0497891394208c8a6184d603e4fe0ad9d15fddf666e7a628597210874ca85c96022b69c11a99fdd43bbbf0e6211e34ed7d1dea7b1c95bd54316
doc/CHANGELOG.html
Changes
0.91 (2025-12-21)
Add ocamlmig
@@migrateattributes to deprecated combinator names. The following are missing a direct translation:QCheck.Gen.big_natat most 1_000_000 without a direct translation in distributionQCheck.Gen.neg_inta non-uniform generator without a direct translation in distributionQCheck.Gen.int_pos_cornersdeprecated without a replacementQCheck.Gen.int_cornersdeprecated without a replacementQCheck.Gen.shuffle_ais in-place, whereas the replacementQCheck.Gen.shuffle_arrayisn'tQCheck.neg_inta non-uniform generator without a direct translation in distributionQCheck.small_int_cornerswithout a direct translation asint_small_cornersis signedQCheck2.Gen.big_natat most 1_000_000 without a direct translation in distributionQCheck2.Gen.neg_inta non-uniform generator without a direct translation in distributionQCheck2.Gen.small_int_cornerswithout a direct translation asint_small_cornersis signedQCheck2.Gen.int_pos_cornersdeprecated without a replacementQCheck2.Gen.int_cornersdeprecated without a replacement
0.90 (2025-12-19)
- Remove deprecated function generators
QCheck.{fun1_unsafe,fun2_unsafe} Renamed
floatgenerator combinators:- Add
QCheck.Gen.{float_pos, float_neg}and deprecateQCheck.Gen.{pfloat, nfloat} - Add
QCheck.{float_pos, float_neg}and deprecateQCheck.{pos_float, neg_float} - Add
QCheck2.{float_pos, float_neg}and deprecateQCheck2.{pfloat, nfloat} - Add
QCheck.(--.)as a synonym forQCheck.float_rangefor consistency - Add
float_exptoQCheck.Gen,QCheck, andQCheck2.Genand make the existingexponentialbinding a synonym for it
- Add
Renamed
chargenerator combinators:- Add
QCheck.char_rangefor consistency - Add
QCheck.{char_printable,printable}and deprecateQCheck.printable_char - Add
QCheck.{char_numeral,numeral}and deprecateQCheck.numeral_char - Add
QCheck.Gen.char_printableand makeQCheck.Gen.printablean alias for it - Add
QCheck.Gen.char_numeraland makeQCheck.Gen.numeralan alias for it - Add
QCheck2.char_printableand makeQCheck2.printablean alias for it - Add
QCheck2.char_numeraland makeQCheck2.numeralan alias for it
- Add
- Deprecate
QCheck.Gen.optandQCheck2.Gen.optfor consistency Renamed
bytesgenerator combinators:- Add
QCheck.bytes_sizefor consistency - Deprecate
QCheck.bytes_gen_of_sizeandQCheck.bytes_of_size - Removed optional
genparameter fromQCheck.Gen.bytesfor consistency (API breaking): To fix it, replaceGen.bytes ~gen:char_genwithGen.bytes_of char_gen - Added
QCheck.Gen.bytes_size_of,QCheck.bytes_size_of, andQCheck2.Gen.bytes_size_offor consistency
- Add
Renamed
stringgenerator combinators:- Add
QCheck.string_sizefor consistency - Removed optional
genparameter fromQCheck.Gen.stringfor consistency (API breaking): To fix it, replaceGen.string ~gen:char_genwithGen.string_of char_gen - Add
QCheck.Gen.string_size_of,QCheck.string_size_of, andQCheck2.Gen.string_size_offor consistency - Deprecate
QCheck.Gen.small_string,QCheck.small_string, andQCheck2.small_string - Deprecate
QCheck.string_gen_of_size - Deprecate
QCheck.string_gen - Deprecate
QCheck.string_of_size - Deprecate
QCheck.printable_string - Deprecate
QCheck.printable_string_of_size - Deprecate
QCheck.string_printable_of_size - Deprecate
QCheck.small_printable_string - Deprecate
QCheck.string_small_printable - Deprecate
QCheck.numeral_string - Deprecate
QCheck.string_numeral - Deprecate
QCheck.numeral_string_of_size - Deprecate
QCheck.string_numeral_of_size
- Add
Renamed
arraygenerator combinators:- Add
QCheck.Gen.array_smalland deprecateQCheck.Gen.small_array - Add
QCheck2.Gen.array_smalland deprecateQCheck2.Gen.small_array - Add
QCheck.array_smallfor consistency - Add
QCheck.array_sizeand deprecateQCheck.array_of_size - Deprecate badly named
QCheck.Gen.array_repeatandQCheck2.Gen.array_repeat
- Add
Renamed
listgenerator combinators:- Add
QCheck.list_sizeand deprecateQCheck.list_of_size - Add
QCheck.Gen.list_smalland deprecateQCheck.Gen.small_list - Add
QCheck.list_smalland deprecateQCheck.small_list - Add
QCheck2.Gen.list_smalland deprecateQCheck2.Gen.small_list - Deprecate badly named
QCheck.Gen.list_repeatandQCheck2.Gen.list_repeat
- Add
Renamed
intgenerator combinators:- Add
QCheck.Gen.int_smalland deprecateQCheck.Gen.small_signed_int - Add
QCheck.int_smalland deprecateQCheck.small_signed_int - Add
QCheck2.Gen.int_smalland deprecateQCheck2.Gen.small_signed_int - Add
QCheck.Gen.int_posand deprecateQCheck.Gen.pint - Add
QCheck2.Gen.int_poswithout optionaloriginand deprecateQCheck2.Gen.pint - Add uniformly distributed
QCheck.Gen.int_negand deprecate non-uniformQCheck.Gen.neg_int - Add uniformly distributed
QCheck.int_negand deprecate non-uniformQCheck.neg_int - Add uniformly distributed
QCheck2.Gen.int_negand deprecate non-uniformQCheck2.Gen.neg_int - Add
QCheck.Gen.int_small_corners - Add
QCheck.int_small_corners, expandQCheck.Gen.int_corners, and deprecate unsignedQCheck.small_int_corners - Add
QCheck2.Gen.int_small_corners, expandQCheck2.Gen.int_corners, and deprecate (unsigned)QCheck2.Gen.small_int_corners - Deprecate unused
QCheck.Gen.big_nat - Deprecate unused
QCheck2.Gen.big_nat - Add missing
QCheck.nat - Add
QCheck.Gen.int_pos_smalland aliasQCheck.Gen.nat_smalland deprecateQCheck.Gen.small_nat - Add
QCheck.int_pos_smalland aliasQCheck.nat_smalland deprecateQCheck2.Gen.small_nat - Add
QCheck2.Gen.int_pos_smalland aliasQCheck2.Gen.nat_smalland deprecateQCheck2.Gen.small_nat - Add
QCheck.Gen.int_pos_midalias forQCheck.Gen.nat - Add
QCheck.int_pos_midalias forQCheck.nat - Add
QCheck2.Gen.int_pos_midand aliasQCheck2.Gen.nat_mid
- Add
Renamed monadic and applicative generator combinators:
- Add missing
QCheck.Gen.bindfor consistency - Add missing
QCheck.Gen.apfor consistency
- Add missing
Renamed
flattencombinators:- Add
QCheck.Gen.flatten_listand deprecateQCheck.Gen.flatten_l - Add
QCheck.Gen.flatten_arrayand deprecateQCheck.Gen.flatten_a - Add
QCheck.Gen.flatten_optionand deprecateQCheck.Gen.flatten_opt - Add
QCheck.Gen.flatten_resultand deprecateQCheck.Gen.flatten_res - Add
QCheck2.Gen.flatten_listand deprecateQCheck2.Gen.flatten_l - Add
QCheck2.Gen.flatten_arrayand deprecateQCheck2.Gen.flatten_a - Add
QCheck2.Gen.flatten_optionand deprecateQCheck2.Gen.flatten_opt - Add
QCheck2.Gen.flatten_resultand deprecateQCheck2.Gen.flatten_res
- Add
Renamed
shufflecombinators:- Add
QCheck.Gen.shuffle_arrayand deprecate in-placeQCheck.Gen_shuffle_a - Add
QCheck.Gen.shuffle_listand deprecateQCheck.Gen_shuffle_l - Add
QCheck.Gen.shuffle_list_weightedand deprecateQCheck.Gen_shuffle_w_l - Add
QCheck2.Gen.shuffle_arrayand deprecateQCheck2.Gen_shuffle_a - Add
QCheck2.Gen.shuffle_listand deprecateQCheck2.Gen_shuffle_l - Add
QCheck2.Gen.shuffle_list_weightedand deprecateQCheck2.Gen_shuffle_w_l
- Add
Renamed
oneofcombinators:- Add
QCheck.Gen.oneof_listand deprecateQCheck.Gen.oneofl - Add
QCheck.Gen.oneof_arrayand deprecateQCheck.Gen.oneofa - Add
QCheck.oneof_listand deprecateQCheck.oneofl - Add
QCheck.oneof_arrayand deprecateQCheck.oneofa - Un-deprecate
QCheck.oneofwith a better specification and optional parameters likeQCheck.oneof_weightedand deprecateQCheck.choosefor consistency - Add
QCheck2.Gen.oneof_listand deprecateQCheck2.Gen.oneofl - Add
QCheck2.Gen.oneof_arrayand deprecateQCheck2.Gen.oneofa
- Add
Renamed
frequencycombinators:- Add
QCheck.Gen.oneof_weightedand deprecateQCheck.Gen.frequency - Add
QCheck.Gen.oneof_list_weightedand deprecateQCheck.Gen.frequencyl - Add
QCheck.Gen.oneof_array_weightedand deprecateQCheck.Gen.frequencya - Add
QCheck.oneof_weightedand deprecateQCheck.frequency - Add
QCheck.oneof_list_weightedand deprecateQCheck.frequency_list - Add
QCheck.oneof_array_weightedand deprecateQCheck.frequency_array - Add
QCheck2.Gen.oneof_weightedand deprecateQCheck2.Gen.frequency - Add
QCheck2.Gen.oneof_list_weightedand deprecateQCheck2.Gen.frequencyl - Add
QCheck2.Gen.oneof_array_weightedand deprecateQCheck2.Gen.frequencya
- Add
- Add missing
QCheck2.Gen.map_keep_inputfor consistency - Add
QCheck.no_shrinkfor consistency - Fix shrinking for
QCheck2.Gen.exponentialwhich could shrink toinfinity - Remove deprecation annotations for
QCheck.Test.{get,set}*helpers - Remove deprecation annotation for
QCheck2.Gen.add_shrink_invariant Renamed
cornersbindings- Deprecate
QCheck.Gen.int_cornersandQCheck.Gen.int_pos_corners - Deprecate
QCheck2.Gen.int_cornersandQCheck2.Gen.int_pos_corners
- Deprecate
0.27 (2025-10-31)
- Add
QCheck.Shrink.floatand enable shrinking forQCheck.float - Add
QCheck.Shrink.float_boundand enable shrinking forQCheck.float_bound_inclusiveandQCheck.float_bound_exclusive - Add
QCheck.Shrink.float_rangeand enable shrinking forQCheck.float_range - Enable shrinking for
QCheck.{pos_float,neg_float,exponential} - Patch
QCheck.Print.floatandQCheck2.Print.floatto print negative nans consistently as "-nan" also on Windows and macOS, and correct documentation forQCheck.{float,pos_float,neg_float}in that they may producenans since #350 from 0.26 - Eta-expand a couple of partial application to compile under OxCaml
0.26 (2025-07-25)
- Align printed
collectstatistics and also add a percentage - Fix
QCheck{,2}.Gen.floatgenerator which would only generate numbers with an exponent between 2^{-21} and 2^22 - Elaborate on
QCheck/QCheck2situation in README - Add a missing
descriptionfield to the *.opam files - Document
Shrinkinvariants in theQCheckmodule - Fix a qcheck-ounit test suite failure on OCaml 5.4, removing a needless extra newline
- Fix QCheck2
float_rangeoperator which would fail on negative bounds - Fix
QCHECK_MSG_INTERVALnot being applied to the first in-progress message
0.25 (2025-04-05)
- Restore
Test.make'smax_failparameter which was accidentally broken in 0.18 - Adjust
statscomputation of average and standard deviation to limit precision loss, print both using scientific notation, and workaround MinGW float printing to also pass expect tests - Fix dune snippets missing a language specifier in README.adoc causing
asciidocto error - Add a note to
QCheck{,2.Gen}.small_int_cornersandQCheck{,2}.Gen.graft_cornersabout internal state, and fix a range of documentation reference warnings - Reorganize and polish the
README, rewrite it to useqcheck-core, and add aQCheck2integrated shrinking example - Document
QCHECK_MSG_INTERVALintroduced in 0.20 - Add
QCheck{,2}.Gen.map{4,5}combinators - [ppx_deriving_qcheck] Support
ppxlib.0.36.0based on the OCaml 5.2 AST
0.24 (2025-02-17)
- [qcheck-alcotest] Add an optional
speed_levelparameter toto_alcotest - Adjust the
QCheck2.Gen.listshrinker to produce minimal counterexamples at size 3 too - Replace the
QCheck2OCaml 4Random.State.splithack with a faster one - Improve the
QCheck2.Gen.listshrinker heuristic and utilize the improved shrinker in otherQCheck2{list,array,bytes,string,function}*shrinkers - Use
splitandcopyinRandom.StateunderlyingQCheck2to avoid non-deterministic shrinking behaviour - Add missing documentation strings for
QCheck.{Print,Iter,Shrink,Gen}andQCheck2.Gen. - Add
resultcombinators toQCheck,QCheck.{Gen,Print,Shrink,Observable}, andQCheck2.{Gen,Print,Observable}. - Add missing combinators
QCheck{,2}.Print.int{32,64},QCheck.Gen.int{32,64},QCheck{,2}.Observable.int{32,64}, and deprecateQCheck.Gen.{ui32,ui64} - Document
duneusage in README
0.23 (2024-12-12)
- Quote and escape in
Print.stringandPrint.charin theQCheckmodule, mirroring theQCheck2.Printmodule's behaviour. Also quote and escapePrint.bytesin bothQCheckandQCheck2. - Clean-up
QCheckandQCheck2documentation pages - Add
exponentialgenerator toQCheck,QCheck.Gen, andQCheck2.Gen - Add
Shrink.booland use it inQCheck.bool - Remove unread
fun_genfield fromQCheck2'sfun_repr_tbltype thereby silencing a compiler warning
0.22 (2024-07-05)
- Remove
QCheck2.TestResult.get_instancesas retaining previous test inputs cause memory leaks - Make
QCheck2.state.resimmutable, silencing a compilation warning
0.21.3 (2023-11-30)
- Drop the dependency on
base-bytesas it is provided in all supported versions of the OCaml compiler
0.21.2 (2023-08-25)
- Reintroduce the
Shrink.list_spinefix by catchingInvalid_argumentand falling back on an address comparison. - Fix #273 by lowering
ppx_deriving_qcheck'sqcheckdependency toqcheck-core
0.21.1 (2023-05-19)
- Roll back the
Shrink.list_spinefix, as it was utilizing polymorphic equality that can raise an exception on function comparison.
0.21 (2023-05-08)
- make
Test.check_result,Test.check_cell_exn, andTest.check_exnhonor test polarity by raisingTest_unexpected_successwhen a negative test (expected to have a counter example), unexpectedly succeeds. - fix issue with
ppx_deriving_qcheckderiving a generator with unboundgenfor 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_spinewould emit duplicates
0.20 (2022-11-07)
add several new
bytescombinators:{QCheck,QCheck2}.Gen.{bytes_size,bytes,bytes_of,bytes_printable,bytes_small,bytes_small_of}QCheck.{Print,Shrink,Observable}.bytesQCheck2.{Print,Shrink}.bytesQCheck.{bytes_gen_of_size,bytes_of,bytes,bytes_small,bytes_small_of,bytes_of_size,bytes_printable}
add new
stringcombinators 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_stringcharacter 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_shrinkto modify the generator's shrinker - add
QCheck2.Gen.no_shrinkto build a generator with no shrinking - add an environment variable
QCHECK_MSG_INTERVALto controlQCheck_base_runner.time_between_msg - fix unknown option error message referring to
qtest
0.19.1 (2022-07-13)
- fix: allow
~countinTest.maketo be 0 - fix: allow
~long_factorinTest.maketo be 0
0.19 (2022-07-08)
- use
Float.equalfor comparingfloats in theObservablemodule underlying function generators. - add optional
debug_shrinkparameters in alcotest interface and expose defaultdebug_shrinking_choicesin test runners - add missing
?handlerparameter toTest.check_cell_exn - remove
--no-bufferoption ondune runtestto avoid garbling the test output - add an option
retriesparameter toTest.makeet al. for checking a property repeatedly while shrinking. This can be useful when testing non-deterministic code. #212 - add
tup2totup9for generators - add
Test.make_negfor negative property-based tests, that are expected not to satisfy the tested property. - rename
Gen.opttoGen.optionbut 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.printablewhich 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_numeralandShrink.char_printable - add shrinking for
char arbitraryschar,printable_char, andnumeral_char
documentation updates:
- clarify upper bound inclusion in
Gen.int_boundandGen.int_range - clarify
printable_charandGen.printabledistributions - add missing
string_gen_of_sizeandsmall_printable_stringdocumentation - document
QCheck_alcotest.to_alcotest - fix documented size distribution for
arbitrarygeneratorsstring_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.printableandprintable_char - fix documentation for the shrinking behaviour of
QCheck2.printable
- clarify upper bound inclusion in
- add environment variable
QCHECK_LONG_FACTORsimilar toQCHECK_COUNT#220 - make test suite run on 32-bit architectures
0.18.1 (2022-02-03)
- fix
Gen.{nat,pos}_split{2,} - fix stack overflow in #156
0.18 (2021-09-03)
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.tabstract and add missing getters - deprecate
QCheck.oneof - deprecate
Gen.string_readablein 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
?ratiotoopt, to modify random distribution of options
0.17 (2021-02-15)
- new function:
Gen.delay - install printer for an internal exception
- fix(runner): use random state independently for each test
- Fixes distribution and
min_intissues - doc: point to @jmid 's website
0.16 (2020-11-04)
- fix(runner): detect more failures in the runner
- fix: catch exceptions in generators and log them. (#99)
- test: add test for #99
- fix doc
0.15 (2020-09-06)
- fix: in main runner, remove reset line in more places if
colors=false - fix: invalid arg in
int_rangewhen a<0 - fix(runner): do not use ansi code for random seed if
colors=false - feat: on
>=4.08, provide let operators
0.14 (2020-07-30)
- modify
int_rangeto 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
0.13 (2020-01-24)
- make counter private
- Add debug shrinking log
- fix: small fix related to stdlib/pervasives
- feat: add flatten combinators in
gen
0.12 (2019-11-08)
- fix singleton list shrinking
- feat: add
Gen.char_rangeandGen.(<$>)(credit @spewspews)
0.11 (2019-10-02)
- Add
QCheck.Gen.{string_of,string_readable} - fix
int_boundbound inclusiveness problem - change implementation of
int_boundto generate values usingRandom.State.intforbound < 2^30 - add weighted shuffled lists generator
- add
float_rangeto generate a floating-point number in the given range (inclusive) - add
float_bound_inclusiveandfloat_bound_exclusiveto generate floating-point numbers between 0 and a given bound
0.10 (2019-07-15)
Shrink: decompose Shrink.list into Shrink.list_spine and Shrink.list_elemsGen.fixhas a more general and useful type- update README to include
Relysection (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
0.9 (2018-09-18)
- add
qcheck-ounitsublibrary - use environment variables to configure
qcheck-alcotesttests - alcotest backend for qcheck
- make
qcheck.ounittests verbose by default - make
qcheckis a compatibility library, depends onqcheck-core - split lib into
qcheckandqcheck.ounit - add
TestResult.is_successhelper - give access to list of instances in test results
- allow setting
time_between_msgin runner - chore: remove submodule
- chore: add travis support
- doc: explanations about qcheck.ounit runners
- doc: update readme
0.8 (2018-02-03)
- migrate to jbuilder
- fix warnings
- add some useful functions
- update oasis files (close #48)
- update copyright header (closes #47)
0.7 (2017-08-21)
- 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_aggressiveand 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
0.6 (2017-05-29)
- add
find_exampleandfind_example_gento synthesize values from properties (see #31) - add
QCheck.genfor accessing the random generator easily - colorful runners, with
--no-colorsto disable them - add more generator (for corner cases)
- better generation of random functions (see #8), using
Observableand 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
0.5.3.1 (2017-01-27)
- fix regression in runner output (print results of
collect) - update the
@sincetags
0.5.3 (2017-01-25)
- missing char in
Gen.char(close #23) - add
testanddocto opam - add
small_listgenerator - add
~long_factorto tests and runner, for long tests - add more examples in readme, better doc for runners
- improved reporting when running qcheck tests
- add
Test.get_counton test cells
0.5.2 (2017-01-11)
- 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_inta 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
lengthspecification forto_ounit2_test - Added paragraph in README about long tests
0.5.1 (2017-01-08)
- document exceptions
- add
small_nat, changesmall_intsemantics (close #10) - add
QCheck.assume_fail - add
QCheck.assume; explain preconditions a bit (close #9) - Polish documentation
- Added quad support uniformly
0.5 (2016-12-16)
- merge back from
qtest: big changes in API, shrinking, use'a arbitrarytype that combines printer, generator, shrinker, etc. (see git log) - merlin file
- reorganize sources,
_oasis,.merlin, etc.
0.4 (2015-06-09)
- 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.nameoptional Arbitrary.fix_fuel(_gen): add a recursive caseArbitrary.fix_fuel_gen, similar tofix_fuelbut threading a state bottom-up to make choices depend on the pathArbitrary.fail_fixto fail in a fixpoint- helper cases for
Arbitrary.fix_fuel
0.3 (2014-11-14)
- 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
0.2 (2013-11-07)
- integrate Gabriel Scherer's
GeneratorintoQCheck - add
||| - add
Prop.raises - print the faulty instance in case of error (if a printer is available)
- some combinators for
QCheck.Arbitrary QCheck.mk_testtakes more arguments
0.1 (2013-10-06)
- oasis based build system
- source files
- 0.91 (2025-12-21)
- 0.90 (2025-12-19)
- 0.27 (2025-10-31)
- 0.26 (2025-07-25)
- 0.25 (2025-04-05)
- 0.24 (2025-02-17)
- 0.23 (2024-12-12)
- 0.22 (2024-07-05)
- 0.21.3 (2023-11-30)
- 0.21.2 (2023-08-25)
- 0.21.1 (2023-05-19)
- 0.21 (2023-05-08)
- 0.20 (2022-11-07)
- 0.19.1 (2022-07-13)
- 0.19 (2022-07-08)
- 0.18.1 (2022-02-03)
- 0.18 (2021-09-03)
- 0.17 (2021-02-15)
- 0.16 (2020-11-04)
- 0.15 (2020-09-06)
- 0.14 (2020-07-30)
- 0.13 (2020-01-24)
- 0.12 (2019-11-08)
- 0.11 (2019-10-02)
- 0.10 (2019-07-15)
- 0.9 (2018-09-18)
- 0.8 (2018-02-03)
- 0.7 (2017-08-21)
- 0.6 (2017-05-29)
- 0.5.3.1 (2017-01-27)
- 0.5.3 (2017-01-25)
- 0.5.2 (2017-01-11)
- 0.5.1 (2017-01-08)
- 0.5 (2016-12-16)
- 0.4 (2015-06-09)
- 0.3 (2014-11-14)
- 0.2 (2013-11-07)
- 0.1 (2013-10-06)