mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
QCheck: nicer output (with time and number of failures and unicode);
also, infix operator for arbitrary ints
This commit is contained in:
parent
3e46b3193d
commit
3aae03b3dd
1 changed files with 14 additions and 10 deletions
24
qCheck.ml
24
qCheck.ml
|
|
@ -39,6 +39,8 @@ module Arbitrary = struct
|
|||
then 0
|
||||
else start + Random.State.int st n
|
||||
|
||||
let (--) start stop = int_range ~start ~stop
|
||||
|
||||
let small_int = int 100
|
||||
|
||||
let bool = Random.State.bool
|
||||
|
|
@ -254,20 +256,20 @@ let run ?(out=stdout) ?(rand=Random.State.make_self_init()) (Test test) =
|
|||
Printf.fprintf out "testing property %s...\n" test.name;
|
||||
match check ~rand ~n:test.n test.gen test.prop with
|
||||
| Ok (n, prefail) ->
|
||||
Printf.fprintf out "passed %d tests (%d preconditions failed)\n" n prefail;
|
||||
Printf.fprintf out " [✔] passed %d tests (%d preconditions failed)\n" n prefail;
|
||||
true
|
||||
| Failed l ->
|
||||
begin match test.pp with
|
||||
| None -> Printf.fprintf out "%d failures\n" (List.length l)
|
||||
| None -> Printf.fprintf out " [×] %d failures\n" (List.length l)
|
||||
| Some pp ->
|
||||
Printf.fprintf out "%d failures:\n" (List.length l);
|
||||
Printf.fprintf out " [×] %d failures:\n" (List.length l);
|
||||
List.iter
|
||||
(fun x -> Printf.fprintf out " %s\n" (pp x))
|
||||
l
|
||||
end;
|
||||
false
|
||||
| Error e ->
|
||||
Printf.fprintf out "error: %s\n" (Printexc.to_string e);
|
||||
Printf.fprintf out " [×] error: %s\n" (Printexc.to_string e);
|
||||
false
|
||||
|
||||
type suite = test list
|
||||
|
|
@ -275,10 +277,12 @@ type suite = test list
|
|||
let flatten = List.flatten
|
||||
|
||||
let run_tests ?(out=stdout) ?(rand=Random.State.make_self_init()) l =
|
||||
let res = ref true in
|
||||
let start = Unix.gettimeofday () in
|
||||
let failed = ref 0 in
|
||||
Printf.fprintf out "check %d properties...\n" (List.length l);
|
||||
List.iter (fun test -> if not (run ~out ~rand test) then res := false) l;
|
||||
if !res
|
||||
then Printf.fprintf out "Success!\n"
|
||||
else Printf.fprintf out "Failure.\n";
|
||||
!res
|
||||
List.iter (fun test -> if not (run ~out ~rand test) then incr failed) l;
|
||||
Printf.fprintf out "tests run in %.2fs\n" (Unix.gettimeofday() -. start);
|
||||
if !failed = 0
|
||||
then Printf.fprintf out "[✔] Success!\n"
|
||||
else Printf.fprintf out "[×] Failure (%d tests failed).\n" !failed;
|
||||
!failed = 0
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue