package qcheck-core
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Core QCheck library
Install
dune-project
Dependency
Authors
Maintainers
Sources
v0.26.tar.gz
md5=3eba3b3b47ccfa48afd1ce7dbdd463f7
sha512=6f4749df32629b2a64034f7a8d07079b8d3d628cc402c52bbdbd7e287ca20adf8e8133f91d79e75d8402100715a1138d62904b2d9c1d1595602d5206e0862305
doc/CHANGELOG.html
Changes
0.26
- 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
- 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
- [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
- Remove
QCheck2.TestResult.get_instancesas retaining previous test inputs cause memory leaks - Make
QCheck2.state.resimmutable, silencing a compilation warning
0.21.3
- Drop the dependency on
base-bytesas it is provided in all supported versions of the OCaml compiler
0.21.2
- 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
- Roll back the
Shrink.list_spinefix, as it was utilizing polymorphic equality that can raise an exception on function comparison.
0.21
- 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
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
- fix: allow
~countinTest.maketo be 0 - fix: allow
~long_factorinTest.maketo be 0
0.19
- 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
- fix
Gen.{nat,pos}_split{2,} - fix stack overflow in #156
0.18
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
- 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
- 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
- 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
- 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
- make counter private
- Add debug shrinking log
- fix: small fix related to stdlib/pervasives
- feat: add flatten combinators in
gen
0.12
- fix singleton list shrinking
- feat: add
Gen.char_rangeandGen.(<$>)(credit @spewspews)
0.11
- 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
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
- 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
- migrate to jbuilder
- fix warnings
- add some useful functions
- update oasis files (close #48)
- update copyright header (closes #47)
0.7
- 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
- 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
- fix regression in runner output (print results of
collect) - update the
@sincetags
0.5.3
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- oasis based build system
- source files
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page