This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
|
|
@ -0,0 +1,78 @@
|
|||
open! Import
|
||||
open! Ordered_collection_common
|
||||
|
||||
let%test_unit "fast check_pos_len_exn is correct" =
|
||||
let n_vals =
|
||||
[ 0
|
||||
; 1
|
||||
; 2
|
||||
; 10
|
||||
; 100
|
||||
; (Int.max_value / 2) - 2
|
||||
; (Int.max_value / 2) - 1
|
||||
; Int.max_value / 2
|
||||
; Int.max_value - 2
|
||||
; Int.max_value - 1
|
||||
; Int.max_value
|
||||
]
|
||||
in
|
||||
let z_vals =
|
||||
[ Int.min_value
|
||||
; Int.min_value + 1
|
||||
; Int.min_value + 2
|
||||
; Int.min_value / 2
|
||||
; (Int.min_value / 2) + 1
|
||||
; (Int.min_value / 2) + 2
|
||||
; -100
|
||||
; -10
|
||||
; -2
|
||||
; -1
|
||||
]
|
||||
@ n_vals
|
||||
in
|
||||
List.iter z_vals ~f:(fun pos ->
|
||||
List.iter z_vals ~f:(fun len ->
|
||||
List.iter n_vals ~f:(fun total_length ->
|
||||
assert (
|
||||
Bool.equal
|
||||
(Exn.does_raise (fun () ->
|
||||
Private.slow_check_pos_len_exn ~pos ~len ~total_length))
|
||||
(Exn.does_raise (fun () -> check_pos_len_exn ~pos ~len ~total_length))))))
|
||||
;;
|
||||
|
||||
let%test_unit _ =
|
||||
let vals = [ -1; 0; 1; 2; 3 ] in
|
||||
List.iter [ 0; 1; 2 ] ~f:(fun total_length ->
|
||||
List.iter vals ~f:(fun pos ->
|
||||
List.iter vals ~f:(fun len ->
|
||||
let result =
|
||||
Result.try_with (fun () -> check_pos_len_exn ~pos ~len ~total_length)
|
||||
in
|
||||
let valid = pos >= 0 && len >= 0 && len <= total_length - pos in
|
||||
assert (Bool.equal valid (Result.is_ok result)))))
|
||||
;;
|
||||
|
||||
let%test_unit _ =
|
||||
let opts = [ None; Some (-1); Some 0; Some 1; Some 2 ] in
|
||||
List.iter [ 0; 1; 2 ] ~f:(fun total_length ->
|
||||
List.iter opts ~f:(fun pos ->
|
||||
List.iter opts ~f:(fun len ->
|
||||
let result = get_pos_len () ?pos ?len ~total_length in
|
||||
let pos =
|
||||
match pos with
|
||||
| Some x -> x
|
||||
| None -> 0
|
||||
in
|
||||
let len =
|
||||
match len with
|
||||
| Some x -> x
|
||||
| None -> total_length - pos
|
||||
in
|
||||
let valid = pos >= 0 && len >= 0 && len <= total_length - pos in
|
||||
match result with
|
||||
| Error _ -> assert (not valid)
|
||||
| Ok (pos', len') ->
|
||||
assert (pos' = pos);
|
||||
assert (len' = len);
|
||||
assert valid)))
|
||||
;;
|
||||
Loading…
Add table
Add a link
Reference in a new issue