mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-07 11:45:31 -05:00
add tests to CCFQueue
This commit is contained in:
parent
adcff57e4c
commit
2d9988f080
1 changed files with 27 additions and 0 deletions
|
|
@ -232,10 +232,20 @@ let init q =
|
||||||
try fst (take_back_exn q)
|
try fst (take_back_exn q)
|
||||||
with Empty -> q
|
with Empty -> q
|
||||||
|
|
||||||
|
(*$Q
|
||||||
|
(Q.list Q.int) (fun l -> \
|
||||||
|
l = [] || (of_list l |> init |> to_list = List.rev (List.tl (List.rev l))))
|
||||||
|
*)
|
||||||
|
|
||||||
let tail q =
|
let tail q =
|
||||||
try snd (take_front_exn q)
|
try snd (take_front_exn q)
|
||||||
with Empty -> q
|
with Empty -> q
|
||||||
|
|
||||||
|
(*$Q
|
||||||
|
(Q.list Q.int) (fun l -> \
|
||||||
|
l = [] || (of_list l |> tail |> to_list = List.tl l))
|
||||||
|
*)
|
||||||
|
|
||||||
let add_seq_front seq q =
|
let add_seq_front seq q =
|
||||||
let q = ref q in
|
let q = ref q in
|
||||||
seq (fun x -> q := cons x !q);
|
seq (fun x -> q := cons x !q);
|
||||||
|
|
@ -260,6 +270,11 @@ let rec to_seq : 'a. 'a t -> 'a sequence
|
||||||
to_seq q' (fun (x,y) -> k x; k y);
|
to_seq q' (fun (x,y) -> k x; k y);
|
||||||
_digit_to_seq tail k
|
_digit_to_seq tail k
|
||||||
|
|
||||||
|
(*$Q
|
||||||
|
(Q.list Q.int) (fun l -> \
|
||||||
|
of_list l |> to_seq |> Sequence.to_list = l)
|
||||||
|
*)
|
||||||
|
|
||||||
let append q1 q2 =
|
let append q1 q2 =
|
||||||
match q1, q2 with
|
match q1, q2 with
|
||||||
| Shallow Zero, _ -> q2
|
| Shallow Zero, _ -> q2
|
||||||
|
|
@ -359,6 +374,11 @@ let rec _equal_klist eq l1 l2 = match l1(), l2() with
|
||||||
|
|
||||||
let equal eq q1 q2 = _equal_klist eq (to_klist q1) (to_klist q2)
|
let equal eq q1 q2 = _equal_klist eq (to_klist q1) (to_klist q2)
|
||||||
|
|
||||||
|
(*$T
|
||||||
|
let q1 = 1 -- 10 and q2 = append (1 -- 5) (6 -- 10) in \
|
||||||
|
equal (=) q1 q2
|
||||||
|
*)
|
||||||
|
|
||||||
let (--) a b =
|
let (--) a b =
|
||||||
let rec up_to q a b = if a = b
|
let rec up_to q a b = if a = b
|
||||||
then snoc q a
|
then snoc q a
|
||||||
|
|
@ -367,3 +387,10 @@ let (--) a b =
|
||||||
else down_to (snoc q a) (a-1) b
|
else down_to (snoc q a) (a-1) b
|
||||||
in
|
in
|
||||||
if a <= b then up_to empty a b else down_to empty a b
|
if a <= b then up_to empty a b else down_to empty a b
|
||||||
|
|
||||||
|
(*$T
|
||||||
|
1 -- 5 |> to_list = [1;2;3;4;5]
|
||||||
|
5 -- 1 |> to_list = [5;4;3;2;1]
|
||||||
|
0 -- 0 |> to_list = [0]
|
||||||
|
*)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue