You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
3.4 KiB

3 years ago
(*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*)
open Utils
open Process
let () =
assert_true "string_ends_with" (string_ends_with "foo" "o") ;
assert_true "string_ends_with" (string_ends_with "foo" "") ;
assert_false "string_ends_with" (string_ends_with "foo" "f")
let () =
assert_true "string_starts_with" (string_starts_with "foo" "f") ;
assert_true "string_starts_with" (string_starts_with "foo" "") ;
assert_false "string_starts_with" (string_starts_with "foo" "o")
let () =
assert_equal "string_split" (string_split ' ' "foo bla") ["foo"; "bla"] ;
assert_equal "string_split" (string_split ' ' "foo") ["foo"] ;
assert_equal "string_split" (string_split ' ' "") [""] ;
assert_equal "string_split" (string_split ' ' " ") [""; ""] ;
assert_equal "string_split" (string_split ' ' " foo bla ") [""; "foo"; "bla"; ""]
let () =
assert_true "list_ends_with" (list_ends_with [1; 2; 3] [3]) ;
assert_false "list_ends_with" (list_ends_with [1; 2; 3] [2])
let () =
assert_true "list_starts_with" (list_starts_with [1; 2; 3] [1]) ;
assert_false "list_starts_with" (list_starts_with [1; 2; 3] [2])
let () =
let pid, ic =
Process.fork (fun oc ->
output_string oc "foo\nbar\n" ;
true )
in
let lines = stream_to_list (line_stream_of_channel ic) in
assert_true "line_stream_of_channel::wait" (Process.wait pid) ;
assert_equal "line_stream_of_channel::result" lines ["foo"; "bar"]
let () =
let lines = stream_to_list (stream_append (Stream.of_list ["foo"]) (Stream.of_list ["bar"])) in
assert_equal "line_stream_of_channel::result" lines ["foo"; "bar"]
let () =
let count = ref 0 in
let f _ = incr count in
let g = make_cached f in
List.iter g [1; 2; 1; 3; 1] ;
assert_equal "make_cached" !count 3
let () =
let s = DisjointSet.create () in
assert_equal "DisjointSet" (DisjointSet.find s 1) 1 ;
assert_equal "DisjointSet" (DisjointSet.find s 2) 2 ;
DisjointSet.union s 1 2 ;
DisjointSet.union s 1 3 ;
DisjointSet.union s 2 4 ;
DisjointSet.union s 5 6 ;
assert_equal "DisjointSet" (DisjointSet.find s 1) (DisjointSet.find s 2) ;
assert_equal "DisjointSet" (DisjointSet.find s 1) (DisjointSet.find s 3) ;
assert_equal "DisjointSet" (DisjointSet.find s 1) (DisjointSet.find s 4) ;
assert_equal "DisjointSet" (DisjointSet.find s 1) (DisjointSet.find s 4) ;
assert_equal "DisjointSet" (DisjointSet.find s 5) (DisjointSet.find s 6) ;
assert_true "DisjointSet" (DisjointSet.find s 1 <> DisjointSet.find s 6) ;
DisjointSet.union s 3 6 ;
assert_true "DisjointSet" (DisjointSet.find s 1 = DisjointSet.find s 6) ;
assert_equal "DisjointSet" (DisjointSet.find s 5) (DisjointSet.find s 6) ;
let l = ref [] in
DisjointSet.iter s (fun x y -> l := (y, x) :: !l) ;
assert_equal "DisjointSetFinal" (List.sort compare !l |> List.map snd) [1; 2; 3; 4; 5; 6]
let () =
let take13 = List.map (fun (x, y, z) -> (x, z)) in
assert_equal "fix_arg_spec"
(fix_arg_spec [] "bla" |> take13)
[("-h", " Display this list of options."); ("-help", " "); ("--help", " ")] ;
assert_equal "fix_arg_spec"
(fix_arg_spec [("--foo", Arg.String ignore, "FOO fooling")] "bla" |> take13)
[ ("--foo", "FOO fooling")
; ("-h", " Display this list of options.")
; ("-help", " ")
; ("--help", " ") ]