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 {| [ ""; ""; ""; "" ] |}] ;;