some more tests

This commit is contained in:
Simon Cruanes 2013-10-29 00:59:34 +01:00
parent b202db7049
commit c2931edb4e
4 changed files with 99 additions and 0 deletions

View file

@ -30,6 +30,9 @@ let suite =
let props = let props =
QCheck.flatten QCheck.flatten
[ Test_PersistentHashtbl.props [ Test_PersistentHashtbl.props
; Test_BV.props
; Test_bencode.props
; Test_vector.props
] ]
let _ = let _ =

25
tests/test_BV.ml Normal file
View file

@ -0,0 +1,25 @@
open QCheck
let check_create_cardinal =
let gen = Arbitrary.small_int in
let prop n = BV.cardinal (BV.create ~size:n true) = n in
let name = "bv_create_cardinal" in
mk_test ~name ~pp:string_of_int gen prop
let pp bv = PP.(list string) (List.map string_of_int (BV.to_list bv))
let check_iter_true =
let gen = Arbitrary.(lift BV.of_list (list small_int)) in
let prop bv =
let l' = Sequence.to_rev_list (BV.iter_true bv) in
let bv' = BV.of_list l' in
BV.cardinal bv = BV.cardinal bv'
in
let name = "bv_iter_true" in
mk_test ~pp ~size:BV.cardinal ~name gen prop
let props =
[ check_create_cardinal
; check_iter_true
]

View file

@ -44,3 +44,27 @@ let suite =
"test2" >:: test2; "test2" >:: test2;
"test3" >:: test3; "test3" >:: test3;
] ]
open QCheck
let check_decode_encode =
let gen = Arbitrary.(
let base = choose
[ lift (fun i -> B.I i) small_int
; lift (fun s -> B.S s) string
]
in
fix ~max:3 ~base (fun sub ->
choose
[ lift B.dict_of_list (list (pair string sub))
; lift (fun l -> B.L l) (list sub)
; sub
]))
in
let prop b = B.eq (B.of_string (B.to_string b)) b in
let name = "bencode_decode_encode_bij" in
mk_test ~name gen prop
let props =
[ check_decode_encode
]

View file

@ -43,3 +43,50 @@ let suite =
"test_copy" >:: test_copy; "test_copy" >:: test_copy;
"test_shrink" >:: test_shrink; "test_shrink" >:: test_shrink;
] ]
open QCheck
module V = Vector
let gen sub = Arbitrary.(lift V.from_list (list sub))
let pp v = PP.(list string) (List.map string_of_int (V.to_list v))
let check_append =
let gen = Arbitrary.(pair (gen small_int) (gen small_int)) in
let prop (v1, v2) =
let l1 = V.to_list v1 in
V.append v1 v2;
Sequence.to_list (V.to_seq v1) =
Sequence.(to_list (append (of_list l1) (V.to_seq v2)))
in
let name = "vector_append" in
mk_test ~name ~pp:PP.(pair pp pp) gen prop
let check_sort =
let gen = Arbitrary.(gen small_int) in
let prop v =
let v' = V.copy v in
V.sort v';
let l = V.to_list v' in
List.sort compare l = l
in
let name = "vector_sort" in
mk_test ~name ~pp gen prop
let check_shrink =
let gen = Arbitrary.(gen small_int) in
let prop v =
let n = V.size v / 2 in
let l = V.to_list v in
let h = Sequence.(to_list (take n (of_list l))) in
let v' = V.copy v in
V.shrink v' n;
h = V.to_list v'
in
let name = "vector_shrink" in
mk_test ~name ~pp gen prop
let props =
[ check_append
; check_sort
; check_shrink
]