|
rpm-build |
0f2925 |
(*
|
|
rpm-build |
0f2925 |
* ExtLib Testing Suite
|
|
rpm-build |
0f2925 |
* Copyright (C) 2005 Richard W.M. Jones
|
|
rpm-build |
0f2925 |
*
|
|
rpm-build |
0f2925 |
* This library is free software; you can redistribute it and/or
|
|
rpm-build |
0f2925 |
* modify it under the terms of the GNU Lesser General Public
|
|
rpm-build |
0f2925 |
* License as published by the Free Software Foundation; either
|
|
rpm-build |
0f2925 |
* version 2.1 of the License, or (at your option) any later version,
|
|
rpm-build |
0f2925 |
* with the special exception on linking described in file LICENSE.
|
|
rpm-build |
0f2925 |
*
|
|
rpm-build |
0f2925 |
* This library is distributed in the hope that it will be useful,
|
|
rpm-build |
0f2925 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
rpm-build |
0f2925 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
rpm-build |
0f2925 |
* Lesser General Public License for more details.
|
|
rpm-build |
0f2925 |
*
|
|
rpm-build |
0f2925 |
* You should have received a copy of the GNU Lesser General Public
|
|
rpm-build |
0f2925 |
* License along with this library; if not, write to the Free Software
|
|
rpm-build |
0f2925 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
rpm-build |
0f2925 |
*)
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
(* Standard library array. *)
|
|
rpm-build |
0f2925 |
module StdArray = Array
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
open ExtArray
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_rev () =
|
|
rpm-build |
0f2925 |
assert ([| 1; 2; 3; 4; 5 |] = Array.rev [| 5; 4; 3; 2; 1 |]);
|
|
rpm-build |
0f2925 |
assert ([| 1; 2; 3; 4; 5; 6 |] = Array.rev [| 6; 5; 4; 3; 2; 1 |]);
|
|
rpm-build |
0f2925 |
assert ([| "a"; "b"; "c" |] = Array.rev [| "c"; "b"; "a" |]);
|
|
rpm-build |
0f2925 |
assert ([| "a"; "b" |] = Array.rev [| "b"; "a" |]);
|
|
rpm-build |
0f2925 |
assert ([| "a" |] = Array.rev [| "a" |]);
|
|
rpm-build |
0f2925 |
assert ([| |] = Array.rev [| |])
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_rev_in_place () =
|
|
rpm-build |
0f2925 |
let a = [| 5; 4; 3; 2; 1 |] in
|
|
rpm-build |
0f2925 |
Array.rev_in_place a;
|
|
rpm-build |
0f2925 |
assert ([| 1; 2; 3; 4; 5 |] = a);
|
|
rpm-build |
0f2925 |
let a = [| 6; 5; 4; 3; 2; 1 |] in
|
|
rpm-build |
0f2925 |
Array.rev_in_place a;
|
|
rpm-build |
0f2925 |
assert ([| 1; 2; 3; 4; 5; 6 |] = a);
|
|
rpm-build |
0f2925 |
let a = [| "c"; "b"; "a" |] in
|
|
rpm-build |
0f2925 |
Array.rev_in_place a;
|
|
rpm-build |
0f2925 |
assert ([| "a"; "b"; "c" |] = a);
|
|
rpm-build |
0f2925 |
let a = [| "b"; "a" |] in
|
|
rpm-build |
0f2925 |
Array.rev_in_place a;
|
|
rpm-build |
0f2925 |
assert ([| "a"; "b" |] = a);
|
|
rpm-build |
0f2925 |
let a = [| "a" |] in
|
|
rpm-build |
0f2925 |
Array.rev_in_place a;
|
|
rpm-build |
0f2925 |
assert ([| "a" |] = a);
|
|
rpm-build |
0f2925 |
let a = [| |] in
|
|
rpm-build |
0f2925 |
Array.rev_in_place a;
|
|
rpm-build |
0f2925 |
assert ([| |] = a)
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_for_all () =
|
|
rpm-build |
0f2925 |
let a = [| 0; 2; 4; 6; 8; 10; 12 |] in
|
|
rpm-build |
0f2925 |
let is_even i = 0 = (i land 1) in
|
|
rpm-build |
0f2925 |
assert (Array.for_all is_even a);
|
|
rpm-build |
0f2925 |
assert (Array.for_all is_even [| |])
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_exists () =
|
|
rpm-build |
0f2925 |
let a = [| 0; 2; 4; 6; 8; 10; 11; 12 |] in
|
|
rpm-build |
0f2925 |
let b = [| 0; 2; 4; 6; 8; 10; 12 |] in
|
|
rpm-build |
0f2925 |
let is_even i = 0 = (i land 1) in
|
|
rpm-build |
0f2925 |
let is_odd i = 1 = (i land 1) in
|
|
rpm-build |
0f2925 |
assert (Array.exists is_odd a);
|
|
rpm-build |
0f2925 |
assert (not (Array.exists is_odd b));
|
|
rpm-build |
0f2925 |
assert (not (Array.exists is_even [| |]))
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_mem () =
|
|
rpm-build |
0f2925 |
let a = [| 0; 2; 4; 6; 8; 10; 11; 12 |] in
|
|
rpm-build |
0f2925 |
assert (Array.mem 11 a);
|
|
rpm-build |
0f2925 |
assert (Array.mem 12 a);
|
|
rpm-build |
0f2925 |
assert (not (Array.mem 13 a));
|
|
rpm-build |
0f2925 |
assert (not (Array.mem 13 [| |]))
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_memq () =
|
|
rpm-build |
0f2925 |
let a = [| 0; 2; 4; 6; 8; 10; 11; 12 |] in
|
|
rpm-build |
0f2925 |
assert (Array.memq 11 a);
|
|
rpm-build |
0f2925 |
assert (Array.memq 12 a);
|
|
rpm-build |
0f2925 |
assert (not (Array.memq 13 a));
|
|
rpm-build |
0f2925 |
assert (not (Array.memq 13 [| |]))
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_find () =
|
|
rpm-build |
0f2925 |
let a = [| 0; 2; 4; 6; 8; 10; 11; 12 |] in
|
|
rpm-build |
0f2925 |
assert (11 = Array.find ((=) 11) a);
|
|
rpm-build |
0f2925 |
assert (12 = Array.find ((=) 12) a);
|
|
rpm-build |
0f2925 |
assert (try ignore (Array.find ((=) 13) a); false with Not_found -> true);
|
|
rpm-build |
0f2925 |
assert (try ignore (Array.find ((=) 13) [| |]); false with Not_found -> true)
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_findi () =
|
|
rpm-build |
0f2925 |
let a = [| 0; 2; 4; 6; 8; 10; 11; 12 |] in
|
|
rpm-build |
0f2925 |
assert (6 = Array.findi ((=) 11) a);
|
|
rpm-build |
0f2925 |
assert (7 = Array.findi ((=) 12) a);
|
|
rpm-build |
0f2925 |
assert (try ignore (Array.findi ((=) 13) a); false with Not_found -> true);
|
|
rpm-build |
0f2925 |
assert (try ignore (Array.findi ((=) 13) [| |]); false
|
|
rpm-build |
0f2925 |
with Not_found -> true)
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_filter () =
|
|
rpm-build |
0f2925 |
let a = [| 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 |] in
|
|
rpm-build |
0f2925 |
let is_even i = 0 = (i land 1) in
|
|
rpm-build |
0f2925 |
let is_odd i = 1 = (i land 1) in
|
|
rpm-build |
0f2925 |
assert ([| 0; 2; 4; 6; 8 |] = Array.filter is_even a);
|
|
rpm-build |
0f2925 |
assert ([| 1; 3; 5; 7; 9 |] = Array.filter is_odd a);
|
|
rpm-build |
0f2925 |
let a = Array.init 10_000 (fun i -> i) in
|
|
rpm-build |
0f2925 |
let b = Array.init 5_000 (fun i -> i * 2) in
|
|
rpm-build |
0f2925 |
let c = Array.init 5_000 (fun i -> i * 2 + 1) in
|
|
rpm-build |
0f2925 |
assert (b = Array.filter is_even a);
|
|
rpm-build |
0f2925 |
assert (c = Array.filter is_odd a);
|
|
rpm-build |
0f2925 |
assert ([| |] = Array.filter is_even [| |])
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_partition () =
|
|
rpm-build |
0f2925 |
let a = [| 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 |] in
|
|
rpm-build |
0f2925 |
let is_even i = 0 = (i land 1) in
|
|
rpm-build |
0f2925 |
let is_odd i = 1 = (i land 1) in
|
|
rpm-build |
0f2925 |
let x, y = Array.partition is_even a in
|
|
rpm-build |
0f2925 |
assert ([| 0; 2; 4; 6; 8 |] = x);
|
|
rpm-build |
0f2925 |
assert ([| 1; 3; 5; 7; 9 |] = y);
|
|
rpm-build |
0f2925 |
let x, y = Array.partition is_odd a in
|
|
rpm-build |
0f2925 |
assert ([| 1; 3; 5; 7; 9 |] = x);
|
|
rpm-build |
0f2925 |
assert ([| 0; 2; 4; 6; 8 |] = y);
|
|
rpm-build |
0f2925 |
assert (([| |], [| |]) = Array.partition is_even [| |])
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_enum () =
|
|
rpm-build |
0f2925 |
let a = Array.init 1000 (fun i -> i) in
|
|
rpm-build |
0f2925 |
let e = Array.enum a in
|
|
rpm-build |
0f2925 |
let l = ExtList.List.of_enum e in
|
|
rpm-build |
0f2925 |
assert (l = Array.to_list a);
|
|
rpm-build |
0f2925 |
let l = ExtList.List.init 2000 (fun i -> i) in
|
|
rpm-build |
0f2925 |
let e = ExtList.List.enum l in
|
|
rpm-build |
0f2925 |
let a = Array.of_enum e in
|
|
rpm-build |
0f2925 |
assert (a = Array.of_list l)
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let test_map2 () =
|
|
rpm-build |
0f2925 |
let a = Array.init 100 (fun i -> i) in
|
|
rpm-build |
0f2925 |
let b = Array.init 100 (fun i -> 99 - i) in
|
|
rpm-build |
0f2925 |
assert (Array.make 100 99 = Array.map2 (+) a b);
|
|
rpm-build |
0f2925 |
assert (try let _ = Array.map2 (+) [||] [|1|] in false with Invalid_argument _ -> true);
|
|
rpm-build |
0f2925 |
assert (Array.map2 (-) a b = Array.of_list (List.map2 (-) (Array.to_list a) (Array.to_list b)))
|
|
rpm-build |
0f2925 |
|
|
rpm-build |
0f2925 |
let () =
|
|
rpm-build |
0f2925 |
Util.register "ExtArray" [
|
|
rpm-build |
0f2925 |
"rev", test_rev;
|
|
rpm-build |
0f2925 |
"rev_in_place", test_rev_in_place;
|
|
rpm-build |
0f2925 |
"for_all", test_for_all;
|
|
rpm-build |
0f2925 |
"exists", test_exists;
|
|
rpm-build |
0f2925 |
"mem", test_mem;
|
|
rpm-build |
0f2925 |
"memq", test_memq;
|
|
rpm-build |
0f2925 |
"find", test_find;
|
|
rpm-build |
0f2925 |
"findi", test_findi;
|
|
rpm-build |
0f2925 |
"filter", test_filter;
|
|
rpm-build |
0f2925 |
"partition", test_partition;
|
|
rpm-build |
0f2925 |
"enum", test_enum;
|
|
rpm-build |
0f2925 |
"map2", test_map2;
|
|
rpm-build |
0f2925 |
]
|