ocaml/testsuite/tests/lib-stream/count_concat_bug.ml

70 lines
2.3 KiB
OCaml

(***********************************************************************)
(* *)
(* OCaml *)
(* *)
(* Gabriel Scherer, projet Gallium, INRIA Rocquencourt *)
(* *)
(* Copyright 2012 Institut National de Recherche en Informatique et *)
(* en Automatique. All rights reserved. This file is distributed *)
(* under the terms of the Q Public License version 1.0. *)
(* *)
(***********************************************************************)
let is_empty s =
try Stream.empty s; true with Stream.Failure -> false
let test_icons =
let s = Stream.of_string "ab" in
let s = Stream.icons 'c' s in
Testing.test (Stream.next s = 'c');
Testing.test (Stream.next s = 'a');
Testing.test (Stream.next s = 'b');
Testing.test (is_empty s);
()
let test_lcons =
let s = Stream.of_string "ab" in
let s = Stream.lcons (fun () -> 'c') s in
Testing.test (Stream.next s = 'c');
Testing.test (Stream.next s = 'a');
Testing.test (Stream.next s = 'b');
Testing.test (is_empty s);
()
let test_iapp =
let s = Stream.of_string "ab" in
let s = Stream.iapp (Stream.of_list ['c']) s in
Testing.test (Stream.next s = 'c');
Testing.test (Stream.next s = 'a');
Testing.test (Stream.next s = 'b');
Testing.test (is_empty s);
()
let test_lapp_right =
let s1 = Stream.of_list ['c'] in
let s2 = Stream.of_string "ab" in
let s = Stream.lapp (fun () -> s1) s2 in
Testing.test (Stream.next s = 'c');
Testing.test (Stream.next s = 'a');
Testing.test (Stream.next s = 'b');
Testing.test (is_empty s);
()
let test_lapp_left =
let s1 = Stream.of_string "bc" in
let s2 = Stream.of_list ['a'] in
Testing.test (Stream.next s1 = 'b');
let s = Stream.lapp (fun () -> s1) s2 in
Testing.test (Stream.next s = 'c');
Testing.test (Stream.next s = 'a');
Testing.test (is_empty s);
()
let test_slazy =
let s = Stream.of_string "ab" in
Testing.test (Stream.next s = 'a');
let s = Stream.slazy (fun () -> s) in
Testing.test (Stream.next s = 'b');
Testing.test (is_empty s);
()