(* TEST include testing *) 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); ()