This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
128
unikernel/duniverse/base/test/test_globalize_lib.ml
Normal file
128
unikernel/duniverse/base/test/test_globalize_lib.ml
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
open! Core
|
||||
open! Import
|
||||
|
||||
let%expect_test "bool_true" =
|
||||
printf "%b" (globalize_bool true);
|
||||
[%expect {| true |}]
|
||||
;;
|
||||
|
||||
let%expect_test "bool_false" =
|
||||
printf "%b" (globalize_bool false);
|
||||
[%expect {| false |}]
|
||||
;;
|
||||
|
||||
let%expect_test "char" =
|
||||
let c = 'A' in
|
||||
let c' = globalize_char c in
|
||||
printf "%s" (Char.to_string c');
|
||||
[%expect {| A |}]
|
||||
;;
|
||||
|
||||
let%expect_test "float" =
|
||||
let f = 5.5 in
|
||||
let f' = globalize_float f in
|
||||
printf "%f" f';
|
||||
[%expect {| 5.500000 |}]
|
||||
;;
|
||||
|
||||
let%expect_test "int" =
|
||||
printf "%d" (globalize_int 42);
|
||||
[%expect {| 42 |}]
|
||||
;;
|
||||
|
||||
let%expect_test "int32" =
|
||||
let i = 42l in
|
||||
let i' = globalize_int32 i in
|
||||
printf "%ld" i';
|
||||
[%expect {| 42 |}]
|
||||
;;
|
||||
|
||||
let%expect_test "int64" =
|
||||
let i = 42L in
|
||||
let i' = globalize_int64 i in
|
||||
printf "%Ld" i';
|
||||
[%expect {| 42 |}]
|
||||
;;
|
||||
|
||||
let%expect_test "nativeint" =
|
||||
let i = 42n in
|
||||
let i' = globalize_nativeint i in
|
||||
printf "%nd" i';
|
||||
[%expect {| 42 |}]
|
||||
;;
|
||||
|
||||
let%expect_test "string" =
|
||||
let s = "hello" in
|
||||
let s' = globalize_string s in
|
||||
printf "%s" s';
|
||||
[%expect {| hello |}]
|
||||
;;
|
||||
|
||||
let%expect_test "array" =
|
||||
let a = [| "one"; "two"; "three" |] in
|
||||
let a' = globalize_array globalize_string a in
|
||||
Array.iter ~f:print_endline a';
|
||||
[%expect {|
|
||||
one
|
||||
two
|
||||
three
|
||||
|}]
|
||||
;;
|
||||
|
||||
let%expect_test "list" =
|
||||
let l = [ "one"; "two"; "three" ] in
|
||||
let l' = globalize_list globalize_string l in
|
||||
List.iter ~f:print_endline l';
|
||||
[%expect {|
|
||||
one
|
||||
two
|
||||
three
|
||||
|}]
|
||||
;;
|
||||
|
||||
let%expect_test "option" =
|
||||
let o = Some "hello" in
|
||||
let o' = globalize_option globalize_string o in
|
||||
Option.iter ~f:print_endline o';
|
||||
[%expect {| hello |}]
|
||||
;;
|
||||
|
||||
let%expect_test "ref" =
|
||||
let r = ref "hello" in
|
||||
let r' = globalize_ref globalize_string r in
|
||||
print_endline !r';
|
||||
[%expect {| hello |}]
|
||||
;;
|
||||
|
||||
let%expect_test "no sharing between globalized refs" =
|
||||
let r = ref "initial" in
|
||||
let r' = globalize_ref (fun _ -> assert false) r in
|
||||
print_endline !r;
|
||||
[%expect {| initial |}];
|
||||
print_endline !r';
|
||||
[%expect {| initial |}];
|
||||
r := "local";
|
||||
r' := "global";
|
||||
print_endline !r;
|
||||
[%expect {| local |}];
|
||||
print_endline !r';
|
||||
[%expect {| global |}]
|
||||
;;
|
||||
|
||||
external get : 'a array -> int -> 'a = "%array_safe_get"
|
||||
external set : 'a array -> int -> 'a -> unit = "%array_safe_set"
|
||||
|
||||
let%expect_test "no sharing between globalized arrays" =
|
||||
let a = [| "initial" |] in
|
||||
let a' = globalize_array (fun _ -> assert false) a in
|
||||
print_endline (get a 0);
|
||||
[%expect {| initial |}];
|
||||
print_endline (get a' 0);
|
||||
[%expect {| initial |}];
|
||||
set a 0 "local";
|
||||
set a' 0 "global";
|
||||
print_endline (get a 0);
|
||||
[%expect {| local |}];
|
||||
print_endline (get a' 0);
|
||||
[%expect {| global |}]
|
||||
;;
|
||||
Loading…
Add table
Add a link
Reference in a new issue