New Upstream Release - ocaml-qcheck
Ready changes
Summary
Merged new upstream version: 0.21.1 (was: 0.20).
Diff
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index f0eef32..dea1dee 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -2,10 +2,10 @@ name: build
on:
push:
branches:
- - master
+ - main
pull_request:
branches:
- - master
+ - main
jobs:
run:
name: Build
@@ -18,10 +18,11 @@ jobs:
ocaml-compiler:
- 4.08.x
- 4.12.x
- - ocaml-base-compiler.5.0.0~beta1
+ - 4.14.x
+ - ocaml-base-compiler.5.0.0
exclude:
- os: windows-latest
- ocaml-compiler: ocaml-base-compiler.5.0.0~beta1
+ ocaml-compiler: ocaml-base-compiler.5.0.0
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 73d809a..2649579 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,22 @@
# Changes
+## 0.21.1
+
+- Roll back the `Shrink.list_spine` fix, as it was utilizing polymorphic
+ equality that can raise an exception on function comparison.
+
+## 0.21
+
+- make `Test.check_result`, `Test.check_cell_exn`, and
+ `Test.check_exn` honor test polarity by raising
+ `Test_unexpected_success` when a negative test (expected to have a
+ counter example), unexpectedly succeeds.
+- fix issue with `ppx_deriving_qcheck` deriving a generator with unbound
+ `gen` for recursive types [#269](https://github.com/c-cube/qcheck/issues/269)
+ and a related issue when deriving a generator for a record type
+- fix #241 causing `QCheck.Shrink.int*` to emit duplicates, also affecting `QCheck.Shrink.{char,string}`
+- fix a cornercase where `Shrink.list_spine` would emit duplicates
+
## 0.20
- add several new `bytes` combinators:
@@ -10,7 +27,7 @@
- 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
+- (`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](https://github.com/c-cube/qcheck/issues/257)
- add `QCheck2.Gen.set_shrink` to modify the generator's shrinker
diff --git a/debian/changelog b/debian/changelog
index 94f5a02..6d75a65 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ocaml-qcheck (0.21.1-1) UNRELEASED; urgency=low
+
+ * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk> Thu, 13 Jul 2023 06:38:50 -0000
+
ocaml-qcheck (0.20-2) unstable; urgency=medium
[ Stéphane Glondu ]
diff --git a/example/output.txt.expected.32 b/example/QCheck_runner_test.expected.ocaml4.32
similarity index 100%
rename from example/output.txt.expected.32
rename to example/QCheck_runner_test.expected.ocaml4.32
diff --git a/example/output.txt.expected.64 b/example/QCheck_runner_test.expected.ocaml4.64
similarity index 100%
rename from example/output.txt.expected.64
rename to example/QCheck_runner_test.expected.ocaml4.64
diff --git a/example/QCheck_runner_test.expected.ocaml5.32 b/example/QCheck_runner_test.expected.ocaml5.32
new file mode 100644
index 0000000..4a96b67
--- /dev/null
+++ b/example/QCheck_runner_test.expected.ocaml5.32
@@ -0,0 +1,333 @@
+random seed: 1234
+
+--- Failure --------------------------------------------------------------------
+
+Test should_fail_sort_id failed (10 shrink steps):
+
+[1; 0]
+
+=== Error ======================================================================
+
+Test should_error_raise_exn errored on (30 shrink steps):
+
+0
+
+exception Dune__exe__QCheck_runner_test.Error
+
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test collect_results:
+
+4: 24 cases
+3: 20 cases
+2: 18 cases
+1: 21 cases
+0: 17 cases
+
++++ Stats for with_stats ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats mod4:
+ num: 100, avg: 1.56, stddev: 1.18, median 2, min 0, max 3
+ 0: ################################################# 27
+ 1: #################################### 20
+ 2: ########################################## 23
+ 3: ####################################################### 30
+
+stats num:
+ num: 100, avg: 62.24, stddev: 33.15, median 62, min 2, max 120
+ 2.. 7: ######### 2
+ 8.. 13: ################################ 7
+ 14.. 19: ########################### 6
+ 20.. 25: ############# 3
+ 26.. 31: ###################### 5
+ 32.. 37: ################## 4
+ 38.. 43: ############# 3
+ 44.. 49: ################################ 7
+ 50.. 55: ################################ 7
+ 56.. 61: ###################### 5
+ 62.. 67: #################################### 8
+ 68.. 73: ######### 2
+ 74.. 79: ###################### 5
+ 80.. 85: ######### 2
+ 86.. 91: ####################################################### 12
+ 92.. 97: ###################### 5
+ 98..103: ################## 4
+ 104..109: ################## 4
+ 110..115: ############# 3
+ 116..121: ########################### 6
+
+--- Failure --------------------------------------------------------------------
+
+Test neg test unexpected success failed:
+
+Negative test neg test unexpected success succeeded but was expected to fail
+
+=== Error ======================================================================
+
+Test neg fail with error errored on (7 shrink steps):
+
+0
+
+exception Dune__exe__QCheck_runner_test.Error
+
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_pred_map_commute failed (47 shrink steps):
+
+([1], {_ -> 0}, {1 -> true; _ -> false})
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_fun2_pred_strings failed (1 shrink steps):
+
+{some other string -> false; _ -> true}
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right failed (21 shrink steps):
+
+(0, [1], {(0, 1) -> 1; _ -> 0})
+
++++ Messages ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Messages for test fold_left fold_right:
+
+l=[1], fold_left=0, fold_right=1
+
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried failed (41 shrink steps):
+
+({(0, 4) -> 1; _ -> 0}, 0, [4])
+
+--- Failure --------------------------------------------------------------------
+
+Test long_shrink failed (86 shrink steps):
+
+([0], [-1])
+
+--- Failure --------------------------------------------------------------------
+
+Test mod3_should_fail failed (26 shrink steps):
+
+2061
+
++++ Stats for stats_neg ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 5000, avg: 0.43, stddev: 28.63, median 0, min -99, max 99
+ -99..-90: # 45
+ -89..-80: # 57
+ -79..-70: # 68
+ -69..-60: # 58
+ -59..-50: # 76
+ -49..-40: # 67
+ -39..-30: # 52
+ -29..-20: # 54
+ -19..-10: # 47
+ -9.. 0: ####################################################### 2205
+ 1.. 10: ########################################## 1697
+ 11.. 20: # 57
+ 21.. 30: # 70
+ 31.. 40: # 60
+ 41.. 50: # 66
+ 51.. 60: # 75
+ 61.. 70: # 68
+ 71.. 80: # 63
+ 81.. 90: # 66
+ 91..100: # 49
+
+!!! Warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Warning for test WARN_unlikely_precond:
+
+WARNING: only 0.5% tests (of 2000) passed precondition for "WARN_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_unlikely_precond failed:
+
+ERROR: only 0.5% tests (of 2000) passed precondition for "FAIL_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_#99_1 failed:
+
+ERROR: uncaught exception in generator for test FAIL_#99_1 after 100 steps:
+Exception: QCheck.No_example_found("<example>")
+Backtrace:
+
++++ Stats for stat_display_test_1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 0.86, stddev: 29.11, median 0, min -97, max 99
+ -97..-88: # 12
+ -87..-78: # 12
+ -77..-68: # 13
+ -67..-58: # 12
+ -57..-48: # 9
+ -47..-38: ## 17
+ -37..-28: # 13
+ -27..-18: # 8
+ -17.. -8: ######### 76
+ -7.. 2: ####################################################### 437
+ 3.. 12: ################################## 276
+ 13.. 22: ## 16
+ 23.. 32: # 11
+ 33.. 42: ## 16
+ 43.. 52: # 9
+ 53.. 62: # 12
+ 63.. 72: # 14
+ 73.. 82: # 12
+ 83.. 92: # 13
+ 93..102: # 12
+
++++ Stats for stat_display_test_2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 15.86, stddev: 24.57, median 6, min 0, max 99
+ 0.. 4: ###################################################### 387
+ 5.. 9: ####################################################### 390
+ 10.. 14: # 11
+ 15.. 19: # 8
+ 20.. 24: # 11
+ 25.. 29: ## 15
+ 30.. 34: # 9
+ 35.. 39: # 11
+ 40.. 44: # 11
+ 45.. 49: ## 19
+ 50.. 54: # 10
+ 55.. 59: ## 19
+ 60.. 64: # 9
+ 65.. 69: # 9
+ 70.. 74: ## 19
+ 75.. 79: # 13
+ 80.. 84: # 11
+ 85.. 89: ## 16
+ 90.. 94: # 9
+ 95.. 99: # 13
+
++++ Stats for stat_display_test_3 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 193479.13, stddev: 136696.70, median 189823, min -43164, max 434961
+ -43164..-19258: ################################### 42
+ -19257.. 4649: ############################################## 56
+ 4650.. 28556: ############################################# 55
+ 28557.. 52463: ############################################### 57
+ 52464.. 76370: ######################################### 50
+ 76371..100277: ############################# 35
+ 100278..124184: ############################################### 57
+ 124185..148091: #################################### 44
+ 148092..171998: ############################################## 56
+ 171999..195905: ####################################################### 66
+ 195906..219812: ########################################### 52
+ 219813..243719: ######################################## 49
+ 243720..267626: ################################ 39
+ 267627..291533: ##################################### 45
+ 291534..315440: ##################################### 45
+ 315441..339347: ################################################# 59
+ 339348..363254: ################################################## 60
+ 363255..387161: ################################# 40
+ 387162..411068: ########################################## 51
+ 411069..434975: ################################### 42
+
++++ Stats for stat_display_test_4 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: -591.06, stddev: 23026.79, median -911, min -39911, max 39959
+ -39911..-35918: ####################################### 45
+ -35917..-31924: #################################################### 59
+ -31923..-27930: ########################################### 49
+ -27929..-23936: ########################################## 48
+ -23935..-19942: ####################################################### 62
+ -19941..-15948: ############################################# 51
+ -15947..-11954: ######################################### 47
+ -11953.. -7960: ################################################# 56
+ -7959.. -3966: ################################### 40
+ -3965.. 28: ################################################### 58
+ 29.. 4022: ########################################### 49
+ 4023.. 8016: ############################################### 53
+ 8017.. 12010: ############################################ 50
+ 12011.. 16004: ################################### 40
+ 16005.. 19998: ####################################### 44
+ 19999.. 23992: ####################################################### 62
+ 23993.. 27986: ##################################### 42
+ 27987.. 31980: ######################################### 47
+ 31981.. 35974: ########################################## 48
+ 35975.. 39968: ############################################ 50
+
++++ Stats for stat_display_test_5 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: -0.12, stddev: 2.52, median 0, min -4, max 4
+ -4: ########################################## 116
+ -3: ###################################### 103
+ -2: ############################################## 125
+ -1: ########################################## 115
+ 0: ####################################### 106
+ 1: ####################################################### 149
+ 2: ################################# 92
+ 3: ################################# 92
+ 4: ##################################### 102
+
++++ Stats for stat_display_test_6 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 6.42, stddev: 6.43, median 6, min -4, max 17
+ -4..-3: ########################################### 89
+ -2..-1: ################################################# 101
+ 0.. 1: ############################################## 95
+ 2.. 3: ########################################### 89
+ 4.. 5: ############################################## 95
+ 6.. 7: ##################################### 78
+ 8.. 9: ####################################### 81
+ 10..11: ######################################## 84
+ 12..13: ####################################################### 113
+ 14..15: ######################################## 84
+ 16..17: ############################################ 91
+ 18..19: 0
+ 20..21: 0
+ 22..23: 0
+ 24..25: 0
+ 26..27: 0
+ 28..29: 0
+ 30..31: 0
+ 32..33: 0
+ 34..35: 0
+
++++ Stats for stat_display_test_7 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 100000, avg: -2481754.31, stddev: 618398387.27, median -5669677, min -1073719962, max 1073717275
+ -1073719962.. -966348101: ##################################################### 4978
+ -966348100.. -858976239: ##################################################### 5008
+ -858976238.. -751604377: #################################################### 4907
+ -751604376.. -644232515: ###################################################### 5037
+ -644232514.. -536860653: ###################################################### 5069
+ -536860652.. -429488791: ###################################################### 5052
+ -429488790.. -322116929: ###################################################### 5035
+ -322116928.. -214745067: ####################################################### 5128
+ -214745066.. -107373205: ##################################################### 5017
+ -107373204.. -1343: ##################################################### 5021
+ -1342.. 107370519: ##################################################### 5010
+ 107370520.. 214742381: ##################################################### 4964
+ 214742382.. 322114243: ##################################################### 4957
+ 322114244.. 429486105: ##################################################### 4994
+ 429486106.. 536857967: ##################################################### 5025
+ 536857968.. 644229829: ###################################################### 5047
+ 644229830.. 751601691: ##################################################### 4988
+ 751601692.. 858973553: #################################################### 4924
+ 858973554.. 966345415: #################################################### 4852
+ 966345416.. 1073717277: ##################################################### 4987
+================================================================================
+1 warning(s)
+failure (10 tests failed, 2 tests errored, ran 28 tests)
diff --git a/example/output.txt.expected.ocaml5 b/example/QCheck_runner_test.expected.ocaml5.64
similarity index 100%
rename from example/output.txt.expected.ocaml5
rename to example/QCheck_runner_test.expected.ocaml5.64
diff --git a/example/alcotest/output.txt.expected.32 b/example/alcotest/QCheck_alcotest_test.expected.ocaml4.32
similarity index 97%
rename from example/alcotest/output.txt.expected.32
rename to example/alcotest/QCheck_alcotest_test.expected.ocaml4.32
index 634312a..d6f2301 100644
--- a/example/alcotest/output.txt.expected.32
+++ b/example/alcotest/QCheck_alcotest_test.expected.ocaml4.32
@@ -29,8 +29,7 @@ on `0 (after 31 shrink steps)`
│ [FAIL] suite 4 neg test unexpected success. │
└──────────────────────────────────────────────────────────────────────────────┘
negative test 'neg test unexpected success' succeeded unexpectedly
-ASSERT negative test 'neg test unexpected success' succeeded unexpectedly
-FAIL negative test 'neg test unexpected success' succeeded unexpectedly
+[exception] negative test `neg test unexpected success` succeeded unexpectedly
──────────────────────────────────────────────────────────────────────────────
┌──────────────────────────────────────────────────────────────────────────────┐
│ [FAIL] suite 5 neg fail with error. │
diff --git a/example/alcotest/output.txt.expected.64 b/example/alcotest/QCheck_alcotest_test.expected.ocaml4.64
similarity index 97%
rename from example/alcotest/output.txt.expected.64
rename to example/alcotest/QCheck_alcotest_test.expected.ocaml4.64
index ea706c7..5ab8c71 100644
--- a/example/alcotest/output.txt.expected.64
+++ b/example/alcotest/QCheck_alcotest_test.expected.ocaml4.64
@@ -29,8 +29,7 @@ on `0 (after 63 shrink steps)`
│ [FAIL] suite 4 neg test unexpected success. │
└──────────────────────────────────────────────────────────────────────────────┘
negative test 'neg test unexpected success' succeeded unexpectedly
-ASSERT negative test 'neg test unexpected success' succeeded unexpectedly
-FAIL negative test 'neg test unexpected success' succeeded unexpectedly
+[exception] negative test `neg test unexpected success` succeeded unexpectedly
──────────────────────────────────────────────────────────────────────────────
┌──────────────────────────────────────────────────────────────────────────────┐
│ [FAIL] suite 5 neg fail with error. │
diff --git a/example/alcotest/QCheck_alcotest_test.expected.ocaml5.32 b/example/alcotest/QCheck_alcotest_test.expected.ocaml5.32
new file mode 100644
index 0000000..a50cc8e
--- /dev/null
+++ b/example/alcotest/QCheck_alcotest_test.expected.ocaml5.32
@@ -0,0 +1,82 @@
+qcheck random seed: 1234
+Testing `my test'.
+ [OK] suite 0 list_rev_is_involutive.
+ [FAIL] suite 1 fail_sort_id.
+ [FAIL] suite 2 error_raise_exn.
+ [OK] suite 3 neg test pass (failing as expected).
+ [FAIL] suite 4 neg test unexpected success.
+ [FAIL] suite 5 neg fail with error.
+ [FAIL] suite 6 fail_check_err_message.
+ [OK] suite 7 tree_rev_is_involutive.
+ [FAIL] shrinking 0 debug_shrink.
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL] suite 1 fail_sort_id. │
+└──────────────────────────────────────────────────────────────────────────────┘
+test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 16 shrink steps)
+[exception] test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 16 shrink steps)
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL] suite 2 error_raise_exn. │
+└──────────────────────────────────────────────────────────────────────────────┘
+test `error_raise_exn`
+raised exception `Error`
+on `0 (after 30 shrink steps)`
+[exception] test `error_raise_exn`
+raised exception `Error`
+on `0 (after 30 shrink steps)`
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL] suite 4 neg test unexpected success. │
+└──────────────────────────────────────────────────────────────────────────────┘
+negative test 'neg test unexpected success' succeeded unexpectedly
+[exception] negative test `neg test unexpected success` succeeded unexpectedly
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL] suite 5 neg fail with error. │
+└──────────────────────────────────────────────────────────────────────────────┘
+test `neg fail with error`
+raised exception `Error`
+on `0 (after 7 shrink steps)`
+[exception] test `neg fail with error`
+raised exception `Error`
+on `0 (after 7 shrink steps)`
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL] suite 6 fail_check_err_message. │
+└──────────────────────────────────────────────────────────────────────────────┘
+test `fail_check_err_message` failed on ≥ 1 cases:
+0 (after 7 shrink steps)
+this
+will
+always
+fail
+[exception] test `fail_check_err_message` failed on ≥ 1 cases:
+0 (after 7 shrink steps)
+this
+will
+always
+fail
+ ──────────────────────────────────────────────────────────────────────────────
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ [FAIL] shrinking 0 debug_shrink. │
+└──────────────────────────────────────────────────────────────────────────────┘
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 0) to:
+(2, 3)
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 1) to:
+(1, 3)
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 2) to:
+(0, 3)
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 3) to:
+(0, 2)
+~~~ Shrink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Test debug_shrink successfully shrunk counter example (step 4) to:
+(0, 1)
+law debug_shrink: 1 relevant cases (1 total)
+test `debug_shrink` failed on ≥ 1 cases: (0, 1) (after 4 shrink steps)
+[exception] test `debug_shrink` failed on ≥ 1 cases: (0, 1) (after 4 shrink steps)
+ ──────────────────────────────────────────────────────────────────────────────
+6 failures! 9 tests run.
diff --git a/example/alcotest/output.txt.expected.ocaml5 b/example/alcotest/QCheck_alcotest_test.expected.ocaml5.64
similarity index 98%
rename from example/alcotest/output.txt.expected.ocaml5
rename to example/alcotest/QCheck_alcotest_test.expected.ocaml5.64
index 23401ac..aaf5db1 100644
--- a/example/alcotest/output.txt.expected.ocaml5
+++ b/example/alcotest/QCheck_alcotest_test.expected.ocaml5.64
@@ -29,8 +29,7 @@ on `0 (after 62 shrink steps)`
│ [FAIL] suite 4 neg test unexpected success. │
└──────────────────────────────────────────────────────────────────────────────┘
negative test 'neg test unexpected success' succeeded unexpectedly
-ASSERT negative test 'neg test unexpected success' succeeded unexpectedly
-FAIL negative test 'neg test unexpected success' succeeded unexpectedly
+[exception] negative test `neg test unexpected success` succeeded unexpectedly
──────────────────────────────────────────────────────────────────────────────
┌──────────────────────────────────────────────────────────────────────────────┐
│ [FAIL] suite 5 neg fail with error. │
diff --git a/example/alcotest/dune b/example/alcotest/dune
index a9114f6..449789f 100644
--- a/example/alcotest/dune
+++ b/example/alcotest/dune
@@ -1,36 +1,36 @@
-(* -*- tuareg -*- *)
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_alcotest_test.expected.ocaml5.64 QCheck_alcotest_test.expected)))
-let suffix =
- try
- let major_version = List.hd (String.split_on_char '.' Sys.ocaml_version) in
- if int_of_string major_version < 5 then string_of_int Sys.word_size else "ocaml5"
- with _ -> failwith ("Unknown OCaml version format: " ^ Sys.ocaml_version)
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_alcotest_test.expected.ocaml5.32 QCheck_alcotest_test.expected)))
-let dune = Printf.sprintf {|
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck_alcotest_test.expected.ocaml4.64 QCheck_alcotest_test.expected)))
+
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck_alcotest_test.expected.ocaml4.32 QCheck_alcotest_test.expected)))
(executable
- (name QCheck_alcotest_test)
- (libraries qcheck-core qcheck-alcotest alcotest))
+ (name QCheck_alcotest_test)
+ (libraries qcheck-core qcheck-alcotest alcotest))
(rule
- (targets output.txt)
- (deps ./QCheck_alcotest_test.exe)
- (enabled_if (= %%{os_type} "Unix"))
- (action
- (with-accepted-exit-codes
- 1
- (setenv
- QCHECK_SEED 1234
- (with-stdout-to
- %%{targets}
- (run ./run_alcotest.sh --color=never))))))
+ (targets QCheck_alcotest_test.output)
+ (deps ./QCheck_alcotest_test.exe)
+ (enabled_if (= %{os_type} "Unix"))
+ (action
+ (with-accepted-exit-codes 1
+ (setenv CI false ; Don't run tests as if Alcotest was run in CI
+ (setenv QCHECK_SEED 1234
+ (with-stdout-to %{targets}
+ (run ./run_alcotest.sh --color=never)))))))
(rule
- (alias runtest)
- (package qcheck-alcotest)
- (enabled_if (= %%{os_type} "Unix"))
- (action (diff output.txt.expected.%s output.txt)))
-
-|} suffix
-
-let () = Jbuild_plugin.V1.send dune
+ (alias runtest)
+ (package qcheck-alcotest)
+ (enabled_if (= %{os_type} "Unix"))
+ (action (diff QCheck_alcotest_test.expected QCheck_alcotest_test.output)))
diff --git a/example/dune b/example/dune
index cb411f4..2c05f77 100644
--- a/example/dune
+++ b/example/dune
@@ -1,34 +1,24 @@
-(* -*- tuareg -*- *)
-
-let suffix =
- try
- let major_version = List.hd (String.split_on_char '.' Sys.ocaml_version) in
- if int_of_string major_version < 5 then string_of_int Sys.word_size else "ocaml5"
- with _ -> failwith ("Unknown OCaml version format: " ^ Sys.ocaml_version)
-
-let dune = Printf.sprintf {|
-
-(executables
- (names QCheck_runner_test)
- (libraries qcheck))
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_runner_test.expected.ocaml5.64 QCheck_runner_test.expected)))
(rule
- (targets output.txt)
- (deps ./QCheck_runner_test.exe)
- (enabled_if (= %%{os_type} "Unix"))
- (action
- (with-accepted-exit-codes
- 1
- (with-stdout-to
- %%{targets}
- (run ./QCheck_runner_test.exe --no-colors -s 1234)))))
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_runner_test.expected.ocaml5.32 QCheck_runner_test.expected)))
(rule
- (alias runtest)
- (enabled_if (= %%{os_type} "Unix"))
- (package qcheck)
- (action (diff output.txt.expected.%s output.txt)))
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck_runner_test.expected.ocaml4.64 QCheck_runner_test.expected)))
-|} suffix
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck_runner_test.expected.ocaml4.32 QCheck_runner_test.expected)))
-let () = Jbuild_plugin.V1.send dune
+;; implicitly compared against QCheck_runner_test.expected
+(test
+ (enabled_if (= %{os_type} "Unix"))
+ (name QCheck_runner_test)
+ (modules QCheck_runner_test)
+ (package qcheck)
+ (libraries qcheck)
+ (action (with-accepted-exit-codes 1 (run ./%{test} --no-colors -s 1234))))
diff --git a/example/ounit/output.txt.expected.32 b/example/ounit/QCheck_ounit_test.expected.ocaml4.32
similarity index 92%
rename from example/ounit/output.txt.expected.32
rename to example/ounit/QCheck_ounit_test.expected.ocaml4.32
index 0ead3a2..815be7c 100644
--- a/example/ounit/output.txt.expected.32
+++ b/example/ounit/QCheck_ounit_test.expected.ocaml4.32
@@ -25,7 +25,6 @@ Error: tests:6:fail_check_err_message.
Error: tests:6:fail_check_err_message (in the log).
-Error: tests:6:fail_check_err_message (in the code).
test `fail_check_err_message` failed on ≥ 1 cases:
@@ -43,7 +42,6 @@ Error: tests:4:neg test unexpected success.
Error: tests:4:neg test unexpected success (in the log).
-Error: tests:4:neg test unexpected success (in the code).
negative test 'neg test unexpected success' succeeded unexpectedly
@@ -54,7 +52,6 @@ Error: tests:1:fail_sort_id.
Error: tests:1:fail_sort_id (in the log).
-Error: tests:1:fail_sort_id (in the code).
test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 11 shrink steps)
diff --git a/example/ounit/output.txt.expected.64 b/example/ounit/QCheck_ounit_test.expected.ocaml4.64
similarity index 92%
rename from example/ounit/output.txt.expected.64
rename to example/ounit/QCheck_ounit_test.expected.ocaml4.64
index 874cd52..a038e26 100644
--- a/example/ounit/output.txt.expected.64
+++ b/example/ounit/QCheck_ounit_test.expected.ocaml4.64
@@ -25,7 +25,6 @@ Error: tests:6:fail_check_err_message.
Error: tests:6:fail_check_err_message (in the log).
-Error: tests:6:fail_check_err_message (in the code).
test `fail_check_err_message` failed on ≥ 1 cases:
@@ -43,7 +42,6 @@ Error: tests:4:neg test unexpected success.
Error: tests:4:neg test unexpected success (in the log).
-Error: tests:4:neg test unexpected success (in the code).
negative test 'neg test unexpected success' succeeded unexpectedly
@@ -54,7 +52,6 @@ Error: tests:1:fail_sort_id.
Error: tests:1:fail_sort_id (in the log).
-Error: tests:1:fail_sort_id (in the code).
test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 11 shrink steps)
diff --git a/example/ounit/QCheck_ounit_test.expected.ocaml5.32 b/example/ounit/QCheck_ounit_test.expected.ocaml5.32
new file mode 100644
index 0000000..3c8260a
--- /dev/null
+++ b/example/ounit/QCheck_ounit_test.expected.ocaml5.32
@@ -0,0 +1,62 @@
+.FE.FEF.
+==============================================================================
+Error: tests:5:neg fail with error.
+
+Error: tests:5:neg fail with error (in the log).
+
+
+test `neg fail with error`
+raised exception `Dune__exe__QCheck_ounit_test.Error`
+on `0 (after 7 shrink steps)`
+
+------------------------------------------------------------------------------
+==============================================================================
+Error: tests:2:error_raise_exn.
+
+Error: tests:2:error_raise_exn (in the log).
+
+
+test `error_raise_exn` raised exception `Dune__exe__QCheck_ounit_test.Error`
+on `0 (after 30 shrink steps)`
+
+------------------------------------------------------------------------------
+==============================================================================
+Error: tests:6:fail_check_err_message.
+
+Error: tests:6:fail_check_err_message (in the log).
+
+
+
+test `fail_check_err_message` failed on ≥ 1 cases:
+0 (after 7 shrink steps)
+this
+will
+always
+fail
+
+
+
+------------------------------------------------------------------------------
+==============================================================================
+Error: tests:4:neg test unexpected success.
+
+Error: tests:4:neg test unexpected success (in the log).
+
+
+
+negative test 'neg test unexpected success' succeeded unexpectedly
+
+------------------------------------------------------------------------------
+==============================================================================
+Error: tests:1:fail_sort_id.
+
+Error: tests:1:fail_sort_id (in the log).
+
+
+
+test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 16 shrink steps)
+
+
+------------------------------------------------------------------------------
+Ran: 8 tests in: <nondet> seconds.
+FAILED: Cases: 8 Tried: 8 Errors: 2 Failures: 3 Skip: 0 Todo: 0 Timeouts: 0.
diff --git a/example/ounit/output.txt.expected.ocaml5 b/example/ounit/QCheck_ounit_test.expected.ocaml5.64
similarity index 92%
rename from example/ounit/output.txt.expected.ocaml5
rename to example/ounit/QCheck_ounit_test.expected.ocaml5.64
index 2294b90..a95398e 100644
--- a/example/ounit/output.txt.expected.ocaml5
+++ b/example/ounit/QCheck_ounit_test.expected.ocaml5.64
@@ -25,7 +25,6 @@ Error: tests:6:fail_check_err_message.
Error: tests:6:fail_check_err_message (in the log).
-Error: tests:6:fail_check_err_message (in the code).
test `fail_check_err_message` failed on ≥ 1 cases:
@@ -43,7 +42,6 @@ Error: tests:4:neg test unexpected success.
Error: tests:4:neg test unexpected success (in the log).
-Error: tests:4:neg test unexpected success (in the code).
negative test 'neg test unexpected success' succeeded unexpectedly
@@ -54,7 +52,6 @@ Error: tests:1:fail_sort_id.
Error: tests:1:fail_sort_id (in the log).
-Error: tests:1:fail_sort_id (in the code).
test `fail_sort_id` failed on ≥ 1 cases: [1; 0] (after 16 shrink steps)
diff --git a/example/ounit/dune b/example/ounit/dune
index fae1b11..6fdbdef 100644
--- a/example/ounit/dune
+++ b/example/ounit/dune
@@ -1,34 +1,34 @@
-(* -*- tuareg -*- *)
-
-let suffix =
- try
- let major_version = List.hd (String.split_on_char '.' Sys.ocaml_version) in
- if int_of_string major_version < 5 then string_of_int Sys.word_size else "ocaml5"
- with _ -> failwith ("Unknown OCaml version format: " ^ Sys.ocaml_version)
+(executables
+ (names QCheck_ounit_test QCheck_test)
+ (libraries ounit2 qcheck-ounit))
-let dune = Printf.sprintf {|
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_ounit_test.expected.ocaml5.64 QCheck_ounit_test.expected)))
-(executables
- (names QCheck_ounit_test QCheck_test)
- (libraries ounit2 qcheck-ounit))
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_ounit_test.expected.ocaml5.32 QCheck_ounit_test.expected)))
(rule
- (targets output.txt)
- (deps ./QCheck_ounit_test.exe)
- (enabled_if (= %%{os_type} "Unix"))
- (action
- (with-accepted-exit-codes
- 1
- (with-stdout-to
- %%{targets}
- (run ./run_ounit.sh -runner=sequential -seed 1234)))))
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck_ounit_test.expected.ocaml4.64 QCheck_ounit_test.expected)))
(rule
- (alias runtest)
- (package qcheck-ounit)
- (enabled_if (= %%{os_type} "Unix"))
- (action (diff output.txt.expected.%s output.txt)))
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck_ounit_test.expected.ocaml4.32 QCheck_ounit_test.expected)))
-|} suffix
+(rule
+ (targets QCheck_ounit_test.output)
+ (deps ./QCheck_ounit_test.exe)
+ (enabled_if (= %{os_type} "Unix"))
+ (action
+ (with-accepted-exit-codes 1
+ (with-stdout-to %{targets}
+ (run ./run_ounit.sh -runner=sequential -seed 1234)))))
-let () = Jbuild_plugin.V1.send dune
+(rule
+ (alias runtest)
+ (package qcheck-ounit)
+ (enabled_if (= %{os_type} "Unix"))
+ (action (diff QCheck_ounit_test.expected QCheck_ounit_test.output)))
diff --git a/example/ounit/run_ounit.sh b/example/ounit/run_ounit.sh
index 40edc9a..1e99ff9 100755
--- a/example/ounit/run_ounit.sh
+++ b/example/ounit/run_ounit.sh
@@ -10,5 +10,6 @@ echo "$OUT" \
| grep -v 'File .*, line .*' \
| grep -v 'Called from ' \
| grep -v 'Raised at ' \
+ | grep -v '(in the code)' \
| sed 's/in: .*seconds/in: <nondet> seconds/'
exit $CODE
diff --git a/ppx_deriving_qcheck.opam b/ppx_deriving_qcheck.opam
index 699597e..c03d4e7 100644
--- a/ppx_deriving_qcheck.opam
+++ b/ppx_deriving_qcheck.opam
@@ -1,6 +1,6 @@
opam-version: "2.0"
name: "ppx_deriving_qcheck"
-version: "0.3.0"
+version: "0.4.0"
license: "BSD-2-Clause"
synopsis: "PPX Deriver for QCheck"
diff --git a/qcheck-alcotest.opam b/qcheck-alcotest.opam
index ad1a06b..b388e26 100644
--- a/qcheck-alcotest.opam
+++ b/qcheck-alcotest.opam
@@ -5,7 +5,7 @@ homepage: "https://github.com/c-cube/qcheck/"
license: "BSD-2-Clause"
synopsis: "Alcotest backend for qcheck"
doc: ["http://c-cube.github.io/qcheck/"]
-version: "0.20"
+version: "0.21.1"
tags: [
"test"
"quickcheck"
@@ -18,7 +18,7 @@ build: [
["dune" "runtest" "-p" name "-j" jobs] {with-test}
]
depends: [
- "dune" { >= "2.2" }
+ "dune" { >= "2.8.0" }
"base-bytes"
"base-unix"
"qcheck-core" { = version }
diff --git a/qcheck-core.opam b/qcheck-core.opam
index 0bb4212..1b103ca 100644
--- a/qcheck-core.opam
+++ b/qcheck-core.opam
@@ -5,7 +5,7 @@ homepage: "https://github.com/c-cube/qcheck/"
license: "BSD-2-Clause"
synopsis: "Core qcheck library"
doc: ["http://c-cube.github.io/qcheck/"]
-version: "0.20"
+version: "0.21.1"
tags: [
"test"
"property"
@@ -17,7 +17,7 @@ build: [
["dune" "runtest" "-p" name "-j" jobs] {with-test}
]
depends: [
- "dune" { >= "2.2" }
+ "dune" { >= "2.8.0" }
"base-bytes"
"base-unix"
"alcotest" {with-test}
diff --git a/qcheck-ounit.opam b/qcheck-ounit.opam
index 4b9242d..b8131bf 100644
--- a/qcheck-ounit.opam
+++ b/qcheck-ounit.opam
@@ -5,7 +5,7 @@ license: "BSD-2-Clause"
homepage: "https://github.com/c-cube/qcheck/"
doc: ["http://c-cube.github.io/qcheck/"]
synopsis: "OUnit backend for qcheck"
-version: "0.20"
+version: "0.21.1"
tags: [
"qcheck"
"quickcheck"
@@ -17,7 +17,7 @@ build: [
["dune" "runtest" "-p" name "-j" jobs] {with-test}
]
depends: [
- "dune" { >= "2.2" }
+ "dune" { >= "2.8.0" }
"base-bytes"
"base-unix"
"qcheck-core" { = version }
diff --git a/qcheck.opam b/qcheck.opam
index 3c72f47..0367563 100644
--- a/qcheck.opam
+++ b/qcheck.opam
@@ -5,7 +5,7 @@ synopsis: "Compatibility package for qcheck"
homepage: "https://github.com/c-cube/qcheck/"
license: "BSD-2-Clause"
doc: ["http://c-cube.github.io/qcheck/"]
-version: "0.20"
+version: "0.21.1"
tags: [
"test"
"property"
@@ -17,7 +17,7 @@ build: [
["dune" "runtest" "-p" name "-j" jobs] {with-test}
]
depends: [
- "dune" { >= "2.2" }
+ "dune" { >= "2.8.0" }
"base-bytes"
"base-unix"
"qcheck-core" { = version }
diff --git a/src/alcotest/QCheck_alcotest.ml b/src/alcotest/QCheck_alcotest.ml
index 0baffa4..d2f2615 100644
--- a/src/alcotest/QCheck_alcotest.ml
+++ b/src/alcotest/QCheck_alcotest.ml
@@ -54,14 +54,6 @@ let to_alcotest
let name = T.get_name cell in
let run () =
let call = Raw.callback ~colors ~verbose ~print_res:true ~print in
- if T.get_positive cell
- then
- T.check_cell_exn ~long ~call ~handler ~rand cell
- else
- try
- T.check_cell_exn ~long ~call ~handler ~rand cell;
- Alcotest.failf "negative test '%s' succeeded unexpectedly" name
- with
- T.Test_fail (_name,_l) -> ()
+ T.check_cell_exn ~long ~call ~handler ~rand cell
in
((name, `Slow, run) : unit Alcotest.test_case)
diff --git a/src/core/QCheck.ml b/src/core/QCheck.ml
index aca834e..2809e6e 100644
--- a/src/core/QCheck.ml
+++ b/src/core/QCheck.ml
@@ -677,8 +677,8 @@ module Shrink = struct
let y = ref x in
(* try some divisors *)
while !y < -2 || !y >2 do y := !y / 2; yield (x - !y); done; (* fast path *)
- if x>0 then yield (x-1);
- if x<0 then yield (x+1);
+ if x = 1 || (x>0 && !y <> 1) then yield (x-1);
+ if x = -1 || (x<0 && !y <> -1) then yield (x+1);
()
let int32 x yield =
@@ -686,8 +686,8 @@ module Shrink = struct
let y = ref x in
(* try some divisors *)
while !y < -2l || !y > 2l do y := div !y 2l; yield (sub x !y); done; (* fast path *)
- if x>0l then yield (pred x);
- if x<0l then yield (succ x);
+ if x = 1l || (x>0l && !y <> 1l) then yield (pred x);
+ if x = -1l || (x<0l && !y <> -1l) then yield (succ x);
()
let int64 x yield =
@@ -695,8 +695,8 @@ module Shrink = struct
let y = ref x in
(* try some divisors *)
while !y < -2L || !y > 2L do y := div !y 2L; yield (sub x !y); done; (* fast path *)
- if x>0L then yield (pred x);
- if x<0L then yield (succ x);
+ if x = 1L || (x>0L && !y <> 1L) then yield (pred x);
+ if x = -1L || (x<0L && !y <> -1L) then yield (succ x);
()
(* aggressive shrinker for integers,
diff --git a/src/core/QCheck.mli b/src/core/QCheck.mli
index 7e8d4b4..92d31a3 100644
--- a/src/core/QCheck.mli
+++ b/src/core/QCheck.mli
@@ -1137,13 +1137,16 @@ module Test : sig
?long:bool -> ?call:'a callback ->
?step:'a step -> ?handler:'a handler ->
?rand:Random.State.t -> 'a cell -> 'a TestResult.t
+ (** See {!QCheck2.Test.check_cell}. *)
val check_cell_exn :
?long:bool -> ?call:'a callback ->
?step:'a step -> ?handler:'a handler ->
?rand:Random.State.t -> 'a cell -> unit
+ (** See {!QCheck2.Test.check_cell_exn}. *)
val check_exn : ?long:bool -> ?rand:Random.State.t -> t -> unit
+ (** See {!QCheck2.Test.check_exn}. *)
end
(** {2 Sub-tests} *)
diff --git a/src/core/QCheck2.ml b/src/core/QCheck2.ml
index 58cb171..a0cc4e7 100644
--- a/src/core/QCheck2.ml
+++ b/src/core/QCheck2.ml
@@ -1406,6 +1406,7 @@ module Test_exceptions = struct
exception Test_fail of string * string list
exception Test_error of string * string * exn * string
+ exception Test_unexpected_success of string
end
module Test = struct
@@ -1882,6 +1883,8 @@ module Test = struct
let print_test_fail name l = asprintf "@[%a@]@?" (pp_print_test_fail name) l
+ let print_unexpected_success name = Format.sprintf "@[negative test `%s`@ succeeded unexpectedly@]" name
+
let print_test_error name i e stack =
Format.sprintf "@[test `%s`@ raised exception `%s`@ on `%s`@,%s@]"
name (Printexc.to_string e) i stack
@@ -1982,6 +1985,7 @@ module Test = struct
(function
| Test_fail (name,l) -> Some (print_test_fail name l)
| Test_error (name,i,e,st) -> Some (print_test_error name i e st)
+ | Test_unexpected_success name -> Some (print_unexpected_success name)
| User_fail s -> Some ("qcheck: user fail:\n" ^ s)
| _ -> None)
@@ -1998,14 +2002,17 @@ module Test = struct
let print_error ?(st="") arb name (i,e) =
print_test_error name (print_c_ex arb i) e st
- let check_result cell res = match res.R.state with
- | R.Success -> ()
- | R.Error {instance; exn; backtrace} ->
+ let check_result cell res = match res.R.state, cell.positive with
+ | R.Success, true -> ()
+ | R.Success, false ->
+ raise (Test_unexpected_success cell.name)
+ | R.Error {instance; exn; backtrace}, _ ->
raise (Test_error (cell.name, print_c_ex cell instance, exn, backtrace))
- | R.Failed {instances=l} ->
+ | R.Failed {instances=l}, true ->
let l = List.map (print_c_ex cell) l in
raise (Test_fail (cell.name, l))
- | R.Failed_other {msg} ->
+ | R.Failed _, false -> ()
+ | R.Failed_other {msg}, _ ->
raise (Test_fail (cell.name, [msg]))
let check_cell_exn ?long ?call ?step ?handler ?rand cell =
diff --git a/src/core/QCheck2.mli b/src/core/QCheck2.mli
index e5392b4..75f68ce 100644
--- a/src/core/QCheck2.mli
+++ b/src/core/QCheck2.mli
@@ -1649,6 +1649,11 @@ module Test_exceptions : sig
[Test_error (name, i, e, st)]
means [name] failed on [i] with exception [e], and [st] is the
stacktrace (if enabled) or an empty string. *)
+
+ exception Test_unexpected_success of string
+ (** Exception raised when a negative test failed.
+ [Test_unexpected_success name] means test [name] failed to find an
+ expected counter example. *)
end
(** A test is a pair of a generator and a property that all generated values must satisfy. *)
@@ -1801,9 +1806,11 @@ module Test : sig
@since 0.6 *)
val check_result : 'a cell -> 'a TestResult.t -> unit
- (** [check_result cell res] checks that [res] is [Ok _], and returns unit.
+ (** For a positive test [check_result cell res] checks that [res] is [Ok _], and returns unit.
+ For a negative test [check_result cell res] checks that [res] is [Failed _], and returns unit.
Otherwise, it raises some exception.
- @raise Test_fail if [res = Failed _]
+ @raise Test_fail if the test is positive and [res = Failed _]
+ @raise Test_unexpected_success if the test is negative and [res = Ok _]
@raise Test_error if [res = Error _] *)
type res =
@@ -1840,6 +1847,10 @@ module Test : sig
predicate [law] is called on them and if it returns [false] or raises an
exception then we have a counter-example for the [law].
+ Note: [check_cell] ignores a test's polarity, acting as
+ described above regardless of whether the tested cell is a
+ positive or negative test.
+
@param long if [true] then multiply the number of instances to generate
by the cell's long_factor.
@param call function called on each test case, with the result.
@@ -1852,13 +1863,19 @@ module Test : sig
?step:'a step -> ?handler:'a handler ->
?rand:Random.State.t -> 'a cell -> unit
(** Same as {!check_cell} but calls {!check_result} on the result.
- @raise Test_fail if [res = Failed _]
+ [check_cell test] honors test polarity and thus expects positive tests to succeed
+ without finding a counterexample and expects negative tests to fail by finding one.
+ @raise Test_fail if the test is positive and [res = Failed _]
+ @raise Test_unexpected_success if the test is negative and [res = Success _]
@raise Test_error if [res = Error _] *)
val check_exn : ?long:bool -> ?rand:Random.State.t -> t -> unit
(** Checks the property against some test cases, and calls {!check_result},
which might raise an exception in case of failure.
- @raise Test_fail if [res = Failed _]
+ [check_exn test] honors test polarity and thus expects positive tests to succeed
+ without finding a counterexample and expects negative tests to fail by finding one.
+ @raise Test_fail if the test is positive and [res = Failed _]
+ @raise Test_unexpected_success if the test is negative and [res = Success _]
@raise Test_error if [res = Error _] *)
end
diff --git a/src/ounit/QCheck_ounit.ml b/src/ounit/QCheck_ounit.ml
index b6b2e66..eec329d 100644
--- a/src/ounit/QCheck_ounit.ml
+++ b/src/ounit/QCheck_ounit.ml
@@ -72,16 +72,8 @@ let to_ounit2_test ?(rand =default_rand()) (QCheck2.Test.Test cell) =
fail = (fun fmt -> Printf.ksprintf assert_failure fmt);
err = (fun fmt -> logf ctxt `Error fmt);
} in
- if QCheck2.Test.get_positive cell
- then
- T.check_cell_exn cell
- ~long ~rand ~call:(Raw.callback ~colors:false ~verbose ~print_res:true ~print)
- else
- try
- T.check_cell_exn cell
- ~long ~rand ~call:(Raw.callback ~colors:false ~verbose ~print_res:true ~print);
- ()
- with T.Test_fail (_,_) -> ())
+ T.check_cell_exn cell
+ ~long ~rand ~call:(Raw.callback ~colors:false ~verbose ~print_res:true ~print))
let to_ounit2_test_list ?rand lst =
List.rev (List.rev_map (to_ounit2_test ?rand) lst)
@@ -93,18 +85,12 @@ let to_ounit_test_cell ?(verbose=verbose()) ?(long=long_tests())
let module T = QCheck2.Test in
let name = T.get_name cell in
let run () =
-
- let res =
- try
- T.check_cell_exn cell ~long ~rand
- ~call:(Raw.callback ~colors:false ~verbose ~print_res:verbose ~print:Raw.print_std);
- true
- with T.Test_fail _ ->
- false
- in
- if QCheck2.Test.get_positive cell
- then res
- else not res
+ try
+ T.check_cell_exn cell ~long ~rand
+ ~call:(Raw.callback ~colors:false ~verbose ~print_res:verbose ~print:Raw.print_std);
+ true
+ with T.Test_fail _ ->
+ false
in
name >:: (fun () -> assert_bool name (run ()))
diff --git a/src/ppx_deriving_qcheck/ppx_deriving_qcheck.ml b/src/ppx_deriving_qcheck/ppx_deriving_qcheck.ml
index 8c26eef..e501e54 100644
--- a/src/ppx_deriving_qcheck/ppx_deriving_qcheck.ml
+++ b/src/ppx_deriving_qcheck/ppx_deriving_qcheck.ml
@@ -111,8 +111,9 @@ let rec longident_to_str = function
Printf.sprintf "%s %s" (longident_to_str lg1) (longident_to_str lg2)
let rec is_rec_typ env = function
- | { ptyp_desc = Ptyp_constr ({ txt = x; _ }, _); _ } ->
- List.exists (fun typ_name -> longident_to_str x = typ_name) env.Env.curr_types
+ | { ptyp_desc = Ptyp_constr ({ txt = x; _ }, args); _ } ->
+ List.exists (fun typ_name -> longident_to_str x = typ_name) env.Env.curr_types ||
+ List.exists (is_rec_typ env) args
| { ptyp_desc = Ptyp_tuple xs; _ } -> List.exists (is_rec_typ env) xs
| { ptyp_desc = Ptyp_variant (rws, _, _); _ } ->
List.exists (is_rec_row_field env) rws
@@ -128,7 +129,7 @@ and is_rec_row_field env rw =
let is_rec_constr_decl env cd =
match cd.pcd_args with
| Pcstr_tuple cts -> List.exists (is_rec_typ env) cts
- | _ -> false
+ | Pcstr_record ldcls -> List.exists (fun ldcl -> is_rec_typ env ldcl.pld_type) ldcls
(** [is_rec_type_decl env typ] looks for elements of [env.curr_types]
recursively in [typ]. *)
diff --git a/test/core/QCheck2_expect_test.expected.32 b/test/core/QCheck2_expect_test.expected.ocaml4.32
similarity index 99%
rename from test/core/QCheck2_expect_test.expected.32
rename to test/core/QCheck2_expect_test.expected.ocaml4.32
index 597728f..126bcd4 100644
--- a/test/core/QCheck2_expect_test.expected.32
+++ b/test/core/QCheck2_expect_test.expected.ocaml4.32
@@ -270,7 +270,7 @@ Test char never produces 'abcdef' failed (1 shrink steps):
--- Failure --------------------------------------------------------------------
-Test printable never produces '!"#$%&'' failed (1 shrink steps):
+Test printable never produces '!"#$%&' failed (1 shrink steps):
'!'
diff --git a/test/core/QCheck2_expect_test.expected.64 b/test/core/QCheck2_expect_test.expected.ocaml4.64
similarity index 99%
rename from test/core/QCheck2_expect_test.expected.64
rename to test/core/QCheck2_expect_test.expected.ocaml4.64
index 9854be8..b1d73a6 100644
--- a/test/core/QCheck2_expect_test.expected.64
+++ b/test/core/QCheck2_expect_test.expected.ocaml4.64
@@ -334,7 +334,7 @@ Test char never produces 'abcdef' failed (1 shrink steps):
--- Failure --------------------------------------------------------------------
-Test printable never produces '!"#$%&'' failed (1 shrink steps):
+Test printable never produces '!"#$%&' failed (1 shrink steps):
'!'
diff --git a/test/core/QCheck2_expect_test.expected.ocaml5.32 b/test/core/QCheck2_expect_test.expected.ocaml5.32
new file mode 100644
index 0000000..4526d5f
--- /dev/null
+++ b/test/core/QCheck2_expect_test.expected.ocaml5.32
@@ -0,0 +1,1428 @@
+random seed: 1234
+45 4 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 (8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+-466273346
+409792091
+0
+204896045
+0
+102448022
+0
+51224011
+0
+25612005
+0
+12806002
+0
+6403001
+0
+3201500
+0
+1600750
+0
+800375
+0
+400187
+0
+200093
+0
+100046
+0
+50023
+0
+25011
+0
+12505
+0
+6252
+0
+3126
+0
+1563
+0
+781
+0
+390
+0
+195
+0
+97
+0
+48
+0
+24
+0
+12
+0
+6
+0
+3
+0
+1
+0
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+[]
+[7; 79; 86; 1; 70; 98; 1; 4; 7; 9; 5; 8; 0; 1; 2; 0; 6; 0; 37; 6; 8; 26; 6; 8; 8; 98; 6; 8; 1; 6; 2; 4; 4; 7; 26; 1; 77; 2; 9; 9; 81; 8; 9; 4; 0; 86; 9; 3; 7; 0; 54; 2; 4; 1; 6; 4; 55; 5; 0; 9; 2; 1; 3; 8; 7; 1; 1; 3; 92; 1; 3; 4; 5; 2; 8; 51; 2; 94; 6; 82; 0; 11; 86; 1; 36; 31; 3; 2; 3; 8; 2; 8; 14; 26; 89; 1; 6; 0; 9; 5; 6; 7; 1; 6; 1; 6; 4; 7; 8; 8; 4; 1; 6; 3; 1; 5; 0; 6; 0; 5; 0; 4; 3; 49; 5; 8; 37; 8; 38; 0; 1; 8; 59; 5; 0; 7; 37; 87; 9; 3; 1; 5; 59; 8; 7; 6; 26; 4; 8; 8; 8; 9; 3; 2; 6; 64; 6; 7; 2; 8; 5; 2; 94; 26; 98; 3; 29; 2; 1; 72; 2; 49]
+[]
+[8; 13; 1; 18; 0; 69; 15; 2; 5; 78; 7; 32; 8; 36; 7; 3; 0; 9; 1; 1; 1; 29; 3; 8; 7; 2; 1; 8; 7; 8; 22; 5; 49; 5; 0; 1; 8; 5; 6; 7; 5; 1; 9; 73; 55; 2; 4; 7; 3; 4; 2; 27; 0; 6; 9; 1; 7; 8; 5; 12; 5; 8; 9; 1; 95; 1; 0; 1; 4; 8; 6; 7; 0; 8; 2; 3; 7; 3; 9; 0; 86; 96; 72; 3; 4; 25]
+[]
+[4; 3; 6; 5; 0; 0; 9; 7; 0; 6; 5; 3; 0; 24; 5; 6; 86; 9; 9; 0; 7; 2; 6; 6; 3; 45; 6; 1; 17; 1; 2; 2; 3; 0; 4; 1; 8; 2; 6; 9; 5; 0; 2]
+[]
+[9; 7; 62; 0; 73; 0; 8; 94; 0; 6; 50; 9; 83; 0; 5; 40; 6; 1; 6; 6; 6]
+[]
+[6; 5; 2; 54; 33; 9; 1; 1; 1; 61]
+[]
+[5; 7; 0; 65; 0]
+[]
+[2; 7]
+[]
+[6]
+[]
+[0]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+[]
+[7; 79; 86; 1; 70; 98; 1; 4; 7; 9; 5; 8; 0; 1; 2; 0; 6; 0; 37; 6; 8; 26; 6; 8; 8; 98; 6; 8; 1; 6; 2; 4; 4; 7; 26; 1; 77; 2; 9; 9; 81; 8; 9; 4; 0; 86; 9; 3; 7; 0; 54; 2; 4; 1; 6; 4; 55; 5; 0; 9; 2; 1; 3; 8; 7; 1; 1; 3; 92; 1; 3; 4; 5; 2; 8; 51; 2; 94; 6; 82; 0; 11; 86; 1; 36; 31; 3; 2; 3; 8; 2; 8; 14; 26; 89; 1; 6; 0; 9; 5; 6; 7; 1; 6; 1; 6; 4; 7; 8; 8; 4; 1; 6; 3; 1; 5; 0; 6; 0; 5; 0; 4; 3; 49; 5; 8; 37; 8; 38; 0; 1; 8; 59; 5; 0; 7; 37; 87; 9; 3; 1; 5; 59; 8; 7; 6; 26; 4; 8; 8; 8; 9; 3; 2; 6; 64; 6; 7; 2; 8; 5; 2; 94; 26; 98; 3; 29; 2; 1; 72; 2; 49]
+[]
+[8; 13; 1; 18; 0; 69; 15; 2; 5; 78; 7; 32; 8; 36; 7; 3; 0; 9; 1; 1; 1; 29; 3; 8; 7; 2; 1; 8; 7; 8; 22; 5; 49; 5; 0; 1; 8; 5; 6; 7; 5; 1; 9; 73; 55; 2; 4; 7; 3; 4; 2; 27; 0; 6; 9; 1; 7; 8; 5; 12; 5; 8; 9; 1; 95; 1; 0; 1; 4; 8; 6; 7; 0; 8; 2; 3; 7; 3; 9; 0; 86; 96; 72; 3; 4; 25]
+[]
+[4; 3; 6; 5; 0; 0; 9; 7; 0; 6; 5; 3; 0; 24; 5; 6; 86; 9; 9; 0; 7; 2; 6; 6; 3; 45; 6; 1; 17; 1; 2; 2; 3; 0; 4; 1; 8; 2; 6; 9; 5; 0; 2]
+[]
+[9; 7; 62; 0; 73; 0; 8; 94; 0; 6; 50; 9; 83; 0; 5; 40; 6; 1; 6; 6; 6]
+[]
+[6; 5; 2; 54; 33; 9; 1; 1; 1; 61]
+[]
+[5; 7; 0; 65; 0]
+[]
+[2; 7]
+[4; 6; 6]
+[]
+[7]
+[6; 41]
+[0; 6; 6]
+[0; 0; 6]
+[0; 0; 0]
+
+--- Failure --------------------------------------------------------------------
+
+Test should_fail_sort_id failed (11 shrink steps):
+
+[1; 0]
+
+=== Error ======================================================================
+
+Test should_error_raise_exn errored on (2 shrink steps):
+
+0
+
+exception QCheck2_tests.Overall.Error
+
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test collect_results:
+
+4: 24 cases
+3: 20 cases
+2: 18 cases
+1: 21 cases
+0: 17 cases
+
++++ Stats for with_stats ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats mod4:
+ num: 100, avg: 1.56, stddev: 1.18, median 2, min 0, max 3
+ 0: ################################################# 27
+ 1: #################################### 20
+ 2: ########################################## 23
+ 3: ####################################################### 30
+
+stats num:
+ num: 100, avg: 62.24, stddev: 33.15, median 62, min 2, max 120
+ 2.. 7: ######### 2
+ 8.. 13: ################################ 7
+ 14.. 19: ########################### 6
+ 20.. 25: ############# 3
+ 26.. 31: ###################### 5
+ 32.. 37: ################## 4
+ 38.. 43: ############# 3
+ 44.. 49: ################################ 7
+ 50.. 55: ################################ 7
+ 56.. 61: ###################### 5
+ 62.. 67: #################################### 8
+ 68.. 73: ######### 2
+ 74.. 79: ###################### 5
+ 80.. 85: ######### 2
+ 86.. 91: ####################################################### 12
+ 92.. 97: ###################### 5
+ 98..103: ################## 4
+ 104..109: ################## 4
+ 110..115: ############# 3
+ 116..121: ########################### 6
+
+--- Failure --------------------------------------------------------------------
+
+Test with shrinking retries failed (0 shrink steps):
+
+4
+
+!!! Warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Warning for test WARN_unlikely_precond:
+
+WARNING: only 0.5% tests (of 2000) passed precondition for "WARN_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_unlikely_precond failed:
+
+ERROR: only 0.5% tests (of 2000) passed precondition for "FAIL_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_bad_gen failed:
+
+ERROR: uncaught exception in generator for test FAIL_bad_gen after 100 steps:
+Exception: Invalid_argument("Gen.int_bound")
+Backtrace:
+
+--- Failure --------------------------------------------------------------------
+
+Test int double failed:
+
+Negative test int double succeeded but was expected to fail
+
+=== Error ======================================================================
+
+Test pos fail with error errored on (1 shrink steps):
+
+0
+
+exception QCheck2_tests.Overall.Error
+
+
+=== Error ======================================================================
+
+Test neg fail with error errored on (1 shrink steps):
+
+0
+
+exception QCheck2_tests.Overall.Error
+
+
+--- Failure --------------------------------------------------------------------
+
+Test char never produces '\255' failed (0 shrink steps):
+
+'\255'
+
+--- Failure --------------------------------------------------------------------
+
+Test big bound issue59 failed (0 shrink steps):
+
+1073741823
+
+--- Failure --------------------------------------------------------------------
+
+Test long_shrink failed (3038 shrink steps):
+
+([0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0], [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 1])
+
+--- Failure --------------------------------------------------------------------
+
+Test ints arent 0 mod 3 failed (1 shrink steps):
+
+0
+
+--- Failure --------------------------------------------------------------------
+
+Test ints are 0 failed (29 shrink steps):
+
+1
+
+--- Failure --------------------------------------------------------------------
+
+Test ints < 209609 failed (0 shrink steps):
+
+1073741823
+
+--- Failure --------------------------------------------------------------------
+
+Test nat < 5001 failed (6 shrink steps):
+
+5001
+
+--- Failure --------------------------------------------------------------------
+
+Test char never produces 'abcdef' failed (1 shrink steps):
+
+'a'
+
+--- Failure --------------------------------------------------------------------
+
+Test printable never produces '!"#$%&' failed (1 shrink steps):
+
+'!'
+
+--- Failure --------------------------------------------------------------------
+
+Test printable never produces less than '5 failed (0 shrink steps):
+
+'0'
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes are empty failed (9 shrink steps):
+
+a
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes never has a \000 char failed (55 shrink steps):
+
+aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes never has a \255 char failed (75 shrink steps):
+
+aaaaaaa�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes have unique chars failed (14 shrink steps):
+
+aaaaaaa
+
+--- Failure --------------------------------------------------------------------
+
+Test strings are empty failed (9 shrink steps):
+
+"a"
+
+--- Failure --------------------------------------------------------------------
+
+Test string never has a \000 char failed (55 shrink steps):
+
+"aaaaaaaaaaaaaaa\000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+--- Failure --------------------------------------------------------------------
+
+Test string never has a \255 char failed (75 shrink steps):
+
+"aaaaaaa\255aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+
+--- Failure --------------------------------------------------------------------
+
+Test strings have unique chars failed (14 shrink steps):
+
+"aaaaaaa"
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have different components failed (0 shrink steps):
+
+(6, 6)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have same components failed (29 shrink steps):
+
+(0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have a zero component failed (57 shrink steps):
+
+(1, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are (0,0) failed (29 shrink steps):
+
+(0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are ordered failed (42 shrink steps):
+
+(1, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are ordered reversely failed (30 shrink steps):
+
+(0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs sum to less than 128 failed (27 shrink steps):
+
+(0, 128)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs lists rev concat failed (38 shrink steps):
+
+([0], [1])
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs lists no overlap failed (22 shrink steps):
+
+([0], [0; 0; 0; 0; 0; 0; 0; 0])
+
+--- Failure --------------------------------------------------------------------
+
+Test triples have pair-wise different components failed (3 shrink steps):
+
+(0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples have same components failed (32 shrink steps):
+
+(0, 1, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples are ordered failed (4 shrink steps):
+
+(0, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples are ordered reversely failed (32 shrink steps):
+
+(0, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples have pair-wise different components failed (3 shrink steps):
+
+(0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples have same components failed (59 shrink steps):
+
+(0, 1, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples are ordered failed (5 shrink steps):
+
+(0, 0, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples are ordered reversely failed (33 shrink steps):
+
+(0, 0, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b) in nat: a < b failed (3 shrink steps):
+
+(0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c) in nat: a < b < c failed (5 shrink steps):
+
+(0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d) in nat: a < b < c < d failed (4 shrink steps):
+
+(0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e) in nat: a < b < c < d < e failed (5 shrink steps):
+
+(0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f) in nat: a < b < c < d < e < f failed (6 shrink steps):
+
+(0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g) in nat: a < b < c < d < e < f < g failed (7 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g, h) in nat: a < b < c < d < e < f < g < h failed (8 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g, h, i) in nat: a < b < c < d < e < f < g < h < i failed (9 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test bind ordered pairs failed (1 shrink steps):
+
+(0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test bind list_size constant failed (12 shrink steps):
+
+(4, [0; 0; 0; 0])
+
+--- Failure --------------------------------------------------------------------
+
+Test lists are empty failed (9 shrink steps):
+
+[0]
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 10 failed (15 shrink steps):
+
+[0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 432 failed (413 shrink steps):
+
+[...] list length: 432
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 4332 failed (4002 shrink steps):
+
+[...] list length: 4332
+
+--- Failure --------------------------------------------------------------------
+
+Test lists have unique elems failed (10 shrink steps):
+
+[0; 0; 0]
+
+--- Failure --------------------------------------------------------------------
+
+Test tree contains only 42 failed (2 shrink steps):
+
+Leaf 0
+
+--- Failure --------------------------------------------------------------------
+
+Test sum list = 0 failed (0 shrink steps):
+
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+
+--- Failure --------------------------------------------------------------------
+
+Test fail_pred_map_commute failed (69 shrink steps):
+
+([0; 0; 0], {0 -> 1; 1 -> 0; 3 -> 0; 5 -> 0; 6 -> 0; 54 -> 0; 7 -> 0; 8 -> 0; 9 -> 0; _ -> 0}, {1 -> true; 54 -> false; _ -> false})
+
+--- Failure --------------------------------------------------------------------
+
+Test fail_pred_strings failed (2 shrink steps):
+
+{"some random string" -> true; _ -> false}
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right failed (32 shrink steps):
+
+(0, [1], {(5, 5) -> 0; (3, 8) -> 0; (1, 0) -> 1; (3, 0) -> 0; (8, 0) -> 0; (6, 4) -> 0; (9, 2) -> 0; (5, 0) -> 0; (0, 2) -> 0; (2, 0) -> 0; (2, 1) -> 0; (8, 6) -> 0; (0, 3) -> 0; (0, 23) -> 0; (1, 8) -> 0; (0, 4) -> 0; (4, 0) -> 0; (7, 2) -> 0; (2, 5) -> 0; (0, 8) -> 0; (23, 6) -> 0; (0, 0) -> 0; (4, 80) -> 0; _ -> 0})
+
++++ Messages ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Messages for test fold_left fold_right:
+
+l=[1], fold_left=1, fold_right=0
+
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried failed (434 shrink steps):
+
+({(5, 2) -> 0; (0, 2) -> 0; (2, 80) -> 0; (8, 6) -> 0; (76, 6) -> 0; (3, 8) -> 0; (75, 57) -> 0; (7, 2) -> 0; (43, 1) -> 0; (2, 7) -> 0; (7, 1) -> 0; (76, 3) -> 0; (4, 50) -> 0; (70, 5) -> 0; (49, 46) -> 0; (71, 31) -> 0; (67, 0) -> 0; (32, 96) -> 0; (9, 1) -> 0; (8, 8) -> 0; (53, 8) -> 0; (76, 5) -> 0; (2, 5) -> 0; (5, 4) -> 0; (9, 3) -> 0; (6, 65) -> 0; (75, 2) -> 0; (35, 96) -> 0; (3, 2) -> 0; (24, 1) -> 0; (75, 4) -> 0; (48, 8) -> 0; (0, 16) -> 0; (26, 73) -> 0; (2, 88) -> 0; (76, 7) -> 0; (6, 9) -> 0; (71, 59) -> 0; (4, 7) -> 0; (1, 1) -> 0; (4, 22) -> 0; (0, 5) -> 0; (1, 5) -> 0; (1, 4) -> 0; (8, 45) -> 0; (2, 47) -> 0; (0, 1) -> 0; (6, 10) -> 0; (73, 0) -> 0; (27, 3) -> 0; (88, 7) -> 0; (5, 1) -> 0; (3, 6) -> 0; (77, 8) -> 0; (2, 1) -> 0; (1, 2) -> 0; (4, 1) -> 0; (47, 6) -> 0; (76, 9) -> 0; (6, 5) -> 0; (7, 3) -> 0; (9, 87) -> 0; (3, 7) -> 0; (17, 0) -> 0; (43, 55) -> 0; (4, 2) -> 0; (12, 7) -> 0; (7, 79) -> 0; (2, 56) -> 0; (52, 0) -> 0; (9, 2) -> 0; (49, 0) -> 0; (7, 9) -> 0; (2, 75) -> 0; (75, 5) -> 0; (2, 2) -> 0; (6, 4) -> 0; (1, 3) -> 0; (19, 6) -> 0; (4, 55) -> 0; (1, 6) -> 0; (6, 7) -> 0; (6, 24) -> 0; (0, 6) -> 0; (86, 6) -> 0; (3, 1) -> 0; (4, 5) -> 0; (82, 4) -> 0; (5, 70) -> 0; (5, 9) -> 0; (37, 2) -> 0; (45, 1) -> 0; (7, 4) -> 0; (0, 4) -> 1; (6, 95) -> 0; (6, 2) -> 0; (1, 0) -> 0; (8, 4) -> 0; (1, 22) -> 0; (67, 7) -> 0; (92, 7) -> 0; (7, 5) -> 0; (4, 4) -> 0; (9, 8) -> 0; (49, 5) -> 0; (1, 9) -> 0; _ -> 0}, 0, [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 4])
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried fun last failed (37 shrink steps):
+
+(0, [0; 0; 0; 0], {(9, 5) -> 0; (0, 2) -> 0; (56, 0) -> 0; (4, 1) -> 0; (8, 5) -> 0; (5, 9) -> 0; (8, 6) -> 0; (3, 8) -> 0; (8, 0) -> 0; (84, 8) -> 0; (23, 4) -> 0; (4, 0) -> 0; (0, 7) -> 0; (7, 8) -> 0; (0, 5) -> 0; (0, 4) -> 0; (1, 5) -> 0; (80, 8) -> 0; (5, 7) -> 0; (2, 2) -> 0; (6, 4) -> 0; (0, 0) -> 56; (0, 23) -> 0; (0, 56) -> 1; (1, 3) -> 0; (0, 1) -> 0; (56, 2) -> 0; (89, 8) -> 0; (7, 7) -> 0; (2, 5) -> 0; (4, 3) -> 0; _ -> 0})
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left test, fun first failed (925 shrink steps):
+
+({("\167$\000\199\169\156V\241\027\212\178d3\196\136\249\1941_=#\216\196\226\186\220\153\150Z)\000\255\184\132`\225\239&uS\235]\212\231\021\028\204\020\t,", 9) -> ""; ("\156\031\194\253\204B\188\154 \167\012\253\2322;", 8) -> ""; ("{\182\172t", 5) -> ""; ("\169\240\228A#\212U\193\172\019\150\238\236\133\209\188\240\135\225\191\241\181\179\243\139\\.\"\190m\204&9\209?\001\171\247\160T\2049\153\0028\184\014;X", 13) -> ""; ("\003\212\207\236\178\162\182m\147\190\b>W\141\242\195\206j\201\202\166B\145k\229\211J\015\139(\224\143\149\190\196(_\017\170\138", 4) -> ""; ("\130\229\219\227\133\160\213\236\2221\245\129-\183\141r\146sXj\000\2210\200\1576\209\1396s '\026\172\251\236\166X\220\200\176$Z0\024\190", 2) -> ""; ("a\0171\198^,5\170C\139\157\\h\001\026\199", 8) -> ""; ("\189\221\014\254\188\175\205JF", 5) -> ""; ("", 2) -> "a"; ("\165\233\214\166\195\197", 5) -> ""; ("&\169\2415\201", 2) -> ""; ("S\194irBA", 37) -> ""; ("\224\2280\186", 1) -> ""; ("!\209\194\238\0266s\001!\233\234(7\127\228C\136n$\21162^^\012\014\199\178`\148\141\228\18599\205\136\136\189\213\134\019|\197\005\235\151\003\197D%\172\144\238\173[\228\191\235p\177I\180\237\189y\247\250w\143z~\016\003\142\149\157\142\234\\3P\140\030\000\028\205K\188&\202w\1519`\188\015", 2) -> ""; ("\128]\190\164\164\151)\214", 22) -> ""; ("u\251\19988\194\165\242J", 7) -> ""; ("}\129\237\213\203\137\197(W\172Q\171\188\140\205\014\143k~\163\187\140o\130\146r", 0) -> ""; ("\133+\142\011\209\135", 1) -> ""; ("E\212\169=n", 9) -> ""; ("l\022\133\005\016D\026\230\156", 18) -> ""; ("\031\131g\029\215", 31) -> ""; ("/*j", 6) -> ""; ("h\031\226a\226\148\128", 9) -> ""; ("\151", 1) -> ""; ("\221\184V\247\225\254\209iW;_d\144\t\179>2\252\221pO<\134F\005\252\151\163\138\007\219z\136\215\237]92G\000A\135\139\166\214\186\232\199\236\000\132_\006\241\169Gz\"\155\183\215-\233\249", 1) -> ""; ("z\211oC\210\198\155", 8) -> ""; ("}P8\147\167\142j9u\187\007\128\213Y\181E'\130\r\242ng\2088\198\004\136GJ\179-\197Iw\017\197\223\173\250\229D\160\171\t\222\223>6\219\201@^X\221(s\029\127\005-F+\232\213B\170\150\188\018f+>\215\240k\135\023\214P\157", 9) -> ""; ("~f-L\151\011", 2) -> ""; ("!\178\019\016\134%\026", 2) -> ""; ("\255U\t4f*\254\237\181S\020\181\130\184\230\017C\185\200\187:Q\002\210\028\152G\228O\026\012\003\234\011\148z\177\166&\024\178F\188\213u\128R~\\\171\194\r~v\020\160\221(\157wa!a\bAf\127^\169\241;\246\011B\b+\249\179\193\230\137\232\147\247\251\180ey\166q<\150_\158", 6) -> ""; ("\005\140\184\232$", 78) -> ""; (".NF\153", 6) -> ""; ("\180\130\236\011(\210M9", 9) -> ""; ("I\219\224\171\142\155\209\027\011\237\020;\245\176\141(\202\248\023\174\216\156\173+\028\209\193?\154t\196\146\147\181\252#\229\128jz\199\212\194\2302\185\162\208UXq>\024F&\241i\182\165\214I\249*?\136_\142f\163\230\167\210U`W \150X\157=\235pe\200\019\208\138j", 1) -> ""; ("\196\210\239\158\131\198\1516\208\165\163\011\251B\219\161\001\237\224\194T\t\148\158\197\031\145\025\192\148\210t1\235\159\015\176\197.\248a\028'\222r\200= \208w", 36) -> ""; ("\228x[", 91) -> ""; ("\001\143", 7) -> ""; ("\136u\1473\235\255\232\211\129\129\172\n\012\004\\O2.a\228(\218\205\223\011\"\n<\181$\245v\002\016s]\161\170\000q\205\161wM\230\223\143%\t\232\175\171j\129x\022\159\215\182\019\240\002\014}\0052\234\202\226\157,\148-\147\200\158\181\189\196\143f", 38) -> ""; ("@\192\163\234", 72) -> ""; ("\131\158Y\139\199\014\149d$", 9) -> ""; ("-\152", 9) -> ""; _ -> ""}, "", [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 2], [0])
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_#99_1 failed:
+
+ERROR: uncaught exception in generator for test FAIL_#99_1 after 100 steps:
+Exception: QCheck2.No_example_found("<example>")
+Backtrace:
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test bool dist:
+
+true: 250511 cases
+false: 249489 cases
+
++++ Stats for char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+ num: 500000, avg: 127.68, stddev: 73.87, median 128, min 0, max 255
+ 0.. 12: ##################################################### 25272
+ 13.. 25: ###################################################### 25326
+ 26.. 38: ##################################################### 25194
+ 39.. 51: ###################################################### 25359
+ 52.. 64: ###################################################### 25338
+ 65.. 77: ###################################################### 25349
+ 78.. 90: ###################################################### 25397
+ 91..103: ##################################################### 25243
+ 104..116: ###################################################### 25420
+ 117..129: ###################################################### 25438
+ 130..142: ###################################################### 25346
+ 143..155: ##################################################### 25177
+ 156..168: ####################################################### 25755
+ 169..181: ###################################################### 25408
+ 182..194: ###################################################### 25633
+ 195..207: ###################################################### 25613
+ 208..220: ###################################################### 25459
+ 221..233: ###################################################### 25322
+ 234..246: ##################################################### 25229
+ 247..259: ##################################### 17722
+
++++ Stats for printable char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+ num: 500000, avg: 78.23, stddev: 28.13, median 78, min 10, max 126
+ 10.. 15: ######### 5167
+ 16.. 21: 0
+ 22.. 27: 0
+ 28.. 33: ################## 10338
+ 34.. 39: ###################################################### 31469
+ 40.. 45: ###################################################### 30994
+ 46.. 51: ###################################################### 31366
+ 52.. 57: ###################################################### 31369
+ 58.. 63: ####################################################### 31531
+ 64.. 69: ###################################################### 31208
+ 70.. 75: ###################################################### 31228
+ 76.. 81: ###################################################### 31514
+ 82.. 87: ###################################################### 31209
+ 88.. 93: ###################################################### 31207
+ 94.. 99: ###################################################### 31342
+ 100..105: ###################################################### 31273
+ 106..111: ###################################################### 31116
+ 112..117: ###################################################### 31022
+ 118..123: ##################################################### 30911
+ 124..129: ########################### 15736
+
++++ Stats for numeral char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+ num: 500000, avg: 52.50, stddev: 2.87, median 53, min 48, max 57
+ 48: ###################################################### 49848
+ 49: ###################################################### 50118
+ 50: ###################################################### 49837
+ 51: ###################################################### 50252
+ 52: ###################################################### 49765
+ 53: ####################################################### 50369
+ 54: ###################################################### 50270
+ 55: ###################################################### 49885
+ 56: ###################################################### 49821
+ 57: ###################################################### 49835
+
++++ Stats for tree's depth ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats depth:
+ num: 1000, avg: 4.13, stddev: 3.52, median 3, min 1, max 15
+ 1: ####################################################### 339
+ 2: ################ 104
+ 3: ############### 98
+ 4: ##################### 133
+ 5: ######### 60
+ 6: #### 29
+ 7: ######## 54
+ 8: ####### 48
+ 9: ## 16
+ 10: ### 21
+ 11: ########### 68
+ 12: 1
+ 13: # 8
+ 14: ## 16
+ 15: 5
+
++++ Stats for bytes_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 7.51, stddev: 1.69, median 8, min 5, max 10
+ 5: ################################################## 817
+ 6: ################################################# 797
+ 7: ####################################################### 885
+ 8: ################################################### 834
+ 9: ###################################################### 877
+ 10: ################################################# 790
+
++++ Stats for bytes len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+ 0.. 497: ####################################################### 4270
+ 498.. 995: ###### 497
+ 996..1493: 17
+ 1494..1991: 9
+ 1992..2489: 13
+ 2490..2987: 13
+ 2988..3485: 9
+ 3486..3983: 14
+ 3984..4481: 14
+ 4482..4979: 17
+ 4980..5477: 9
+ 5478..5975: 10
+ 5976..6473: 15
+ 6474..6971: 16
+ 6972..7469: 16
+ 7470..7967: 9
+ 7968..8465: 12
+ 8466..8963: 15
+ 8964..9461: 9
+ 9462..9959: 16
+
++++ Stats for bytes_of len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 359.22, stddev: 1249.46, median 9, min 0, max 9958
+ 0.. 497: ####################################################### 4275
+ 498.. 995: ###### 479
+ 996..1493: 22
+ 1494..1991: 12
+ 1992..2489: 21
+ 2490..2987: 16
+ 2988..3485: 13
+ 3486..3983: 17
+ 3984..4481: 14
+ 4482..4979: 14
+ 4980..5477: 8
+ 5478..5975: 14
+ 5976..6473: 13
+ 6474..6971: 9
+ 6972..7469: 7
+ 7470..7967: 17
+ 7968..8465: 13
+ 8466..8963: 15
+ 8964..9461: 10
+ 9462..9959: 11
+
++++ Stats for bytes_printable len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+ 0.. 497: ####################################################### 4270
+ 498.. 995: ###### 497
+ 996..1493: 17
+ 1494..1991: 9
+ 1992..2489: 13
+ 2490..2987: 13
+ 2988..3485: 9
+ 3486..3983: 14
+ 3984..4481: 14
+ 4482..4979: 17
+ 4980..5477: 9
+ 5478..5975: 10
+ 5976..6473: 15
+ 6474..6971: 16
+ 6972..7469: 16
+ 7470..7967: 9
+ 7968..8465: 12
+ 8466..8963: 15
+ 8964..9461: 9
+ 9462..9959: 16
+
++++ Stats for bytes_small len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 15.99, stddev: 24.58, median 6, min 0, max 99
+ 0.. 4: ###################################################### 1920
+ 5.. 9: ####################################################### 1929
+ 10.. 14: # 69
+ 15.. 19: # 62
+ 20.. 24: # 63
+ 25.. 29: # 59
+ 30.. 34: # 68
+ 35.. 39: # 62
+ 40.. 44: # 57
+ 45.. 49: ## 83
+ 50.. 54: # 59
+ 55.. 59: ## 80
+ 60.. 64: # 48
+ 65.. 69: # 53
+ 70.. 74: # 61
+ 75.. 79: # 66
+ 80.. 84: # 61
+ 85.. 89: ## 72
+ 90.. 94: # 66
+ 95.. 99: # 62
+
++++ Stats for string_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 7.51, stddev: 1.69, median 8, min 5, max 10
+ 5: ################################################## 817
+ 6: ################################################# 797
+ 7: ####################################################### 885
+ 8: ################################################### 834
+ 9: ###################################################### 877
+ 10: ################################################# 790
+
++++ Stats for string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+ 0.. 497: ####################################################### 4270
+ 498.. 995: ###### 497
+ 996..1493: 17
+ 1494..1991: 9
+ 1992..2489: 13
+ 2490..2987: 13
+ 2988..3485: 9
+ 3486..3983: 14
+ 3984..4481: 14
+ 4482..4979: 17
+ 4980..5477: 9
+ 5478..5975: 10
+ 5976..6473: 15
+ 6474..6971: 16
+ 6972..7469: 16
+ 7470..7967: 9
+ 7968..8465: 12
+ 8466..8963: 15
+ 8964..9461: 9
+ 9462..9959: 16
+
++++ Stats for string_of len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 359.22, stddev: 1249.46, median 9, min 0, max 9958
+ 0.. 497: ####################################################### 4275
+ 498.. 995: ###### 479
+ 996..1493: 22
+ 1494..1991: 12
+ 1992..2489: 21
+ 2490..2987: 16
+ 2988..3485: 13
+ 3486..3983: 17
+ 3984..4481: 14
+ 4482..4979: 14
+ 4980..5477: 8
+ 5478..5975: 14
+ 5976..6473: 13
+ 6474..6971: 9
+ 6972..7469: 7
+ 7470..7967: 17
+ 7968..8465: 13
+ 8466..8963: 15
+ 8964..9461: 10
+ 9462..9959: 11
+
++++ Stats for string_printable len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+ 0.. 497: ####################################################### 4270
+ 498.. 995: ###### 497
+ 996..1493: 17
+ 1494..1991: 9
+ 1992..2489: 13
+ 2490..2987: 13
+ 2988..3485: 9
+ 3486..3983: 14
+ 3984..4481: 14
+ 4482..4979: 17
+ 4980..5477: 9
+ 5478..5975: 10
+ 5976..6473: 15
+ 6474..6971: 16
+ 6972..7469: 16
+ 7470..7967: 9
+ 7968..8465: 12
+ 8466..8963: 15
+ 8964..9461: 9
+ 9462..9959: 16
+
++++ Stats for small_string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 15.99, stddev: 24.58, median 6, min 0, max 99
+ 0.. 4: ###################################################### 1920
+ 5.. 9: ####################################################### 1929
+ 10.. 14: # 69
+ 15.. 19: # 62
+ 20.. 24: # 63
+ 25.. 29: # 59
+ 30.. 34: # 68
+ 35.. 39: # 62
+ 40.. 44: # 57
+ 45.. 49: ## 83
+ 50.. 54: # 59
+ 55.. 59: ## 80
+ 60.. 64: # 48
+ 65.. 69: # 53
+ 70.. 74: # 61
+ 75.. 79: # 66
+ 80.. 84: # 61
+ 85.. 89: ## 72
+ 90.. 94: # 66
+ 95.. 99: # 62
+
++++ Stats for pair dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats pair sum:
+ num: 500000, avg: 100.05, stddev: 41.29, median 100, min 0, max 200
+ 0.. 9: ### 2618
+ 10.. 19: ######## 7630
+ 20.. 29: ############## 12505
+ 30.. 39: #################### 17451
+ 40.. 49: ########################## 22280
+ 50.. 59: ############################### 27307
+ 60.. 69: ##################################### 32151
+ 70.. 79: ########################################### 37199
+ 80.. 89: ################################################# 41901
+ 90.. 99: ###################################################### 46313
+ 100..109: ####################################################### 46965
+ 110..119: ################################################# 42462
+ 120..129: ########################################### 37348
+ 130..139: ###################################### 32613
+ 140..149: ################################ 27606
+ 150..159: ########################### 23221
+ 160..169: ##################### 18125
+ 170..179: ############### 12890
+ 180..189: ######### 8059
+ 190..199: ### 3297
+ 200..209: 59
+
++++ Stats for triple dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats triple sum:
+ num: 500000, avg: 150.04, stddev: 50.53, median 150, min 1, max 300
+ 1.. 15: 360
+ 16.. 30: ## 2261
+ 31.. 45: ##### 5712
+ 46.. 60: ########## 10854
+ 61.. 75: ################# 17760
+ 76.. 90: ########################## 26151
+ 91..105: ################################### 36079
+ 106..120: ############################################# 45498
+ 121..135: ################################################### 51977
+ 136..150: ####################################################### 55179
+ 151..165: ###################################################### 54821
+ 166..180: ################################################### 51709
+ 181..195: ############################################# 45166
+ 196..210: ################################### 35354
+ 211..225: ######################### 25436
+ 226..240: ################# 17179
+ 241..255: ########## 10652
+ 256..270: ##### 5447
+ 271..285: ## 2065
+ 286..300: 340
+
++++ Stats for quad dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats quad sum:
+ num: 500000, avg: 200.06, stddev: 58.39, median 200, min 2, max 394
+ 2.. 21: 61
+ 22.. 41: 658
+ 42.. 61: ## 2534
+ 62.. 81: ##### 6444
+ 82..101: ########### 13334
+ 102..121: ################### 23279
+ 122..141: ############################## 35888
+ 142..161: ######################################### 48824
+ 162..181: ################################################## 59008
+ 182..201: ####################################################### 64896
+ 202..221: ###################################################### 64051
+ 222..241: ################################################# 57864
+ 242..261: ####################################### 46793
+ 262..281: ############################ 33955
+ 282..301: ################## 21775
+ 302..321: ########## 12187
+ 322..341: #### 5645
+ 342..361: # 2244
+ 362..381: 529
+ 382..401: 31
+
++++ Stats for bind dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats ordered pair difference:
+ num: 1000000, avg: 25.01, stddev: 22.38, median 19, min 0, max 100
+ 0.. 4: ####################################################### 193610
+ 5.. 9: #################################### 130051
+ 10.. 14: ############################# 104209
+ 15.. 19: ######################## 86993
+ 20.. 24: ##################### 74295
+ 25.. 29: ################## 64874
+ 30.. 34: ################ 56447
+ 35.. 39: ############## 49416
+ 40.. 44: ############ 43051
+ 45.. 49: ########## 37580
+ 50.. 54: ######### 32378
+ 55.. 59: ######## 28558
+ 60.. 64: ###### 23971
+ 65.. 69: ##### 20146
+ 70.. 74: #### 16446
+ 75.. 79: ### 13215
+ 80.. 84: ## 10294
+ 85.. 89: ## 7639
+ 90.. 94: # 4698
+ 95.. 99: 2041
+ 100..104: 88
+
+stats ordered pair sum:
+ num: 1000000, avg: 74.97, stddev: 46.86, median 72, min 0, max 200
+ 0.. 9: ####################################################### 70320
+ 10.. 19: ##################################################### 68731
+ 20.. 29: ##################################################### 68374
+ 30.. 39: ##################################################### 68544
+ 40.. 49: ##################################################### 68756
+ 50.. 59: ##################################################### 68837
+ 60.. 69: ##################################################### 68759
+ 70.. 79: ##################################################### 68517
+ 80.. 89: ##################################################### 68692
+ 90.. 99: ###################################################### 69123
+ 100..109: ################################################## 64777
+ 110..119: ########################################### 55288
+ 120..129: #################################### 47156
+ 130..139: ############################### 39635
+ 140..149: ######################### 32590
+ 150..159: #################### 25685
+ 160..169: ############### 19842
+ 170..179: ########## 14038
+ 180..189: ###### 8631
+ 190..199: ## 3580
+ 200..209: 125
+
++++ Stats for list len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 374.46, stddev: 1320.15, median 9, min 0, max 9984
+ 0.. 499: ####################################################### 4269
+ 500.. 999: ###### 503
+ 1000.. 1499: 13
+ 1500.. 1999: 6
+ 2000.. 2499: 22
+ 2500.. 2999: 13
+ 3000.. 3499: 10
+ 3500.. 3999: 5
+ 4000.. 4499: 15
+ 4500.. 4999: 10
+ 5000.. 5499: 15
+ 5500.. 5999: 12
+ 6000.. 6499: 6
+ 6500.. 6999: 12
+ 7000.. 7499: 11
+ 7500.. 7999: 15
+ 8000.. 8499: 21
+ 8500.. 8999: 11
+ 9000.. 9499: 15
+ 9500.. 9999: 16
+
++++ Stats for small_list len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 15.36, stddev: 23.76, median 6, min 0, max 99
+ 0.. 4: ###################################################### 1933
+ 5.. 9: ####################################################### 1962
+ 10.. 14: # 69
+ 15.. 19: # 57
+ 20.. 24: # 51
+ 25.. 29: # 62
+ 30.. 34: # 63
+ 35.. 39: # 65
+ 40.. 44: ## 77
+ 45.. 49: # 71
+ 50.. 54: # 56
+ 55.. 59: # 60
+ 60.. 64: # 66
+ 65.. 69: # 65
+ 70.. 74: # 69
+ 75.. 79: # 48
+ 80.. 84: # 53
+ 85.. 89: # 58
+ 90.. 94: # 64
+ 95.. 99: # 51
+
++++ Stats for list_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 7.50, stddev: 1.71, median 8, min 5, max 10
+ 5: ###################################################### 853
+ 6: #################################################### 819
+ 7: #################################################### 820
+ 8: #################################################### 825
+ 9: ####################################################### 857
+ 10: ##################################################### 826
+
++++ Stats for list_repeat len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 42.00, stddev: 0.00, median 42, min 42, max 42
+ 42: ####################################################### 5000
+
++++ Stats for array len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 374.46, stddev: 1320.15, median 9, min 0, max 9984
+ 0.. 499: ####################################################### 4269
+ 500.. 999: ###### 503
+ 1000.. 1499: 13
+ 1500.. 1999: 6
+ 2000.. 2499: 22
+ 2500.. 2999: 13
+ 3000.. 3499: 10
+ 3500.. 3999: 5
+ 4000.. 4499: 15
+ 4500.. 4999: 10
+ 5000.. 5499: 15
+ 5500.. 5999: 12
+ 6000.. 6499: 6
+ 6500.. 6999: 12
+ 7000.. 7499: 11
+ 7500.. 7999: 15
+ 8000.. 8499: 21
+ 8500.. 8999: 11
+ 9000.. 9499: 15
+ 9500.. 9999: 16
+
++++ Stats for small_array len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 15.36, stddev: 23.76, median 6, min 0, max 99
+ 0.. 4: ###################################################### 1933
+ 5.. 9: ####################################################### 1962
+ 10.. 14: # 69
+ 15.. 19: # 57
+ 20.. 24: # 51
+ 25.. 29: # 62
+ 30.. 34: # 63
+ 35.. 39: # 65
+ 40.. 44: ## 77
+ 45.. 49: # 71
+ 50.. 54: # 56
+ 55.. 59: # 60
+ 60.. 64: # 66
+ 65.. 69: # 65
+ 70.. 74: # 69
+ 75.. 79: # 48
+ 80.. 84: # 53
+ 85.. 89: # 58
+ 90.. 94: # 64
+ 95.. 99: # 51
+
++++ Stats for array_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 7.50, stddev: 1.71, median 8, min 5, max 10
+ 5: ###################################################### 853
+ 6: #################################################### 819
+ 7: #################################################### 820
+ 8: #################################################### 825
+ 9: ####################################################### 857
+ 10: ##################################################### 826
+
++++ Stats for array_repeat len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 42.00, stddev: 0.00, median 42, min 42, max 42
+ 42: ####################################################### 5000
+
++++ Stats for int_stats_neg ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 5000, avg: 0.43, stddev: 28.63, median 0, min -99, max 99
+ -99..-90: # 45
+ -89..-80: # 57
+ -79..-70: # 68
+ -69..-60: # 58
+ -59..-50: # 76
+ -49..-40: # 67
+ -39..-30: # 52
+ -29..-20: # 54
+ -19..-10: # 47
+ -9.. 0: ####################################################### 2205
+ 1.. 10: ########################################## 1697
+ 11.. 20: # 57
+ 21.. 30: # 70
+ 31.. 40: # 60
+ 41.. 50: # 66
+ 51.. 60: # 75
+ 61.. 70: # 68
+ 71.. 80: # 63
+ 81.. 90: # 66
+ 91..100: # 49
+
++++ Stats for small_signed_int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 0.86, stddev: 29.11, median 0, min -97, max 99
+ -97..-88: # 12
+ -87..-78: # 12
+ -77..-68: # 13
+ -67..-58: # 12
+ -57..-48: # 9
+ -47..-38: ## 17
+ -37..-28: # 13
+ -27..-18: # 8
+ -17.. -8: ######### 76
+ -7.. 2: ####################################################### 437
+ 3.. 12: ################################## 276
+ 13.. 22: ## 16
+ 23.. 32: # 11
+ 33.. 42: ## 16
+ 43.. 52: # 9
+ 53.. 62: # 12
+ 63.. 72: # 14
+ 73.. 82: # 12
+ 83.. 92: # 13
+ 93..102: # 12
+
++++ Stats for small_nat dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 15.86, stddev: 24.57, median 6, min 0, max 99
+ 0.. 4: ###################################################### 387
+ 5.. 9: ####################################################### 390
+ 10.. 14: # 11
+ 15.. 19: # 8
+ 20.. 24: # 11
+ 25.. 29: ## 15
+ 30.. 34: # 9
+ 35.. 39: # 11
+ 40.. 44: # 11
+ 45.. 49: ## 19
+ 50.. 54: # 10
+ 55.. 59: ## 19
+ 60.. 64: # 9
+ 65.. 69: # 9
+ 70.. 74: ## 19
+ 75.. 79: # 13
+ 80.. 84: # 11
+ 85.. 89: ## 16
+ 90.. 94: # 9
+ 95.. 99: # 13
+
++++ Stats for nat dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 382.03, stddev: 1290.55, median 9, min 0, max 9890
+ 0.. 494: ####################################################### 850
+ 495.. 989: ###### 93
+ 990..1484: 8
+ 1485..1979: 3
+ 1980..2474: 7
+ 2475..2969: 1
+ 2970..3464: 3
+ 3465..3959: 3
+ 3960..4454: 3
+ 4455..4949: 4
+ 4950..5444: 3
+ 5445..5939: 3
+ 5940..6434: 3
+ 6435..6929: 1
+ 6930..7424: 2
+ 7425..7919: 1
+ 7920..8414: 1
+ 8415..8909: 5
+ 8910..9404: 3
+ 9405..9899: 3
+
++++ Stats for int_range (-43643) 435434 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 193479.13, stddev: 136696.70, median 189823, min -43164, max 434961
+ -43164..-19258: ################################### 42
+ -19257.. 4649: ############################################## 56
+ 4650.. 28556: ############################################# 55
+ 28557.. 52463: ############################################### 57
+ 52464.. 76370: ######################################### 50
+ 76371..100277: ############################# 35
+ 100278..124184: ############################################### 57
+ 124185..148091: #################################### 44
+ 148092..171998: ############################################## 56
+ 171999..195905: ####################################################### 66
+ 195906..219812: ########################################### 52
+ 219813..243719: ######################################## 49
+ 243720..267626: ################################ 39
+ 267627..291533: ##################################### 45
+ 291534..315440: ##################################### 45
+ 315441..339347: ################################################# 59
+ 339348..363254: ################################################## 60
+ 363255..387161: ################################# 40
+ 387162..411068: ########################################## 51
+ 411069..434975: ################################### 42
+
++++ Stats for int_range (-40000) 40000 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: -591.06, stddev: 23026.79, median -911, min -39911, max 39959
+ -39911..-35918: ####################################### 45
+ -35917..-31924: #################################################### 59
+ -31923..-27930: ########################################### 49
+ -27929..-23936: ########################################## 48
+ -23935..-19942: ####################################################### 62
+ -19941..-15948: ############################################# 51
+ -15947..-11954: ######################################### 47
+ -11953.. -7960: ################################################# 56
+ -7959.. -3966: ################################### 40
+ -3965.. 28: ################################################### 58
+ 29.. 4022: ########################################### 49
+ 4023.. 8016: ############################################### 53
+ 8017.. 12010: ############################################ 50
+ 12011.. 16004: ################################### 40
+ 16005.. 19998: ####################################### 44
+ 19999.. 23992: ####################################################### 62
+ 23993.. 27986: ##################################### 42
+ 27987.. 31980: ######################################### 47
+ 31981.. 35974: ########################################## 48
+ 35975.. 39968: ############################################ 50
+
++++ Stats for int_range (-4) 4 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: -0.12, stddev: 2.52, median 0, min -4, max 4
+ -4: ########################################## 116
+ -3: ###################################### 103
+ -2: ############################################## 125
+ -1: ########################################## 115
+ 0: ####################################### 106
+ 1: ####################################################### 149
+ 2: ################################# 92
+ 3: ################################# 92
+ 4: ##################################### 102
+
++++ Stats for int_range (-4) 17 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 6.42, stddev: 6.43, median 6, min -4, max 17
+ -4..-3: ########################################### 89
+ -2..-1: ################################################# 101
+ 0.. 1: ############################################## 95
+ 2.. 3: ########################################### 89
+ 4.. 5: ############################################## 95
+ 6.. 7: ##################################### 78
+ 8.. 9: ####################################### 81
+ 10..11: ######################################## 84
+ 12..13: ####################################################### 113
+ 14..15: ######################################## 84
+ 16..17: ############################################ 91
+ 18..19: 0
+ 20..21: 0
+ 22..23: 0
+ 24..25: 0
+ 26..27: 0
+ 28..29: 0
+ 30..31: 0
+ 32..33: 0
+ 34..35: 0
+
++++ Stats for int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 100000, avg: -2481754.31, stddev: 618398387.27, median -5669677, min -1073719962, max 1073717275
+ -1073719962.. -966348101: ##################################################### 4978
+ -966348100.. -858976239: ##################################################### 5008
+ -858976238.. -751604377: #################################################### 4907
+ -751604376.. -644232515: ###################################################### 5037
+ -644232514.. -536860653: ###################################################### 5069
+ -536860652.. -429488791: ###################################################### 5052
+ -429488790.. -322116929: ###################################################### 5035
+ -322116928.. -214745067: ####################################################### 5128
+ -214745066.. -107373205: ##################################################### 5017
+ -107373204.. -1343: ##################################################### 5021
+ -1342.. 107370519: ##################################################### 5010
+ 107370520.. 214742381: ##################################################### 4964
+ 214742382.. 322114243: ##################################################### 4957
+ 322114244.. 429486105: ##################################################### 4994
+ 429486106.. 536857967: ##################################################### 5025
+ 536857968.. 644229829: ###################################################### 5047
+ 644229830.. 751601691: ##################################################### 4988
+ 751601692.. 858973553: #################################################### 4924
+ 858973554.. 966345415: #################################################### 4852
+ 966345416.. 1073717277: ##################################################### 4987
+
++++ Stats for oneof int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 1073741.60, stddev: 673131652.31, median 0, min -1073741824, max 1073741823
+ -1073741824.. -966367642: ################# 198
+ -966367641.. -858993459: 0
+ -858993458.. -751619276: 0
+ -751619275.. -644245093: 0
+ -644245092.. -536870910: 0
+ -536870909.. -429496727: 0
+ -429496726.. -322122544: 0
+ -322122543.. -214748361: 0
+ -214748360.. -107374178: 0
+ -107374177.. 5: ####################################################### 607
+ 6.. 107374188: 0
+ 107374189.. 214748371: 0
+ 214748372.. 322122554: 0
+ 322122555.. 429496737: 0
+ 429496738.. 536870920: 0
+ 536870921.. 644245103: 0
+ 644245104.. 751619286: 0
+ 751619287.. 858993469: 0
+ 858993470.. 966367652: 0
+ 966367653.. 1073741823: ################# 195
+================================================================================
+1 warning(s)
+failure (64 tests failed, 3 tests errored, ran 141 tests)
+random seed: 153870556
+
++++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: -20587725.59, stddev: 427231078.01, median 8, min -1072292884, max 1073741823
+ -1072292884.. -964991149: ## 26
+ -964991148.. -857689413: ### 31
+ -857689412.. -750387677: ## 22
+ -750387676.. -643085941: ## 22
+ -643085940.. -535784205: ## 27
+ -535784204.. -428482469: ### 30
+ -428482468.. -321180733: ## 29
+ -321180732.. -213878997: ## 20
+ -213878996.. -106577261: ## 20
+ -106577260.. 724475: ####################################################### 543
+ 724476.. 108026211: ## 22
+ 108026212.. 215327947: ## 22
+ 215327948.. 322629683: ### 32
+ 322629684.. 429931419: ## 29
+ 429931420.. 537233155: ## 20
+ 537233156.. 644534891: ## 21
+ 644534892.. 751836627: ## 20
+ 751836628.. 859138363: ## 22
+ 859138364.. 966440099: ## 24
+ 966440100.. 1073741823: # 18
+================================================================================
+success (ran 1 tests)
diff --git a/test/core/QCheck2_expect_test.expected.ocaml5 b/test/core/QCheck2_expect_test.expected.ocaml5.64
similarity index 99%
rename from test/core/QCheck2_expect_test.expected.ocaml5
rename to test/core/QCheck2_expect_test.expected.ocaml5.64
index 228b96e..bce5b4b 100644
--- a/test/core/QCheck2_expect_test.expected.ocaml5
+++ b/test/core/QCheck2_expect_test.expected.ocaml5.64
@@ -326,7 +326,7 @@ Test char never produces 'abcdef' failed (1 shrink steps):
--- Failure --------------------------------------------------------------------
-Test printable never produces '!"#$%&'' failed (1 shrink steps):
+Test printable never produces '!"#$%&' failed (1 shrink steps):
'!'
diff --git a/test/core/QCheck2_tests.ml b/test/core/QCheck2_tests.ml
index 87b843c..1da328a 100644
--- a/test/core/QCheck2_tests.ml
+++ b/test/core/QCheck2_tests.ml
@@ -389,8 +389,8 @@ module Shrink = struct
Gen.char (fun c -> not (List.mem c ['a';'b';'c';'d';'e';'f']))
let printable_is_never_sign = (* should shrink towards '!' with lowest ascii code 33 *)
- Test.make ~name:"printable never produces '!\"#$%&''" ~count:1000 ~print:Print.char
- Gen.printable (fun c -> not (List.mem c ['!';'@';'#';'$';'%']))
+ Test.make ~name:"printable never produces '!\"#$%&'" ~count:1000 ~print:Print.char
+ Gen.printable (fun c -> not (List.mem c ['!';'"';'#';'$';'%';'&']))
let numeral_is_never_less_5 =
Test.make ~name:"printable never produces less than '5" ~count:1000 ~print:Print.char
diff --git a/test/core/QCheck2_unit_tests.ml b/test/core/QCheck2_unit_tests.ml
index a982c5f..999bdc8 100644
--- a/test/core/QCheck2_unit_tests.ml
+++ b/test/core/QCheck2_unit_tests.ml
@@ -313,6 +313,20 @@ module Check_exn = struct
then
Alcotest.failf "%s: counter-example prefix. Received \"%s\"" name c_ex_str
+ let test_negative_trivial () =
+ let run_test () = check_exn QCheck2.(Test.make_neg Gen.int (fun _ -> false)) in
+ Alcotest.(check unit) "Success-negative-trivial" () @@ run_test ()
+
+ let test_negative_test_unexpected_success () =
+ let name = "negative-trivial-test" in
+ let run_test () = check_exn QCheck2.(Test.make_neg ~name Gen.int (fun _ -> true)) in
+ try
+ run_test ();
+ Alcotest.failf "Negative test didn't raise expected exception."
+ with
+ Test.Test_unexpected_success n ->
+ Alcotest.(check string) (Printf.sprintf "%s: name" name) n name
+
let tests =
("Test.check_exn", Alcotest.[
test_case "check_exn pass trivial" `Quick test_pass_trivial;
@@ -320,6 +334,8 @@ module Check_exn = struct
test_case "check_exn fail always" `Quick test_fail_always;
test_case "check_exn fail random" `Quick test_fail_random;
test_case "check_exn Error" `Quick test_error;
+ test_case "check_exn negative pass trivial" `Quick test_negative_trivial;
+ test_case "check_exn Unexpected success" `Quick test_negative_test_unexpected_success;
])
end
diff --git a/test/core/QCheck_expect_test.expected.32 b/test/core/QCheck_expect_test.expected.ocaml4.32
similarity index 98%
rename from test/core/QCheck_expect_test.expected.32
rename to test/core/QCheck_expect_test.expected.ocaml4.32
index 50d79b2..e5de618 100644
--- a/test/core/QCheck_expect_test.expected.32
+++ b/test/core/QCheck_expect_test.expected.ocaml4.32
@@ -498,6 +498,12 @@ Leaf 0
--- Failure --------------------------------------------------------------------
+Test sum list = 0 failed (0 shrink steps):
+
+[7; 1; 42; 1; 8; 5; 3; 9; 5; 38; 3; 3; 0; 1; 98; 1; 4; 13; 9; 2; 6; 9; 47; 6; 5; 8; 8; 6; 0; 9; 7; 2; 8; 6; 62; 6; 4; 31; 19; 1; 41; 60; 6; 5; 8; 1; 1; 4; 7; 7; 0; 5; 5; 71; 14; 26; 47; 5; 1; 6; 34; 9; 4; 2; 37; 3; 8; 4; 31; 6; 2; 1; 0; 7; 5; 1; 0; 15; 6; 1; 8; 13; 0; 6; 2; 4; 2; 6; 6; 1; 4; 1; 9; 79; 0; 87; 6; 8; 8; 62; 1; 4; 62; 6; 31; 1; 5; 6; 5; 9; 3; 3; 1; 79; 4; 3; 2; 67; 5; 7; 12; 70; 8; 8; 6; 1; 3; 14; 15; 1; 61; 4; 1; 4; 1; 7; 4; 4; 4; 2; 8; 8; 7; 5; 4; 27; 0; 9; 80; 25; 1; 8; 1; 3; 7; 4; 3; 5; 5; 6; 5; 5; 31; 7; 0; 3; 3; 6; 71; 76; 28; 60; 6; 2; 6; 3; 0; 4; 1; 0; 5; 7; 0; 28; 86; 4; 7; 51; 36; 0; 5; 0; 1; 4; 3; 6; 0; 1; 1; 8; 18; 4; 2; 8; 8; 1; 4; 7; 1; 0; 93; 5; 3; 0; 80; 1; 7; 7; 8; 8; 5; 7; 8; 9; 24; 4; 25; 8; 8; 5; 4; 90; 4; 6; 8; 4; 4; 0; 60; 8; 9; 7; 44; 5; 1; 2; 9; 74; 7; 7]
+
+--- Failure --------------------------------------------------------------------
+
Test fail_pred_map_commute failed (47 shrink steps):
([1], {_ -> 0}, {0 -> false; _ -> true})
@@ -1362,7 +1368,7 @@ stats dist:
966367653.. 1073741823: ################# 189
================================================================================
1 warning(s)
-failure (63 tests failed, 3 tests errored, ran 148 tests)
+failure (64 tests failed, 3 tests errored, ran 149 tests)
random seed: 153870556
+++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/test/core/QCheck_expect_test.expected.64 b/test/core/QCheck_expect_test.expected.ocaml4.64
similarity index 98%
rename from test/core/QCheck_expect_test.expected.64
rename to test/core/QCheck_expect_test.expected.ocaml4.64
index 26cb572..7accc9a 100644
--- a/test/core/QCheck_expect_test.expected.64
+++ b/test/core/QCheck_expect_test.expected.ocaml4.64
@@ -530,6 +530,12 @@ Leaf 0
--- Failure --------------------------------------------------------------------
+Test sum list = 0 failed (0 shrink steps):
+
+[7; 1; 42; 1; 8; 5; 3; 9; 5; 38; 3; 3; 0; 1; 98; 1; 4; 13; 9; 2; 6; 9; 47; 6; 5; 8; 8; 6; 0; 9; 7; 2; 8; 6; 62; 6; 4; 31; 19; 1; 41; 60; 6; 5; 8; 1; 1; 4; 7; 7; 0; 5; 5; 71; 14; 26; 47; 5; 1; 6; 34; 9; 4; 2; 37; 3; 8; 4; 31; 6; 2; 1; 0; 7; 5; 1; 0; 15; 6; 1; 8; 13; 0; 6; 2; 4; 2; 6; 6; 1; 4; 1; 9; 79; 0; 87; 6; 8; 8; 62; 1; 4; 62; 6; 31; 1; 5; 6; 5; 9; 3; 3; 1; 79; 4; 3; 2; 67; 5; 7; 12; 70; 8; 8; 6; 1; 3; 14; 15; 1; 61; 4; 1; 4; 1; 7; 4; 4; 4; 2; 8; 8; 7; 5; 4; 27; 0; 9; 80; 25; 1; 8; 1; 3; 7; 4; 3; 5; 5; 6; 5; 5; 31; 7; 0; 3; 3; 6; 71; 76; 28; 60; 6; 2; 6; 3; 0; 4; 1; 0; 5; 7; 0; 28; 86; 4; 7; 51; 36; 0; 5; 0; 1; 4; 3; 6; 0; 1; 1; 8; 18; 4; 2; 8; 8; 1; 4; 7; 1; 0; 93; 5; 3; 0; 80; 1; 7; 7; 8; 8; 5; 7; 8; 9; 24; 4; 25; 8; 8; 5; 4; 90; 4; 6; 8; 4; 4; 0; 60; 8; 9; 7; 44; 5; 1; 2; 9; 74; 7; 7]
+
+--- Failure --------------------------------------------------------------------
+
Test fail_pred_map_commute failed (77 shrink steps):
([1], {_ -> 0}, {1 -> true; _ -> false})
@@ -1394,7 +1400,7 @@ stats dist:
4150517416584649600.. 4611686018427387903: ################# 189
================================================================================
1 warning(s)
-failure (63 tests failed, 3 tests errored, ran 148 tests)
+failure (64 tests failed, 3 tests errored, ran 149 tests)
random seed: 153870556
+++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/test/core/QCheck_expect_test.expected.ocaml5.32 b/test/core/QCheck_expect_test.expected.ocaml5.32
new file mode 100644
index 0000000..f5ec356
--- /dev/null
+++ b/test/core/QCheck_expect_test.expected.ocaml5.32
@@ -0,0 +1,1409 @@
+random seed: 1234
+45 4 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 (8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+(8,fun,45) (4,fun,5) (5,fun,23) (54,fun,6) (6,fun,9) (2,fun,9) (2,fun,9) (77,fun,6) (6,fun,54) (1,fun,3)
+-466273346
+-233136673
+-116568337
+-58284169
+-29142085
+-14571043
+-7285522
+-3642761
+-1821381
+-910691
+-455346
+-227673
+-113837
+-56919
+-28460
+-14230
+-7115
+-3558
+-1779
+-890
+-445
+-223
+-112
+-56
+-28
+-14
+-7
+-4
+-2
+-1
+0
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7]
+[46; 2; 22; 4; 4; 2]
+[46; 2; 22]
+[46; 2]
+[]
+[46]
+[]
+[23]
+[]
+[12]
+[]
+[6]
+[]
+[3]
+[]
+[2]
+[]
+[1]
+[]
+[0]
+[]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0]
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7]
+[46; 2; 22; 4; 4; 2]
+[46; 2; 22]
+[46; 2; 4; 4; 2]
+[46; 2; 4]
+[46; 2; 4; 2]
+[46; 2]
+[4; 2]
+[46; 4; 2]
+[2; 4; 2]
+[2; 4]
+[2]
+[2; 2]
+[]
+[2]
+[2]
+[1; 2]
+[2; 1]
+
+--- Failure --------------------------------------------------------------------
+
+Test should_fail_sort_id failed (10 shrink steps):
+
+[1; 0]
+
+=== Error ======================================================================
+
+Test should_error_raise_exn errored on (30 shrink steps):
+
+0
+
+exception QCheck_tests.Overall.Error
+
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test collect_results:
+
+4: 24 cases
+3: 20 cases
+2: 18 cases
+1: 21 cases
+0: 17 cases
+
++++ Stats for with_stats ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats mod4:
+ num: 100, avg: 1.56, stddev: 1.18, median 2, min 0, max 3
+ 0: ################################################# 27
+ 1: #################################### 20
+ 2: ########################################## 23
+ 3: ####################################################### 30
+
+stats num:
+ num: 100, avg: 62.24, stddev: 33.15, median 62, min 2, max 120
+ 2.. 7: ######### 2
+ 8.. 13: ################################ 7
+ 14.. 19: ########################### 6
+ 20.. 25: ############# 3
+ 26.. 31: ###################### 5
+ 32.. 37: ################## 4
+ 38.. 43: ############# 3
+ 44.. 49: ################################ 7
+ 50.. 55: ################################ 7
+ 56.. 61: ###################### 5
+ 62.. 67: #################################### 8
+ 68.. 73: ######### 2
+ 74.. 79: ###################### 5
+ 80.. 85: ######### 2
+ 86.. 91: ####################################################### 12
+ 92.. 97: ###################### 5
+ 98..103: ################## 4
+ 104..109: ################## 4
+ 110..115: ############# 3
+ 116..121: ########################### 6
+
+--- Failure --------------------------------------------------------------------
+
+Test with shrinking retries failed (0 shrink steps):
+
+4
+
+!!! Warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Warning for test WARN_unlikely_precond:
+
+WARNING: only 0.5% tests (of 2000) passed precondition for "WARN_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_unlikely_precond failed:
+
+ERROR: only 0.5% tests (of 2000) passed precondition for "FAIL_unlikely_precond"
+
+NOTE: it is likely that the precondition is too strong, or that the generator is buggy.
+
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_bad_gen failed:
+
+ERROR: uncaught exception in generator for test FAIL_bad_gen after 100 steps:
+Exception: Invalid_argument("Gen.int_bound")
+Backtrace:
+
+--- Failure --------------------------------------------------------------------
+
+Test int double failed:
+
+Negative test int double succeeded but was expected to fail
+
+=== Error ======================================================================
+
+Test pos fail with error errored on (7 shrink steps):
+
+0
+
+exception QCheck_tests.Overall.Error
+
+
+=== Error ======================================================================
+
+Test neg fail with error errored on (7 shrink steps):
+
+0
+
+exception QCheck_tests.Overall.Error
+
+
+--- Failure --------------------------------------------------------------------
+
+Test char never produces '\255' failed (0 shrink steps):
+
+'\255'
+
+--- Failure --------------------------------------------------------------------
+
+Test big bound issue59 failed (20 shrink steps):
+
+209609
+
+--- Failure --------------------------------------------------------------------
+
+Test long_shrink failed (86 shrink steps):
+
+([0], [-1])
+
+--- Failure --------------------------------------------------------------------
+
+Test ints arent 0 mod 3 failed (26 shrink steps):
+
+2061
+
+--- Failure --------------------------------------------------------------------
+
+Test ints are 0 failed (29 shrink steps):
+
+-1
+
+--- Failure --------------------------------------------------------------------
+
+Test ints < 209609 failed (20 shrink steps):
+
+209609
+
+--- Failure --------------------------------------------------------------------
+
+Test nat < 5001 failed (4 shrink steps):
+
+5001
+
+--- Failure --------------------------------------------------------------------
+
+Test char never produces 'abcdef' failed (2 shrink steps):
+
+'a'
+
+--- Failure --------------------------------------------------------------------
+
+Test printable never produces '!"#$%&' failed (1 shrink steps):
+
+'&'
+
+--- Failure --------------------------------------------------------------------
+
+Test printable never produces less than '5 failed (0 shrink steps):
+
+'0'
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes are empty failed (13 shrink steps):
+
+a
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes never has a \000 char failed (13 shrink steps):
+
+
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes never has a \255 char failed (15 shrink steps):
+
+�
+
+--- Failure --------------------------------------------------------------------
+
+Test bytes have unique chars failed (14 shrink steps):
+
+��
+
+--- Failure --------------------------------------------------------------------
+
+Test strings are empty failed (13 shrink steps):
+
+"a"
+
+--- Failure --------------------------------------------------------------------
+
+Test string never has a \000 char failed (13 shrink steps):
+
+"\000"
+
+--- Failure --------------------------------------------------------------------
+
+Test string never has a \255 char failed (15 shrink steps):
+
+"\255"
+
+--- Failure --------------------------------------------------------------------
+
+Test strings have unique chars failed (14 shrink steps):
+
+"\232\232"
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have different components failed (0 shrink steps):
+
+(6, 6)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have same components failed (59 shrink steps):
+
+(0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs have a zero component failed (58 shrink steps):
+
+(-1, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are (0,0) failed (59 shrink steps):
+
+(0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are ordered failed (169 shrink steps):
+
+(1, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs are ordered reversely failed (58 shrink steps):
+
+(0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs sum to less than 128 failed (54 shrink steps):
+
+(0, 128)
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs lists rev concat failed (77 shrink steps):
+
+([0], [1])
+
+--- Failure --------------------------------------------------------------------
+
+Test pairs lists no overlap failed (24 shrink steps):
+
+([0], [0])
+
+--- Failure --------------------------------------------------------------------
+
+Test triples have pair-wise different components failed (4 shrink steps):
+
+(6, 6, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples have same components failed (85 shrink steps):
+
+(0, -1, -2)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples are ordered failed (87 shrink steps):
+
+(0, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test triples are ordered reversely failed (89 shrink steps):
+
+(0, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples have pair-wise different components failed (7 shrink steps):
+
+(0, 5, 5, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples have same components failed (117 shrink steps):
+
+(0, 1, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples are ordered failed (118 shrink steps):
+
+(0, 0, 0, -1)
+
+--- Failure --------------------------------------------------------------------
+
+Test quadruples are ordered reversely failed (120 shrink steps):
+
+(0, 0, 0, 1)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b) in nat: a < b failed (5 shrink steps):
+
+(0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c) in nat: a < b < c failed (14 shrink steps):
+
+(0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d) in nat: a < b < c < d failed (17 shrink steps):
+
+(0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e) in nat: a < b < c < d < e failed (21 shrink steps):
+
+(0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f) in nat: a < b < c < d < e < f failed (25 shrink steps):
+
+(0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g) in nat: a < b < c < d < e < f < g failed (27 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g, h) in nat: a < b < c < d < e < f < g < h failed (30 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test forall (a, b, c, d, e, f, g, h, i) in nat: a < b < c < d < e < f < g < h < i failed (34 shrink steps):
+
+(0, 0, 0, 0, 0, 0, 0, 0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test bind ordered pairs failed (53 shrink steps):
+
+(0, 0)
+
+--- Failure --------------------------------------------------------------------
+
+Test bind list_size constant failed (52 shrink steps):
+
+(4, [0; 0; 0; 0])
+
+--- Failure --------------------------------------------------------------------
+
+Test lists are empty failed (16 shrink steps):
+
+[0]
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 10 failed (49 shrink steps):
+
+[0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 432 failed (1738 shrink steps):
+
+[...] list length: 432
+
+--- Failure --------------------------------------------------------------------
+
+Test lists shorter than 4332 failed (11 shrink steps):
+
+[...] list length: 4332
+
+--- Failure --------------------------------------------------------------------
+
+Test lists have unique elems failed (10 shrink steps):
+
+[2; 2]
+
+--- Failure --------------------------------------------------------------------
+
+Test tree contains only 42 failed (9 shrink steps):
+
+Leaf 0
+
+--- Failure --------------------------------------------------------------------
+
+Test sum list = 0 failed (0 shrink steps):
+
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+
+--- Failure --------------------------------------------------------------------
+
+Test fail_pred_map_commute failed (47 shrink steps):
+
+([1], {_ -> 0}, {1 -> true; _ -> false})
+
+--- Failure --------------------------------------------------------------------
+
+Test fail_pred_strings failed (1 shrink steps):
+
+{some other string -> false; _ -> true}
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right failed (21 shrink steps):
+
+(0, [1], {(0, 1) -> 1; _ -> 0})
+
++++ Messages ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Messages for test fold_left fold_right:
+
+l=[1], fold_left=0, fold_right=1
+
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried failed (41 shrink steps):
+
+({(0, 4) -> 1; _ -> 0}, 0, [4])
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left fold_right uncurried fun last failed (25 shrink steps):
+
+(0, [1], {(0, 1) -> 1; _ -> 0})
+
+--- Failure --------------------------------------------------------------------
+
+Test fold_left test, fun first failed (66 shrink steps):
+
+({(, 2) -> "a"; _ -> ""}, "", [], [2])
+
+--- Failure --------------------------------------------------------------------
+
+Test FAIL_#99_1 failed:
+
+ERROR: uncaught exception in generator for test FAIL_#99_1 after 100 steps:
+Exception: QCheck.No_example_found("<example>")
+Backtrace:
+
++++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Collect results for test bool dist:
+
+true: 250511 cases
+false: 249489 cases
+
++++ Stats for char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+ num: 500000, avg: 127.68, stddev: 73.87, median 128, min 0, max 255
+ 0.. 12: ##################################################### 25272
+ 13.. 25: ###################################################### 25326
+ 26.. 38: ##################################################### 25194
+ 39.. 51: ###################################################### 25359
+ 52.. 64: ###################################################### 25338
+ 65.. 77: ###################################################### 25349
+ 78.. 90: ###################################################### 25397
+ 91..103: ##################################################### 25243
+ 104..116: ###################################################### 25420
+ 117..129: ###################################################### 25438
+ 130..142: ###################################################### 25346
+ 143..155: ##################################################### 25177
+ 156..168: ####################################################### 25755
+ 169..181: ###################################################### 25408
+ 182..194: ###################################################### 25633
+ 195..207: ###################################################### 25613
+ 208..220: ###################################################### 25459
+ 221..233: ###################################################### 25322
+ 234..246: ##################################################### 25229
+ 247..259: ##################################### 17722
+
++++ Stats for printable char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+ num: 500000, avg: 77.76, stddev: 27.87, median 78, min 10, max 125
+ 10.. 15: ######### 5255
+ 16.. 21: 0
+ 22.. 27: 0
+ 28.. 33: ################# 10417
+ 34.. 39: ###################################################### 31730
+ 40.. 45: ###################################################### 31499
+ 46.. 51: ###################################################### 31657
+ 52.. 57: ###################################################### 31704
+ 58.. 63: ###################################################### 31502
+ 64.. 69: ###################################################### 31643
+ 70.. 75: ###################################################### 31630
+ 76.. 81: ###################################################### 31481
+ 82.. 87: ###################################################### 31594
+ 88.. 93: ###################################################### 31817
+ 94.. 99: ###################################################### 31536
+ 100..105: ###################################################### 31528
+ 106..111: ###################################################### 31467
+ 112..117: ##################################################### 31246
+ 118..123: ####################################################### 31861
+ 124..129: ################## 10433
+
++++ Stats for numeral char code dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats char code:
+ num: 500000, avg: 52.50, stddev: 2.87, median 53, min 48, max 57
+ 48: ###################################################### 49848
+ 49: ###################################################### 50118
+ 50: ###################################################### 49837
+ 51: ###################################################### 50252
+ 52: ###################################################### 49765
+ 53: ####################################################### 50369
+ 54: ###################################################### 50270
+ 55: ###################################################### 49885
+ 56: ###################################################### 49821
+ 57: ###################################################### 49835
+
++++ Stats for tree's depth ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats depth:
+ num: 1000, avg: 4.13, stddev: 3.52, median 3, min 1, max 15
+ 1: ####################################################### 339
+ 2: ################ 104
+ 3: ############### 98
+ 4: ##################### 133
+ 5: ######### 60
+ 6: #### 29
+ 7: ######## 54
+ 8: ####### 48
+ 9: ## 16
+ 10: ### 21
+ 11: ########### 68
+ 12: 1
+ 13: # 8
+ 14: ## 16
+ 15: 5
+
++++ Stats for range_subset_spec ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 5000, avg: 9.99, stddev: 6.01, median 10, min 0, max 20
+ 0: ############################################### 231
+ 1: ############################################## 223
+ 2: ##################################################### 258
+ 3: ################################################ 233
+ 4: ############################################### 228
+ 5: ############################################### 231
+ 6: #################################################### 254
+ 7: ############################################### 228
+ 8: #################################################### 254
+ 9: ####################################################### 266
+ 10: ############################################## 224
+ 11: ################################################## 245
+ 12: ############################################### 230
+ 13: #################################################### 253
+ 14: ############################################## 223
+ 15: ################################################# 239
+ 16: ################################################## 243
+ 17: ################################################## 245
+ 18: ############################################# 220
+ 19: ################################################## 242
+ 20: ############################################### 230
+
++++ Stats for bytes_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 7.51, stddev: 1.69, median 8, min 5, max 10
+ 5: ################################################## 817
+ 6: ################################################# 797
+ 7: ####################################################### 885
+ 8: ################################################### 834
+ 9: ###################################################### 877
+ 10: ################################################# 790
+
++++ Stats for bytes len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+ 0.. 497: ####################################################### 4270
+ 498.. 995: ###### 497
+ 996..1493: 17
+ 1494..1991: 9
+ 1992..2489: 13
+ 2490..2987: 13
+ 2988..3485: 9
+ 3486..3983: 14
+ 3984..4481: 14
+ 4482..4979: 17
+ 4980..5477: 9
+ 5478..5975: 10
+ 5976..6473: 15
+ 6474..6971: 16
+ 6972..7469: 16
+ 7470..7967: 9
+ 7968..8465: 12
+ 8466..8963: 15
+ 8964..9461: 9
+ 9462..9959: 16
+
++++ Stats for bytes_of len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 359.22, stddev: 1249.46, median 9, min 0, max 9958
+ 0.. 497: ####################################################### 4275
+ 498.. 995: ###### 479
+ 996..1493: 22
+ 1494..1991: 12
+ 1992..2489: 21
+ 2490..2987: 16
+ 2988..3485: 13
+ 3486..3983: 17
+ 3984..4481: 14
+ 4482..4979: 14
+ 4980..5477: 8
+ 5478..5975: 14
+ 5976..6473: 13
+ 6474..6971: 9
+ 6972..7469: 7
+ 7470..7967: 17
+ 7968..8465: 13
+ 8466..8963: 15
+ 8964..9461: 10
+ 9462..9959: 11
+
++++ Stats for bytes_small len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 15.99, stddev: 24.58, median 6, min 0, max 99
+ 0.. 4: ###################################################### 1920
+ 5.. 9: ####################################################### 1929
+ 10.. 14: # 69
+ 15.. 19: # 62
+ 20.. 24: # 63
+ 25.. 29: # 59
+ 30.. 34: # 68
+ 35.. 39: # 62
+ 40.. 44: # 57
+ 45.. 49: ## 83
+ 50.. 54: # 59
+ 55.. 59: ## 80
+ 60.. 64: # 48
+ 65.. 69: # 53
+ 70.. 74: # 61
+ 75.. 79: # 66
+ 80.. 84: # 61
+ 85.. 89: ## 72
+ 90.. 94: # 66
+ 95.. 99: # 62
+
++++ Stats for string_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 7.51, stddev: 1.69, median 8, min 5, max 10
+ 5: ################################################## 817
+ 6: ################################################# 797
+ 7: ####################################################### 885
+ 8: ################################################### 834
+ 9: ###################################################### 877
+ 10: ################################################# 790
+
++++ Stats for string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+ 0.. 497: ####################################################### 4270
+ 498.. 995: ###### 497
+ 996..1493: 17
+ 1494..1991: 9
+ 1992..2489: 13
+ 2490..2987: 13
+ 2988..3485: 9
+ 3486..3983: 14
+ 3984..4481: 14
+ 4482..4979: 17
+ 4980..5477: 9
+ 5478..5975: 10
+ 5976..6473: 15
+ 6474..6971: 16
+ 6972..7469: 16
+ 7470..7967: 9
+ 7968..8465: 12
+ 8466..8963: 15
+ 8964..9461: 9
+ 9462..9959: 16
+
++++ Stats for string_of len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 359.22, stddev: 1249.46, median 9, min 0, max 9958
+ 0.. 497: ####################################################### 4275
+ 498.. 995: ###### 479
+ 996..1493: 22
+ 1494..1991: 12
+ 1992..2489: 21
+ 2490..2987: 16
+ 2988..3485: 13
+ 3486..3983: 17
+ 3984..4481: 14
+ 4482..4979: 14
+ 4980..5477: 8
+ 5478..5975: 14
+ 5976..6473: 13
+ 6474..6971: 9
+ 6972..7469: 7
+ 7470..7967: 17
+ 7968..8465: 13
+ 8466..8963: 15
+ 8964..9461: 10
+ 9462..9959: 11
+
++++ Stats for printable_string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 370.05, stddev: 1282.91, median 9, min 0, max 9947
+ 0.. 497: ####################################################### 4270
+ 498.. 995: ###### 497
+ 996..1493: 17
+ 1494..1991: 9
+ 1992..2489: 13
+ 2490..2987: 13
+ 2988..3485: 9
+ 3486..3983: 14
+ 3984..4481: 14
+ 4482..4979: 17
+ 4980..5477: 9
+ 5478..5975: 10
+ 5976..6473: 15
+ 6474..6971: 16
+ 6972..7469: 16
+ 7470..7967: 9
+ 7968..8465: 12
+ 8466..8963: 15
+ 8964..9461: 9
+ 9462..9959: 16
+
++++ Stats for small_string len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 15.99, stddev: 24.58, median 6, min 0, max 99
+ 0.. 4: ###################################################### 1920
+ 5.. 9: ####################################################### 1929
+ 10.. 14: # 69
+ 15.. 19: # 62
+ 20.. 24: # 63
+ 25.. 29: # 59
+ 30.. 34: # 68
+ 35.. 39: # 62
+ 40.. 44: # 57
+ 45.. 49: ## 83
+ 50.. 54: # 59
+ 55.. 59: ## 80
+ 60.. 64: # 48
+ 65.. 69: # 53
+ 70.. 74: # 61
+ 75.. 79: # 66
+ 80.. 84: # 61
+ 85.. 89: ## 72
+ 90.. 94: # 66
+ 95.. 99: # 62
+
++++ Stats for pair dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats pair sum:
+ num: 500000, avg: 100.05, stddev: 41.29, median 100, min 0, max 200
+ 0.. 9: ### 2618
+ 10.. 19: ######## 7630
+ 20.. 29: ############## 12505
+ 30.. 39: #################### 17451
+ 40.. 49: ########################## 22280
+ 50.. 59: ############################### 27307
+ 60.. 69: ##################################### 32151
+ 70.. 79: ########################################### 37199
+ 80.. 89: ################################################# 41901
+ 90.. 99: ###################################################### 46313
+ 100..109: ####################################################### 46965
+ 110..119: ################################################# 42462
+ 120..129: ########################################### 37348
+ 130..139: ###################################### 32613
+ 140..149: ################################ 27606
+ 150..159: ########################### 23221
+ 160..169: ##################### 18125
+ 170..179: ############### 12890
+ 180..189: ######### 8059
+ 190..199: ### 3297
+ 200..209: 59
+
++++ Stats for triple dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats triple sum:
+ num: 500000, avg: 150.04, stddev: 50.53, median 150, min 1, max 300
+ 1.. 15: 360
+ 16.. 30: ## 2261
+ 31.. 45: ##### 5712
+ 46.. 60: ########## 10854
+ 61.. 75: ################# 17760
+ 76.. 90: ########################## 26151
+ 91..105: ################################### 36079
+ 106..120: ############################################# 45498
+ 121..135: ################################################### 51977
+ 136..150: ####################################################### 55179
+ 151..165: ###################################################### 54821
+ 166..180: ################################################### 51709
+ 181..195: ############################################# 45166
+ 196..210: ################################### 35354
+ 211..225: ######################### 25436
+ 226..240: ################# 17179
+ 241..255: ########## 10652
+ 256..270: ##### 5447
+ 271..285: ## 2065
+ 286..300: 340
+
++++ Stats for quad dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats quad sum:
+ num: 500000, avg: 200.06, stddev: 58.39, median 200, min 2, max 394
+ 2.. 21: 61
+ 22.. 41: 658
+ 42.. 61: ## 2534
+ 62.. 81: ##### 6444
+ 82..101: ########### 13334
+ 102..121: ################### 23279
+ 122..141: ############################## 35888
+ 142..161: ######################################### 48824
+ 162..181: ################################################## 59008
+ 182..201: ####################################################### 64896
+ 202..221: ###################################################### 64051
+ 222..241: ################################################# 57864
+ 242..261: ####################################### 46793
+ 262..281: ############################ 33955
+ 282..301: ################## 21775
+ 302..321: ########## 12187
+ 322..341: #### 5645
+ 342..361: # 2244
+ 362..381: 529
+ 382..401: 31
+
++++ Stats for bind dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats ordered pair difference:
+ num: 1000000, avg: 25.01, stddev: 22.38, median 19, min 0, max 100
+ 0.. 4: ####################################################### 193610
+ 5.. 9: #################################### 130051
+ 10.. 14: ############################# 104209
+ 15.. 19: ######################## 86993
+ 20.. 24: ##################### 74295
+ 25.. 29: ################## 64874
+ 30.. 34: ################ 56447
+ 35.. 39: ############## 49416
+ 40.. 44: ############ 43051
+ 45.. 49: ########## 37580
+ 50.. 54: ######### 32378
+ 55.. 59: ######## 28558
+ 60.. 64: ###### 23971
+ 65.. 69: ##### 20146
+ 70.. 74: #### 16446
+ 75.. 79: ### 13215
+ 80.. 84: ## 10294
+ 85.. 89: ## 7639
+ 90.. 94: # 4698
+ 95.. 99: 2041
+ 100..104: 88
+
+stats ordered pair sum:
+ num: 1000000, avg: 74.97, stddev: 46.86, median 72, min 0, max 200
+ 0.. 9: ####################################################### 70320
+ 10.. 19: ##################################################### 68731
+ 20.. 29: ##################################################### 68374
+ 30.. 39: ##################################################### 68544
+ 40.. 49: ##################################################### 68756
+ 50.. 59: ##################################################### 68837
+ 60.. 69: ##################################################### 68759
+ 70.. 79: ##################################################### 68517
+ 80.. 89: ##################################################### 68692
+ 90.. 99: ###################################################### 69123
+ 100..109: ################################################## 64777
+ 110..119: ########################################### 55288
+ 120..129: #################################### 47156
+ 130..139: ############################### 39635
+ 140..149: ######################### 32590
+ 150..159: #################### 25685
+ 160..169: ############### 19842
+ 170..179: ########## 14038
+ 180..189: ###### 8631
+ 190..199: ## 3580
+ 200..209: 125
+
++++ Stats for list len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 374.46, stddev: 1320.15, median 9, min 0, max 9984
+ 0.. 499: ####################################################### 4269
+ 500.. 999: ###### 503
+ 1000.. 1499: 13
+ 1500.. 1999: 6
+ 2000.. 2499: 22
+ 2500.. 2999: 13
+ 3000.. 3499: 10
+ 3500.. 3999: 5
+ 4000.. 4499: 15
+ 4500.. 4999: 10
+ 5000.. 5499: 15
+ 5500.. 5999: 12
+ 6000.. 6499: 6
+ 6500.. 6999: 12
+ 7000.. 7499: 11
+ 7500.. 7999: 15
+ 8000.. 8499: 21
+ 8500.. 8999: 11
+ 9000.. 9499: 15
+ 9500.. 9999: 16
+
++++ Stats for small_list len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 15.36, stddev: 23.76, median 6, min 0, max 99
+ 0.. 4: ###################################################### 1933
+ 5.. 9: ####################################################### 1962
+ 10.. 14: # 69
+ 15.. 19: # 57
+ 20.. 24: # 51
+ 25.. 29: # 62
+ 30.. 34: # 63
+ 35.. 39: # 65
+ 40.. 44: ## 77
+ 45.. 49: # 71
+ 50.. 54: # 56
+ 55.. 59: # 60
+ 60.. 64: # 66
+ 65.. 69: # 65
+ 70.. 74: # 69
+ 75.. 79: # 48
+ 80.. 84: # 53
+ 85.. 89: # 58
+ 90.. 94: # 64
+ 95.. 99: # 51
+
++++ Stats for list_of_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 7.50, stddev: 1.71, median 8, min 5, max 10
+ 5: ###################################################### 853
+ 6: #################################################### 819
+ 7: #################################################### 820
+ 8: #################################################### 825
+ 9: ####################################################### 857
+ 10: ##################################################### 826
+
++++ Stats for list_repeat len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 42.00, stddev: 0.00, median 42, min 42, max 42
+ 42: ####################################################### 5000
+
++++ Stats for array len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 374.46, stddev: 1320.15, median 9, min 0, max 9984
+ 0.. 499: ####################################################### 4269
+ 500.. 999: ###### 503
+ 1000.. 1499: 13
+ 1500.. 1999: 6
+ 2000.. 2499: 22
+ 2500.. 2999: 13
+ 3000.. 3499: 10
+ 3500.. 3999: 5
+ 4000.. 4499: 15
+ 4500.. 4999: 10
+ 5000.. 5499: 15
+ 5500.. 5999: 12
+ 6000.. 6499: 6
+ 6500.. 6999: 12
+ 7000.. 7499: 11
+ 7500.. 7999: 15
+ 8000.. 8499: 21
+ 8500.. 8999: 11
+ 9000.. 9499: 15
+ 9500.. 9999: 16
+
++++ Stats for small_array len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 15.36, stddev: 23.76, median 6, min 0, max 99
+ 0.. 4: ###################################################### 1933
+ 5.. 9: ####################################################### 1962
+ 10.. 14: # 69
+ 15.. 19: # 57
+ 20.. 24: # 51
+ 25.. 29: # 62
+ 30.. 34: # 63
+ 35.. 39: # 65
+ 40.. 44: ## 77
+ 45.. 49: # 71
+ 50.. 54: # 56
+ 55.. 59: # 60
+ 60.. 64: # 66
+ 65.. 69: # 65
+ 70.. 74: # 69
+ 75.. 79: # 48
+ 80.. 84: # 53
+ 85.. 89: # 58
+ 90.. 94: # 64
+ 95.. 99: # 51
+
++++ Stats for array_of_size len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 7.50, stddev: 1.71, median 8, min 5, max 10
+ 5: ###################################################### 853
+ 6: #################################################### 819
+ 7: #################################################### 820
+ 8: #################################################### 825
+ 9: ####################################################### 857
+ 10: ##################################################### 826
+
++++ Stats for array_repeat len dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats len:
+ num: 5000, avg: 42.00, stddev: 0.00, median 42, min 42, max 42
+ 42: ####################################################### 5000
+
++++ Stats for int_stats_neg ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 5000, avg: 0.43, stddev: 28.63, median 0, min -99, max 99
+ -99..-90: # 45
+ -89..-80: # 57
+ -79..-70: # 68
+ -69..-60: # 58
+ -59..-50: # 76
+ -49..-40: # 67
+ -39..-30: # 52
+ -29..-20: # 54
+ -19..-10: # 47
+ -9.. 0: ####################################################### 2205
+ 1.. 10: ########################################## 1697
+ 11.. 20: # 57
+ 21.. 30: # 70
+ 31.. 40: # 60
+ 41.. 50: # 66
+ 51.. 60: # 75
+ 61.. 70: # 68
+ 71.. 80: # 63
+ 81.. 90: # 66
+ 91..100: # 49
+
++++ Stats for small_signed_int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 0.86, stddev: 29.11, median 0, min -97, max 99
+ -97..-88: # 12
+ -87..-78: # 12
+ -77..-68: # 13
+ -67..-58: # 12
+ -57..-48: # 9
+ -47..-38: ## 17
+ -37..-28: # 13
+ -27..-18: # 8
+ -17.. -8: ######### 76
+ -7.. 2: ####################################################### 437
+ 3.. 12: ################################## 276
+ 13.. 22: ## 16
+ 23.. 32: # 11
+ 33.. 42: ## 16
+ 43.. 52: # 9
+ 53.. 62: # 12
+ 63.. 72: # 14
+ 73.. 82: # 12
+ 83.. 92: # 13
+ 93..102: # 12
+
++++ Stats for small_nat dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 15.86, stddev: 24.57, median 6, min 0, max 99
+ 0.. 4: ###################################################### 387
+ 5.. 9: ####################################################### 390
+ 10.. 14: # 11
+ 15.. 19: # 8
+ 20.. 24: # 11
+ 25.. 29: ## 15
+ 30.. 34: # 9
+ 35.. 39: # 11
+ 40.. 44: # 11
+ 45.. 49: ## 19
+ 50.. 54: # 10
+ 55.. 59: ## 19
+ 60.. 64: # 9
+ 65.. 69: # 9
+ 70.. 74: ## 19
+ 75.. 79: # 13
+ 80.. 84: # 11
+ 85.. 89: ## 16
+ 90.. 94: # 9
+ 95.. 99: # 13
+
++++ Stats for nat dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 382.03, stddev: 1290.55, median 9, min 0, max 9890
+ 0.. 494: ####################################################### 850
+ 495.. 989: ###### 93
+ 990..1484: 8
+ 1485..1979: 3
+ 1980..2474: 7
+ 2475..2969: 1
+ 2970..3464: 3
+ 3465..3959: 3
+ 3960..4454: 3
+ 4455..4949: 4
+ 4950..5444: 3
+ 5445..5939: 3
+ 5940..6434: 3
+ 6435..6929: 1
+ 6930..7424: 2
+ 7425..7919: 1
+ 7920..8414: 1
+ 8415..8909: 5
+ 8910..9404: 3
+ 9405..9899: 3
+
++++ Stats for int_range (-43643) 435434 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 193479.13, stddev: 136696.70, median 189823, min -43164, max 434961
+ -43164..-19258: ################################### 42
+ -19257.. 4649: ############################################## 56
+ 4650.. 28556: ############################################# 55
+ 28557.. 52463: ############################################### 57
+ 52464.. 76370: ######################################### 50
+ 76371..100277: ############################# 35
+ 100278..124184: ############################################### 57
+ 124185..148091: #################################### 44
+ 148092..171998: ############################################## 56
+ 171999..195905: ####################################################### 66
+ 195906..219812: ########################################### 52
+ 219813..243719: ######################################## 49
+ 243720..267626: ################################ 39
+ 267627..291533: ##################################### 45
+ 291534..315440: ##################################### 45
+ 315441..339347: ################################################# 59
+ 339348..363254: ################################################## 60
+ 363255..387161: ################################# 40
+ 387162..411068: ########################################## 51
+ 411069..434975: ################################### 42
+
++++ Stats for int_range (-40000) 40000 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: -591.06, stddev: 23026.79, median -911, min -39911, max 39959
+ -39911..-35918: ####################################### 45
+ -35917..-31924: #################################################### 59
+ -31923..-27930: ########################################### 49
+ -27929..-23936: ########################################## 48
+ -23935..-19942: ####################################################### 62
+ -19941..-15948: ############################################# 51
+ -15947..-11954: ######################################### 47
+ -11953.. -7960: ################################################# 56
+ -7959.. -3966: ################################### 40
+ -3965.. 28: ################################################### 58
+ 29.. 4022: ########################################### 49
+ 4023.. 8016: ############################################### 53
+ 8017.. 12010: ############################################ 50
+ 12011.. 16004: ################################### 40
+ 16005.. 19998: ####################################### 44
+ 19999.. 23992: ####################################################### 62
+ 23993.. 27986: ##################################### 42
+ 27987.. 31980: ######################################### 47
+ 31981.. 35974: ########################################## 48
+ 35975.. 39968: ############################################ 50
+
++++ Stats for int_range (-4) 4 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: -0.12, stddev: 2.52, median 0, min -4, max 4
+ -4: ########################################## 116
+ -3: ###################################### 103
+ -2: ############################################## 125
+ -1: ########################################## 115
+ 0: ####################################### 106
+ 1: ####################################################### 149
+ 2: ################################# 92
+ 3: ################################# 92
+ 4: ##################################### 102
+
++++ Stats for int_range (-4) 17 dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 6.42, stddev: 6.43, median 6, min -4, max 17
+ -4..-3: ########################################### 89
+ -2..-1: ################################################# 101
+ 0.. 1: ############################################## 95
+ 2.. 3: ########################################### 89
+ 4.. 5: ############################################## 95
+ 6.. 7: ##################################### 78
+ 8.. 9: ####################################### 81
+ 10..11: ######################################## 84
+ 12..13: ####################################################### 113
+ 14..15: ######################################## 84
+ 16..17: ############################################ 91
+ 18..19: 0
+ 20..21: 0
+ 22..23: 0
+ 24..25: 0
+ 26..27: 0
+ 28..29: 0
+ 30..31: 0
+ 32..33: 0
+ 34..35: 0
+
++++ Stats for int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 100000, avg: -2481754.31, stddev: 618398387.27, median -5669677, min -1073719962, max 1073717275
+ -1073719962.. -966348101: ##################################################### 4978
+ -966348100.. -858976239: ##################################################### 5008
+ -858976238.. -751604377: #################################################### 4907
+ -751604376.. -644232515: ###################################################### 5037
+ -644232514.. -536860653: ###################################################### 5069
+ -536860652.. -429488791: ###################################################### 5052
+ -429488790.. -322116929: ###################################################### 5035
+ -322116928.. -214745067: ####################################################### 5128
+ -214745066.. -107373205: ##################################################### 5017
+ -107373204.. -1343: ##################################################### 5021
+ -1342.. 107370519: ##################################################### 5010
+ 107370520.. 214742381: ##################################################### 4964
+ 214742382.. 322114243: ##################################################### 4957
+ 322114244.. 429486105: ##################################################### 4994
+ 429486106.. 536857967: ##################################################### 5025
+ 536857968.. 644229829: ###################################################### 5047
+ 644229830.. 751601691: ##################################################### 4988
+ 751601692.. 858973553: #################################################### 4924
+ 858973554.. 966345415: #################################################### 4852
+ 966345416.. 1073717277: ##################################################### 4987
+
++++ Stats for oneof int dist ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: 1073741.60, stddev: 673131652.31, median 0, min -1073741824, max 1073741823
+ -1073741824.. -966367642: ################# 198
+ -966367641.. -858993459: 0
+ -858993458.. -751619276: 0
+ -751619275.. -644245093: 0
+ -644245092.. -536870910: 0
+ -536870909.. -429496727: 0
+ -429496726.. -322122544: 0
+ -322122543.. -214748361: 0
+ -214748360.. -107374178: 0
+ -107374177.. 5: ####################################################### 607
+ 6.. 107374188: 0
+ 107374189.. 214748371: 0
+ 214748372.. 322122554: 0
+ 322122555.. 429496737: 0
+ 429496738.. 536870920: 0
+ 536870921.. 644245103: 0
+ 644245104.. 751619286: 0
+ 751619287.. 858993469: 0
+ 858993470.. 966367652: 0
+ 966367653.. 1073741823: ################# 195
+================================================================================
+1 warning(s)
+failure (64 tests failed, 3 tests errored, ran 149 tests)
+random seed: 153870556
+
++++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+stats dist:
+ num: 1000, avg: -20587725.59, stddev: 427231078.01, median 8, min -1072292884, max 1073741823
+ -1072292884.. -964991149: ## 26
+ -964991148.. -857689413: ### 31
+ -857689412.. -750387677: ## 22
+ -750387676.. -643085941: ## 22
+ -643085940.. -535784205: ## 27
+ -535784204.. -428482469: ### 30
+ -428482468.. -321180733: ## 29
+ -321180732.. -213878997: ## 20
+ -213878996.. -106577261: ## 20
+ -106577260.. 724475: ####################################################### 543
+ 724476.. 108026211: ## 22
+ 108026212.. 215327947: ## 22
+ 215327948.. 322629683: ### 32
+ 322629684.. 429931419: ## 29
+ 429931420.. 537233155: ## 20
+ 537233156.. 644534891: ## 21
+ 644534892.. 751836627: ## 20
+ 751836628.. 859138363: ## 22
+ 859138364.. 966440099: ## 24
+ 966440100.. 1073741823: # 18
+================================================================================
+success (ran 1 tests)
diff --git a/test/core/QCheck_expect_test.expected.ocaml5 b/test/core/QCheck_expect_test.expected.ocaml5.64
similarity index 98%
rename from test/core/QCheck_expect_test.expected.ocaml5
rename to test/core/QCheck_expect_test.expected.ocaml5.64
index 0cf4036..1572ed2 100644
--- a/test/core/QCheck_expect_test.expected.ocaml5
+++ b/test/core/QCheck_expect_test.expected.ocaml5.64
@@ -540,6 +540,12 @@ Leaf 0
--- Failure --------------------------------------------------------------------
+Test sum list = 0 failed (0 shrink steps):
+
+[46; 2; 22; 4; 4; 2; 6; 5; 88; 24; 7; 9; 9; 2; 5; 1; 55; 8; 45; 1; 96; 0; 1; 2; 7; 4; 1; 5; 95; 6; 8; 6; 4; 0; 5; 5; 22; 87; 2; 1; 1; 0; 2; 2; 9; 5; 9; 3; 7; 59; 7; 96; 6; 5; 1; 3; 9; 9; 65; 6; 7; 7; 2; 5; 0; 0; 70; 5; 5; 2; 1; 57; 9; 7; 8; 10; 9; 7; 9; 75; 73; 80; 7; 9; 4; 3; 16; 5; 79; 1; 8; 6; 2; 3; 4; 9; 2; 8; 4; 6; 50; 2; 1; 5; 9; 5; 4; 3; 56; 6; 5; 9; 4; 1; 47; 1; 2; 5; 2; 0; 7; 31; 55; 6; 7; 4; 7; 8; 8; 2; 4; 40; 4; 6; 9; 3; 59; 5; 1; 0; 2; 6; 90; 1; 6; 81; 0; 1; 3; 7; 2; 4; 5; 4; 7; 3; 62; 0; 1; 6; 7; 5; 97; 83; 41; 7; 2; 6; 3; 0; 4; 8; 99; 8; 6; 0; 7; 9; 7; 1; 55; 30; 25; 3; 4; 7; 1; 6; 80; 8; 0; 4; 21; 3; 5; 9; 27; 10; 60; 47; 54; 6; 5; 8; 1; 5; 9; 65; 9; 5; 7; 7; 6; 48; 9; 5; 6; 4; 9; 7; 1; 2; 71; 6; 9; 2; 7; 8; 14; 59; 71; 30; 7; 3; 5; 4; 6; 7; 3; 6; 9; 8; 2; 38; 6; 6; 7; 1; 5; 2; 43; 5; 2; 9; 3; 0; 3; 2; 7; 71; 26; 3; 9; 11; 5; 1; 5; 2; 53; 46; 4; 6; 7; 67; 1; 0; 34; 0; 48; 5; 5; 0; 7; 49; 92; 8; 3; 0; 67; 1; 5; 2; 9; 5; 9; 3; 1; 4; 8; 0; 3; 6; 46; 58; 1; 54; 77; 0; 96; 1; 6; 2; 8; 22; 3; 9; 2; 6; 25; 49; 9; 6; 3; 8; 5; 9; 54; 1; 7; 5; 6; 5; 1; 7; 8; 23; 4; 6; 4; 2; 5; 8; 4; 7; 4]
+
+--- Failure --------------------------------------------------------------------
+
Test fail_pred_map_commute failed (79 shrink steps):
([11], {_ -> 0}, {11 -> false; _ -> true})
@@ -1404,7 +1410,7 @@ stats dist:
4150517416584649600.. 4611686018427387903: ################# 195
================================================================================
1 warning(s)
-failure (63 tests failed, 3 tests errored, ran 148 tests)
+failure (64 tests failed, 3 tests errored, ran 149 tests)
random seed: 153870556
+++ Stats for int_dist_empty_bucket ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/test/core/QCheck_tests.ml b/test/core/QCheck_tests.ml
index 7d22045..1d1779a 100644
--- a/test/core/QCheck_tests.ml
+++ b/test/core/QCheck_tests.ml
@@ -695,6 +695,11 @@ module Shrink = struct
IntTree.(make ~print:print_tree ~shrink:shrink_tree gen_tree)
(fun tree -> IntTree.contains_only_n tree 42)
+ let test_gen_no_shrink =
+ Test.make ~name:"sum list = 0"
+ (set_shrink Shrink.nil (list small_int))
+ (fun xs -> List.fold_left (+) 0 xs = 0)
+
let tests = [
(*test_fac_issue59;*)
big_bound_issue59;
@@ -748,6 +753,7 @@ module Shrink = struct
(*list_equal_dupl;*)
list_unique_elems;
tree_contains_only_42;
+ test_gen_no_shrink;
]
end
diff --git a/test/core/QCheck_unit_tests.ml b/test/core/QCheck_unit_tests.ml
index b904202..5360376 100644
--- a/test/core/QCheck_unit_tests.ml
+++ b/test/core/QCheck_unit_tests.ml
@@ -19,9 +19,9 @@ module Shrink = struct
let test_int () =
List.iter (alco_check Alcotest.int (trace_false Shrink.int) "on repeated failure")
- [ ("int 100", 100, [50; 75; 88; 94; 97; 99; 99]); (*WTF?*)
- ("int 1000", 1000, [500; 750; 875; 938; 969; 985; 993; 997; 999; 999]); (*WTF?*)
- ("int (-26)", -26, [-13; -20; -23; -25; -25]) ]; (*WTF?*)
+ [ ("int 100", 100, [50; 75; 88; 94; 97; 99]);
+ ("int 1000", 1000, [500; 750; 875; 938; 969; 985; 993; 997; 999]);
+ ("int (-26)", -26, [-13; -20; -23; -25]) ];
List.iter (alco_check Alcotest.int (trace_true Shrink.int) "on repeated success")
[ ("int 100", 100, [50; 25; 13; 7; 4; 2; 1; 0]);
("int 1000", 1000, [500; 250; 125; 63; 32; 16; 8; 4; 2; 1; 0]);
@@ -29,9 +29,9 @@ module Shrink = struct
let test_int32 () =
List.iter (alco_check Alcotest.int32 (trace_false Shrink.int32) "on repeated failure")
- [ ("int 100", 100l, [50l; 75l; 88l; 94l; 97l; 99l; 99l]);
- ("int 1000", 1000l, [500l; 750l; 875l; 938l; 969l; 985l; 993l; 997l; 999l; 999l]);
- ("int (-26)", -26l, [-13l; -20l; -23l; -25l; -25l]) ];
+ [ ("int 100", 100l, [50l; 75l; 88l; 94l; 97l; 99l]);
+ ("int 1000", 1000l, [500l; 750l; 875l; 938l; 969l; 985l; 993l; 997l; 999l]);
+ ("int (-26)", -26l, [-13l; -20l; -23l; -25l]) ];
List.iter (alco_check Alcotest.int32 (trace_true Shrink.int32) "on repeated success")
[ ("int 100", 100l, [50l; 25l; 13l; 7l; 4l; 2l; 1l; 0l]);
("int 1000", 1000l, [500l; 250l; 125l; 63l; 32l; 16l; 8l; 4l; 2l; 1l; 0l]);
@@ -39,9 +39,9 @@ module Shrink = struct
let test_int64 () =
List.iter (alco_check Alcotest.int64 (trace_false Shrink.int64) "on repeated failure")
- [ ("int 100", 100L, [50L; 75L; 88L; 94L; 97L; 99L; 99L]);
- ("int 1000", 1000L, [500L; 750L; 875L; 938L; 969L; 985L; 993L; 997L; 999L; 999L]);
- ("int (-26)", -26L, [-13L; -20L; -23L; -25L; -25L]) ];
+ [ ("int 100", 100L, [50L; 75L; 88L; 94L; 97L; 99L]);
+ ("int 1000", 1000L, [500L; 750L; 875L; 938L; 969L; 985L; 993L; 997L; 999L]);
+ ("int (-26)", -26L, [-13L; -20L; -23L; -25L]) ];
List.iter (alco_check Alcotest.int64 (trace_true Shrink.int64) "on repeated success")
[ ("int 100", 100L, [50L; 25L; 13L; 7L; 4L; 2L; 1L; 0L]);
("int 1000", 1000L, [500L; 250L; 125L; 63L; 32L; 16L; 8L; 4L; 2L; 1L; 0L]);
@@ -50,9 +50,9 @@ module Shrink = struct
let test_char () =
List.iter (alco_check Alcotest.char (trace_false Shrink.char) "on repeated failure")
[ ("char 'a'", 'a', []);
- ("char 'z'", 'z', ['n'; 't'; 'w'; 'y'; 'y']); (*WTF?*)
+ ("char 'z'", 'z', ['n'; 't'; 'w'; 'y']);
("char 'A'", 'A', ['Q'; 'I'; 'E'; 'C'; 'B']);
- ("char '~'", '~', ['p'; 'w'; '{'; '}'; '}']) ]; (*WTF?*)
+ ("char '~'", '~', ['p'; 'w'; '{'; '}']) ];
List.iter (alco_check Alcotest.char (trace_true Shrink.char) "on repeated success")
[ ("char 'a'", 'a', []);
("char 'z'", 'z', ['n'; 'h'; 'e'; 'c'; 'b'; 'a']);
@@ -72,8 +72,8 @@ module Shrink = struct
[ ("char 'A'", 'A', ['Q'; 'I'; 'E'; 'C'; 'B']);
("char 'a'", 'a', []);
("char ' '", ' ', ['@'; '0'; '('; '$'; '"'; '!']);
- ("char '~'", '~', ['p'; 'w'; '{'; '}'; '}']); (*WTF?*)
- ("char '\\n'", '\n', ['p'; 'w'; '{'; '}'; '}']); ]; (*WTF?*)
+ ("char '~'", '~', ['p'; 'w'; '{'; '}']);
+ ("char '\\n'", '\n', ['p'; 'w'; '{'; '}']); ];
List.iter (alco_check Alcotest.char (trace_true Shrink.char_printable) "on repeated success")
[ ("char 'A'", 'A', ['Q'; 'Y'; ']'; '_'; '`'; 'a']);
("char 'a'", 'a', []);
@@ -81,6 +81,42 @@ module Shrink = struct
("char '~'", '~', ['p'; 'i'; 'e'; 'c'; 'b'; 'a']);
("char '\\n'", '\n', ['p'; 'i'; 'e'; 'c'; 'b'; 'a']); ]
+ let test_string () =
+ List.iter (alco_check Alcotest.string (trace_false Shrink.string) "on repeated failure")
+ [ ("string \"\"", "", []);
+ ("string \"a\"", "a", [""]);
+ ("string \"aa\"", "aa", [""; "a"; "a"]);
+ ("string \"aaaa\"", "aaaa", ["aa"; "aa"; "aaa"; "aaa"]);
+ ("string \"abcd\"", "abcd", ["ab"; "cd"; "acd"; "bcd"; "aacd"; "abbd"; "abcc"]);
+ ("string \"E'*\"", "E'*", ["E'"; "*"; "E*"; "'*"; "S'*"; "L'*"; "H'*"; "F'*"; "ED*";
+ "E5*"; "E.*"; "E**"; "E(*"; "E'E"; "E'7"; "E'0"; "E'-"; "E'+"]);
+ ("string \"vi5x92xgG\"", "vi5x92xgG", (* A less exhaustive string shrinker would be preferable *)
+ ["vi5x9"; "vi52xgG"; "vix92xgG"; "5x92xgG";
+ "v5x92xgG"; "i5x92xgG"; "li5x92xgG"; "qi5x92xgG"; "ti5x92xgG"; "ui5x92xgG";
+ "ve5x92xgG"; "vg5x92xgG"; "vh5x92xgG";
+ "viKx92xgG"; "vi@x92xgG"; "vi:x92xgG"; "vi7x92xgG"; "vi6x92xgG";
+ "vi5m92xgG"; "vi5s92xgG"; "vi5v92xgG"; "vi5w92xgG";
+ "vi5xM2xgG"; "vi5xC2xgG"; "vi5x>2xgG"; "vi5x;2xgG"; "vi5x:2xgG";
+ "vi5x9IxgG"; "vi5x9=xgG"; "vi5x97xgG"; "vi5x94xgG"; "vi5x93xgG";
+ "vi5x92mgG"; "vi5x92sgG"; "vi5x92vgG"; "vi5x92wgG";
+ "vi5x92xdG"; "vi5x92xfG";
+ "vi5x92xgT"; "vi5x92xgM"; "vi5x92xgJ"; "vi5x92xgH"]);
+ ("string \"~~~~\"", "~~~~", ["~~"; "~~"; "~~~"; "~~~"; "p~~~"; "w~~~"; "{~~~"; "}~~~"; "~p~~";
+ "~w~~"; "~{~~"; "~}~~"; "~~p~"; "~~w~"; "~~{~"; "~~}~";
+ "~~~p"; "~~~w"; "~~~{"; "~~~}"]); ];
+ List.iter (alco_check Alcotest.string (trace_true Shrink.string) "on repeated success")
+ [ ("string \"\"", "", []);
+ ("string \"a\"", "a", [""]);
+ ("string \"aa\"", "aa", [""]);
+ ("string \"aaaa\"", "aaaa", ["aa"; ""]);
+ ("string \"abcd\"", "abcd", ["ab"; ""]);
+ ("string \"E'*\"", "E'*", ["E'"; ""]);
+ ("string \"vi5x92xgG\"", "vi5x92xgG", ["vi5x9"; "vi5"; "vi"; ""]); ]
+
+ let test_list_spine_compare () =
+ let run_test () = QCheck.Shrink.list_spine [pred;succ] ignore in
+ Alcotest.(check unit) "doesn't compare elements" () @@ run_test ()
+
let tests = ("Shrink", Alcotest.[
test_case "int" `Quick test_int;
test_case "int32" `Quick test_int32;
@@ -88,6 +124,8 @@ module Shrink = struct
test_case "char" `Quick test_char;
test_case "char_numeral" `Quick test_char_numeral;
test_case "char_printable" `Quick test_char_printable;
+ test_case "string" `Quick test_string;
+ test_case "list_spine" `Quick test_list_spine_compare;
])
end
@@ -151,6 +189,20 @@ module Check_exn = struct
then
Alcotest.failf "%s: counter-example prefix. Received \"%s\"" name c_ex_str
+ let test_negative_trivial () =
+ let run_test () = check_exn QCheck2.(Test.make_neg Gen.int (fun _ -> false)) in
+ Alcotest.(check unit) "Success-negative-trivial" () @@ run_test ()
+
+ let test_negative_test_unexpected_success () =
+ let name = "negative-trivial-test" in
+ let run_test () = check_exn QCheck2.(Test.make_neg ~name Gen.int (fun _ -> true)) in
+ try
+ run_test ();
+ Alcotest.failf "Negative test didn't raise expected exception."
+ with
+ Test.Test_unexpected_success n ->
+ Alcotest.(check string) (Printf.sprintf "%s: name" name) n name
+
let tests =
("Test.check_exn", Alcotest.[
test_case "check_exn pass trivial" `Quick test_pass_trivial;
@@ -158,6 +210,8 @@ module Check_exn = struct
test_case "check_exn fail always" `Quick test_fail_always;
test_case "check_exn fail random" `Quick test_fail_random;
test_case "check_exn Error" `Quick test_error;
+ test_case "check_exn negative pass trivial" `Quick test_negative_trivial;
+ test_case "check_exn Unexpected success" `Quick test_negative_test_unexpected_success;
])
end
diff --git a/test/core/dune b/test/core/dune
index e38f2ed..2f6b364 100644
--- a/test/core/dune
+++ b/test/core/dune
@@ -1,12 +1,3 @@
-(* -*- tuareg -*- *)
-
-let suffix =
- try
- let major_version = List.hd (String.split_on_char '.' Sys.ocaml_version) in
- if int_of_string major_version < 5 then string_of_int Sys.word_size else "ocaml5"
- with _ -> failwith ("Unknown OCaml version format: " ^ Sys.ocaml_version)
-
-let dune = Printf.sprintf {|
(library
(name QCheck_tests)
(modules QCheck_tests)
@@ -17,37 +8,53 @@ let dune = Printf.sprintf {|
(modules QCheck2_tests)
(libraries qcheck-core))
-(executable
- (name QCheck_expect_test)
- (modules QCheck_expect_test)
- (libraries qcheck-core qcheck-core.runner QCheck_tests))
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_expect_test.expected.ocaml5.64 QCheck_expect_test.expected)))
(rule
- (targets QCheck_expect_test.out)
- (action
- (with-stdout-to %%{targets}
- (run ./QCheck_expect_test.exe --no-colors -s 1234))))
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck_expect_test.expected.ocaml5.32 QCheck_expect_test.expected)))
(rule
- (alias runtest)
- (package qcheck-core)
- (action (diff QCheck_expect_test.expected.%s QCheck_expect_test.out)))
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck_expect_test.expected.ocaml4.64 QCheck_expect_test.expected)))
-(executable
- (name QCheck2_expect_test)
- (modules QCheck2_expect_test)
- (libraries qcheck-core qcheck-core.runner QCheck2_tests))
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck_expect_test.expected.ocaml4.32 QCheck_expect_test.expected)))
+
+;; implicitly compared against QCheck_expect_test.expected
+(test
+ (name QCheck_expect_test)
+ (modules QCheck_expect_test)
+ (package qcheck-core)
+ (libraries qcheck-core qcheck-core.runner QCheck_tests)
+ (action (run ./%{test} --no-colors -s 1234)))
(rule
- (targets QCheck2_expect_test.out)
- (action
- (with-stdout-to %%{targets}
- (run ./QCheck2_expect_test.exe --no-colors -s 1234))))
+ (enabled_if (and (= %{arch_sixtyfour} true) (>= %{ocaml_version} 5)))
+ (action (copy QCheck2_expect_test.expected.ocaml5.64 QCheck2_expect_test.expected)))
(rule
- (alias runtest)
- (package qcheck-core)
- (action (diff QCheck2_expect_test.expected.%s QCheck2_expect_test.out)))
+ (enabled_if (and (= %{arch_sixtyfour} false) (>= %{ocaml_version} 5)))
+ (action (copy QCheck2_expect_test.expected.ocaml5.32 QCheck2_expect_test.expected)))
+
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} true) (< %{ocaml_version} 5)))
+ (action (copy QCheck2_expect_test.expected.ocaml4.64 QCheck2_expect_test.expected)))
+
+(rule
+ (enabled_if (and (= %{arch_sixtyfour} false) (< %{ocaml_version} 5)))
+ (action (copy QCheck2_expect_test.expected.ocaml4.32 QCheck2_expect_test.expected)))
+
+;; implicitly compared against QCheck2_expect_test.expected
+(test
+ (name QCheck2_expect_test)
+ (modules QCheck2_expect_test)
+ (package qcheck-core)
+ (libraries qcheck-core qcheck-core.runner QCheck2_tests)
+ (action (run ./%{test} --no-colors -s 1234)))
(tests
(names QCheck_unit_tests QCheck2_unit_tests)
@@ -59,7 +66,3 @@ let dune = Printf.sprintf {|
(name shrink_benchmark)
(modules shrink_benchmark)
(libraries qcheck-core qcheck-core.runner QCheck_tests QCheck2_tests))
-
-|} suffix suffix
-
-let () = Jbuild_plugin.V1.send dune
diff --git a/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml b/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml
index f30bedc..4ba46d1 100644
--- a/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml
+++ b/test/ppx_deriving_qcheck/deriver/qcheck/test_textual.ml
@@ -860,6 +860,41 @@ let test_unused_variable () =
in
check_eq ~expected ~actual "deriving variant with unused fuel parameter"
+(* Regression test: https://github.com/c-cube/qcheck/issues/269 *)
+let test_faulty_is_rec_typ_in_variant () =
+ let expected =
+ [
+ [%stri let rec gen_sized n =
+ QCheck.Gen.map (fun gen0 -> Foo gen0) (QCheck.Gen.list (gen_sized (n / 2)))];
+ [%stri let gen = QCheck.Gen.sized gen_sized];
+ [%stri let arb_sized n = QCheck.make @@ (gen_sized n)];
+ [%stri let arb = QCheck.make @@ gen];
+ ]
+ in
+ let actual = f @@ extract [%stri type t = Foo of t list]
+ in
+ check_eq ~expected ~actual "deriving rec type in a type constructor inside variant"
+
+let test_faulty_is_rec_constr_decl () =
+ let expected =
+ [
+ [%stri let rec gen_sized n =
+ match n with
+ | 0 -> QCheck.Gen.pure Foo
+ | _ ->
+ QCheck.Gen.frequency
+ [(1, (QCheck.Gen.pure Foo));
+ (1,
+ (QCheck.Gen.map (fun gen0 -> Bar { baz = gen0 })
+ (gen_sized (n / 2))))]];
+ [%stri let gen = QCheck.Gen.sized gen_sized];
+ [%stri let arb_sized n = QCheck.make @@ (gen_sized n)];
+ [%stri let arb = QCheck.make @@ gen];
+ ]
+ in
+ let actual = f @@ extract [%stri type t = Foo | Bar of { baz : t }]
+ in
+ check_eq ~expected ~actual "deriving rec type in a type constructor inside record"
let () =
Alcotest.(
@@ -907,5 +942,13 @@ let () =
"deriving variant with unused fuel parameter"
`Quick
test_unused_variable;
+ test_case
+ "deriving rec type in a type constructor inside variant"
+ `Quick
+ test_faulty_is_rec_typ_in_variant;
+ test_case
+ "deriving rec type in a type constructor inside record"
+ `Quick
+ test_faulty_is_rec_constr_decl;
] );
])
More details
Historical runs
- apt-broken-packages: Broken apt packages: ['libounit-ocaml-dev-4w3y0', 'libounit-ocaml-dev-4w3y0']
- success: Merged new upstream version 0.21
- nothing-to-do: Last upstream version 0.20 already imported.
- success: Merged new upstream version 0.20
- push-failed: Failed to push result branch: Connection closed: Connection closed early The remote server unexpectedly closed the connection.
- nothing-to-do: Last upstream version 0.18.1 already imported. Import a snapshot by specifying --snapshot.
- nothing-to-do: Last upstream version 0.18.1 already imported. Import a snapshot by specifying --snapshot.
- nothing-to-do: Last upstream version 0.18.1 already imported. Import a snapshot by specifying --snapshot.