Releases: c-cube/qcheck
0.26
The 0.26 release adjusts the QCheck and QCheck2 float generator distributions, which was previously confined to a subset of floating point numbers. Users may experience that existing tests known to pass start to fail with the new and broader distribution. In addition the release contains a number of other fixes and documentation improvements, incl. the removal of an annoying newline which would cause the test suite to fail on OCaml 5.4.0:
- 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-ounittest 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
Thanks to @Pat-Lafon, @rmonat, and @kit-ty-kate for contributing! 🙏
0.25
The 0.25 release contains a combination of all-round fixes, documentation, and polishing:
- 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
causingasciidocto error - Add a note to
QCheck{,2.Gen}.small_int_cornersandQCheck{,2}.Gen.graft_corners
about 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
The accompanying ppx_deriving_qcheck.0.7 release offers:
- Support
ppxlib.0.36.0based on the OCaml 5.2 AST
Thanks to @Pat-Lafon and @patricoferris for contributing PRs! 🎉
0.24
This release contains a range of improvements to the integrated shrinking of QCheck2, initially introduced in the 0.18 release.
As a consequence, its shrinking algorithms should act more predictably. The release also adds missing result, int32, and int64 combinators.
The full change log:
- [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
- 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
0.21.3
0.21.2
0.21.1
0.21
This release offers better negative test integration and furthermore fixes a couple of bugs in QCheck.Shrink and in ppx_deriving_qcheck:
- make
Test.check_result,Test.check_cell_exn, andTest.check_exnhonor test polarity by raising
Test_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
This release comes with a few new features and bug fixes, along with several new bytes and string combinators in an attempt to stream-line their names
- 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}
- 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