mte/unikernel/duniverse/dune_/otherlibs/stdune/test/string_tests.ml
2025-11-11 02:07:51 +01:00

209 lines
2.6 KiB
OCaml

open! Stdune
open Dyn
open Dune_tests_common
let () = init ()
let take s n = String.take s n |> string |> print_dyn
let drop s n = String.drop s n |> string |> print_dyn
let split_n s n = String.split_n s n |> pair string string |> print_dyn
let split s ~on = String.split s ~on |> list string |> print_dyn
let%expect_test _ =
take "foobar" 3;
[%expect
{|
"foo"
|}]
;;
let%expect_test _ =
take "foobar" 0;
[%expect
{|
""
|}]
;;
let%expect_test _ =
take "foo" 10;
[%expect
{|
"foo"
|}]
;;
let%expect_test _ =
take "" 10;
[%expect
{|
""
|}]
;;
let%expect_test _ =
take "" 0;
[%expect
{|
""
|}]
;;
let%expect_test _ =
drop "" 0;
[%expect
{|
""
|}]
;;
let%expect_test _ =
drop "foo" 0;
[%expect
{|
"foo"
|}]
;;
let%expect_test _ =
drop "foo" 5;
[%expect
{|
""
|}]
;;
let%expect_test _ =
drop "foobar" 3;
[%expect
{|
"bar"
|}]
;;
let%expect_test _ =
split_n "foobar" 3;
[%expect
{|
("foo", "bar")
|}]
;;
let%expect_test _ =
split_n "foobar" 10;
[%expect
{|
("foobar", "")
|}]
;;
let%expect_test _ =
split_n "foobar" 0;
[%expect
{|
("", "foobar")
|}]
;;
let%expect_test _ =
split_n "foobar" 6;
[%expect
{|
("foobar", "")
|}]
;;
let%expect_test _ =
split_n "" 0;
[%expect
{|
("", "")
|}]
;;
let%expect_test _ =
split_n "" 10;
[%expect
{|
("", "")
|}]
;;
let%expect_test _ =
String.longest_prefix [ "food"; "foo"; "foo-bar" ] |> string |> print_dyn;
[%expect
{|
"foo"
|}]
;;
let%expect_test _ =
String.drop_suffix "foobar" ~suffix:"bar" |> option string |> print_dyn;
[%expect
{|
Some "foo"
|}]
;;
let%expect_test _ =
String.drop_suffix "foobar" ~suffix:"foobar" |> option string |> print_dyn;
[%expect
{|
Some ""
|}]
;;
let%expect_test _ =
String.drop_suffix "foobar" ~suffix:"" |> option string |> print_dyn;
[%expect
{|
Some "foobar"
|}]
;;
let%expect_test _ =
String.drop_suffix "foobar" ~suffix:"foo" |> option string |> print_dyn;
[%expect
{|
None
|}]
;;
let%expect_test _ =
split "a" ~on:':';
[%expect {| [ "a" ] |}]
;;
let%expect_test _ =
split "" ~on:':';
[%expect {| [ "" ] |}]
;;
let%expect_test _ =
split "a:" ~on:':';
[%expect {| [ "a"; "" ] |}]
;;
let%expect_test _ =
split ":a" ~on:':';
[%expect {| [ ""; "a" ] |}]
;;
let%expect_test _ =
split "a:b" ~on:':';
[%expect {| [ "a"; "b" ] |}]
;;
let%expect_test _ =
split ":" ~on:':';
[%expect {| [ ""; "" ] |}]
;;
let%expect_test _ =
split "::" ~on:':';
[%expect {| [ ""; ""; "" ] |}]
;;
let%expect_test _ =
split ":::" ~on:':';
[%expect {| [ ""; ""; ""; "" ] |}]
;;