ocaml-containers/tests/test_enum.ml
2013-03-19 00:22:41 +01:00

37 lines
1,011 B
OCaml

open OUnit
open Enum.Infix
let pint i = string_of_int i
let plist l = Utils.sprintf "%a"
(Sequence.pp_seq Format.pp_print_int) (Sequence.of_list l)
let pstrlist l = Utils.sprintf "%a"
(Sequence.pp_seq Format.pp_print_string) (Sequence.of_list l)
let test_singleton () =
let e = Enum.singleton 42 in
let gen = Enum.start e in
OUnit.assert_equal 42 (Enum.next gen);
OUnit.assert_raises Enum.EOG (fun () -> Enum.next gen);
OUnit.assert_equal 1 (Enum.length e);
()
let test_iter () =
let e = 1 -- 10 in
OUnit.assert_equal ~printer:pint 10 (Enum.length e);
OUnit.assert_equal [1;2] (Enum.to_list (1 -- 2));
OUnit.assert_equal [1;2;3;4;5] (Enum.to_list (Enum.take 5 e));
()
let test_map () =
let e = 1 -- 10 in
let e' = Enum.map string_of_int e in
OUnit.assert_equal ~printer:pstrlist ["9"; "10"] (Enum.to_list (Enum.drop 8 e'));
()
let suite =
"test_enum" >:::
[ "test_singleton" >:: test_singleton;
"test_iter" >:: test_iter;
"test_map" >:: test_map;
]