mte/unikernel/duniverse/httpun/lib_test/test_iovec.ml
2025-11-11 02:07:51 +01:00

43 lines
1.6 KiB
OCaml

open Httpun
open IOVec
(* The length of the buffer is ignored by iovec operations *)
let buffer = Bigstringaf.empty
let test_lengthv () =
Alcotest.(check int) "lengthv [] = 0" (lengthv []) 0;
Alcotest.(check int) "lengthv [iovec] = length iovec"
(lengthv [{ buffer; off = 0; len = 0 }]) (length {buffer; off = 0; len = 0 });
Alcotest.(check int) "lengthv [iovec] = length iovec"
(lengthv [{ buffer; off = 0; len = 10 }]) (length {buffer; off = 0; len = 10 });
;;
let test_shiftv_raises () =
Alcotest.check_raises
"IOVec.shiftv: -1 is a negative number"
(Failure "IOVec.shiftv: -1 is a negative number")
(fun () -> ignore (shiftv [] (-1)));
let test f =
Alcotest.check_raises
"shiftv iovecs n raises when n > lengthv iovecs"
(Failure "shiftv: n > lengthv iovecs")
(fun () -> ignore (f ()))
in
test (fun () -> shiftv [] 1);
test (fun () -> shiftv [{ buffer; off = 0; len = 1 }] 2);
test (fun () -> shiftv [{ buffer; off = 0; len = 1 }; { buffer; off = 0; len = 1 }] 3);
;;
let test_shiftv () =
Alcotest.(check (of_pp pp_hum |> list)) "shiftv [] 0 = []" (shiftv [] 0) [];
Alcotest.(check (of_pp pp_hum |> list)) "shiftv [{... len ... }] len = []"
(shiftv [{ buffer; off = 0; len = 1 }] 1) [];
Alcotest.(check (of_pp pp_hum |> list)) "shiftv [iovec] n when length iovec < n"
(shiftv [{ buffer; off = 0; len = 4 }] 2) [{ buffer; off = 2; len = 2 }];
;;
let tests =
[ "lengthv" , `Quick, test_lengthv
; "shiftv" , `Quick, test_shiftv
; "shiftv raises ", `Quick, test_shiftv_raises
]