mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
more tests for Bij, using random structures
This commit is contained in:
parent
98ce2aa394
commit
5701df09ad
1 changed files with 28 additions and 0 deletions
|
|
@ -52,6 +52,32 @@ let test_rec () =
|
||||||
let t' = SexpStr.of_string ~bij:bij_term s in
|
let t' = SexpStr.of_string ~bij:bij_term s in
|
||||||
OUnit.assert_equal t t'
|
OUnit.assert_equal t t'
|
||||||
|
|
||||||
|
let random_str len =
|
||||||
|
let s = String.make len ' ' in
|
||||||
|
for i = 0 to len - 1 do
|
||||||
|
s.[i] <- "abcdefghijklmnopqrstuvwxyz".[Random.int 26]
|
||||||
|
done;
|
||||||
|
s
|
||||||
|
|
||||||
|
let rec random_term depth =
|
||||||
|
if depth = 0
|
||||||
|
then if Random.bool ()
|
||||||
|
then Const (random_str (1 + Random.int 5))
|
||||||
|
else Int (Random.int 20)
|
||||||
|
else
|
||||||
|
let len = Random.int (1 + Random.int 10) in
|
||||||
|
let seq = Sequence.map (fun _ -> random_term (depth-1))
|
||||||
|
(Sequence.int_range ~start:1 ~stop:len) in
|
||||||
|
App (Sequence.to_list seq)
|
||||||
|
|
||||||
|
let test_term_random ?(depth=5) n () =
|
||||||
|
for i = 0 to n - 1 do
|
||||||
|
let t = random_term depth in
|
||||||
|
let s = SexpStr.to_string ~bij:bij_term t in
|
||||||
|
let t' = SexpStr.of_string ~bij:bij_term s in
|
||||||
|
OUnit.assert_equal t t'
|
||||||
|
done
|
||||||
|
|
||||||
let suite =
|
let suite =
|
||||||
"test_bij" >:::
|
"test_bij" >:::
|
||||||
[ "test_int2" >:: test_int2;
|
[ "test_int2" >:: test_int2;
|
||||||
|
|
@ -60,4 +86,6 @@ let suite =
|
||||||
"test_intlist100" >:: test_intlist 100;
|
"test_intlist100" >:: test_intlist 100;
|
||||||
"test_intlist10_000" >:: test_intlist 10_000;
|
"test_intlist10_000" >:: test_intlist 10_000;
|
||||||
"test_rec" >:: test_rec;
|
"test_rec" >:: test_rec;
|
||||||
|
"test_term_random100" >:: test_term_random 100;
|
||||||
|
"test_term_random100_depth10" >:: test_term_random ~depth:10 100;
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue