mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
more tests for CCVector
This commit is contained in:
parent
be08237d61
commit
1debe08645
2 changed files with 33 additions and 5 deletions
|
|
@ -139,6 +139,11 @@ let append a b =
|
||||||
a.size <- a.size + b.size
|
a.size <- a.size + b.size
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(*$T
|
||||||
|
let v1 = init 5 (fun i->i) and v2 = init 5 (fun i->i+5) in \
|
||||||
|
append v1 v2; to_list v1 = CCList.(0--9)
|
||||||
|
*)
|
||||||
|
|
||||||
let get v i =
|
let get v i =
|
||||||
if i < 0 || i >= v.size then failwith "Vector.get";
|
if i < 0 || i >= v.size then failwith "Vector.get";
|
||||||
Array.unsafe_get v.vec i
|
Array.unsafe_get v.vec i
|
||||||
|
|
@ -159,8 +164,14 @@ let append_seq a seq =
|
||||||
seq (fun x -> push a x)
|
seq (fun x -> push a x)
|
||||||
|
|
||||||
let append_array a b =
|
let append_array a b =
|
||||||
|
ensure a (a.size + Array.length b);
|
||||||
Array.iter (push a) b
|
Array.iter (push a) b
|
||||||
|
|
||||||
|
(*$T
|
||||||
|
let v1 = init 5 (fun i->i) and v2 = Array.init 5 (fun i->i+5) in \
|
||||||
|
append_array v1 v2; to_list v1 = CCList.(0--9)
|
||||||
|
*)
|
||||||
|
|
||||||
let equal eq v1 v2 =
|
let equal eq v1 v2 =
|
||||||
let n = min v1.size v2.size in
|
let n = min v1.size v2.size in
|
||||||
let rec check i =
|
let rec check i =
|
||||||
|
|
@ -243,6 +254,11 @@ let uniq_sort cmp v =
|
||||||
then traverse v.vec.(0) 1 1
|
then traverse v.vec.(0) 1 1
|
||||||
(* start at 1, to get the first element in hand *)
|
(* start at 1, to get the first element in hand *)
|
||||||
|
|
||||||
|
(*$T
|
||||||
|
let v = of_list [1;4;5;3;2;4;1] in \
|
||||||
|
uniq_sort Pervasives.compare v; to_list v = [1;2;3;4;5]
|
||||||
|
*)
|
||||||
|
|
||||||
let iter k v =
|
let iter k v =
|
||||||
for i = 0 to v.size -1 do
|
for i = 0 to v.size -1 do
|
||||||
k (Array.unsafe_get v.vec i)
|
k (Array.unsafe_get v.vec i)
|
||||||
|
|
@ -256,10 +272,18 @@ let iteri k v =
|
||||||
let map f v =
|
let map f v =
|
||||||
if _empty_array v
|
if _empty_array v
|
||||||
then create ()
|
then create ()
|
||||||
else {
|
else (
|
||||||
|
let vec = Array.init v.size (fun i -> f (Array.unsafe_get v.vec i)) in
|
||||||
|
{
|
||||||
size=v.size;
|
size=v.size;
|
||||||
vec=Array.map f v.vec
|
vec;
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
(*$T
|
||||||
|
let v = create() in push v 1; push v 2; push v 3; \
|
||||||
|
to_list (map string_of_int v) = ["1"; "2"; "3"]
|
||||||
|
*)
|
||||||
|
|
||||||
let filter' p v =
|
let filter' p v =
|
||||||
let i = ref (v.size - 1) in
|
let i = ref (v.size - 1) in
|
||||||
|
|
@ -464,6 +488,10 @@ let to_gen v =
|
||||||
Some x
|
Some x
|
||||||
) else None
|
) else None
|
||||||
|
|
||||||
|
(*$T
|
||||||
|
let v = (1--10) in to_list v = CCGen.to_list (to_gen v)
|
||||||
|
*)
|
||||||
|
|
||||||
let of_klist ?(init=create ()) l =
|
let of_klist ?(init=create ()) l =
|
||||||
let rec aux l = match l() with
|
let rec aux l = match l() with
|
||||||
| `Nil -> init
|
| `Nil -> init
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ val append_seq : ('a, rw) t -> 'a sequence -> unit
|
||||||
val equal : 'a equal -> ('a,_) t equal
|
val equal : 'a equal -> ('a,_) t equal
|
||||||
|
|
||||||
val compare : 'a ord -> ('a,_) t ord
|
val compare : 'a ord -> ('a,_) t ord
|
||||||
(** Lexicographic comparison *)
|
(** Total ordering on vectors: Lexicographic comparison. *)
|
||||||
|
|
||||||
val pop : ('a, rw) t -> 'a option
|
val pop : ('a, rw) t -> 'a option
|
||||||
(** Remove last element, or [None] *)
|
(** Remove last element, or [None] *)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue