Packages
gleam_stdlib
0.17.1
1.0.3
1.0.2
1.0.1
1.0.0
0.71.0
0.70.0
0.69.0
0.68.1
0.68.0
0.67.1
0.67.0
0.65.0
0.64.0
0.63.2
0.63.1
0.63.0
0.62.1
0.62.0
0.61.0
0.60.0
0.59.0
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.1
0.35.0
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.1
0.26.0
0.25.0
0.24.0
0.23.0
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc1
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.4.0-rc1
0.3.1
0.3.0
0.2.0
retired
A standard library for the Gleam programming language
Current section
Files
Jump to
Current section
Files
gen/test/gleam@string_test.erl
-module(gleam@string_test).
-compile(no_auto_import).
-export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, unicode_reverse_test/0, split_test/0, split_once_test/0, replace_test/0, append_test/0, compare_test/0, contains_test/0, concat_test/0, repeat_test/0, join_test/0, trim_test/0, trim_left_test/0, trim_right_test/0, starts_with_test/0, ends_with_test/0, slice_test/0, crop_test/0, drop_left_test/0, drop_right_test/0, pad_left_test/0, pad_right_test/0, pop_grapheme_test/0, to_graphemes_test/0, utf_codepoint_test/0, bit_string_utf_codepoint_test/0, to_option_test/0]).
-spec length_test() -> nil.
length_test() ->
_pipe = gleam@string:length(<<"ß↑e̊"/utf8>>),
gleam@should:equal(_pipe, 3),
_pipe@1 = gleam@string:length(<<"Gleam"/utf8>>),
gleam@should:equal(_pipe@1, 5),
_pipe@2 = gleam@string:length(<<""/utf8>>),
gleam@should:equal(_pipe@2, 0).
-spec lowercase_test() -> nil.
lowercase_test() ->
_pipe = gleam@string:lowercase(<<"Gleam"/utf8>>),
gleam@should:equal(_pipe, <<"gleam"/utf8>>).
-spec uppercase_test() -> nil.
uppercase_test() ->
_pipe = gleam@string:uppercase(<<"Gleam"/utf8>>),
gleam@should:equal(_pipe, <<"GLEAM"/utf8>>).
-spec reverse_test() -> nil.
reverse_test() ->
_pipe = gleam@string:reverse(<<"Gleam"/utf8>>),
gleam@should:equal(_pipe, <<"maelG"/utf8>>).
-spec unicode_reverse_test() -> nil.
unicode_reverse_test() ->
_pipe = gleam@string:reverse(<<"👍 OK"/utf8>>),
gleam@should:equal(_pipe, <<"KO 👍"/utf8>>).
-spec split_test() -> nil.
split_test() ->
_pipe = <<"Gleam,Erlang,Elixir"/utf8>>,
_pipe@1 = gleam@string:split(_pipe, <<","/utf8>>),
gleam@should:equal(
_pipe@1,
[<<"Gleam"/utf8>>, <<"Erlang"/utf8>>, <<"Elixir"/utf8>>]
),
_pipe@2 = <<"Gleam, Erlang,Elixir"/utf8>>,
_pipe@3 = gleam@string:split(_pipe@2, <<", "/utf8>>),
gleam@should:equal(_pipe@3, [<<"Gleam"/utf8>>, <<"Erlang,Elixir"/utf8>>]).
-spec split_once_test() -> nil.
split_once_test() ->
_pipe = <<"Gleam,Erlang,Elixir"/utf8>>,
_pipe@1 = gleam@string:split_once(_pipe, <<","/utf8>>),
gleam@should:equal(
_pipe@1,
{ok, {<<"Gleam"/utf8>>, <<"Erlang,Elixir"/utf8>>}}
),
_pipe@2 = <<"Gleam"/utf8>>,
_pipe@3 = gleam@string:split_once(_pipe@2, <<","/utf8>>),
gleam@should:equal(_pipe@3, {error, nil}),
_pipe@4 = <<""/utf8>>,
_pipe@5 = gleam@string:split_once(_pipe@4, <<","/utf8>>),
gleam@should:equal(_pipe@5, {error, nil}).
-spec replace_test() -> nil.
replace_test() ->
_pipe = <<"Gleam,Erlang,Elixir"/utf8>>,
_pipe@1 = gleam@string:replace(_pipe, <<","/utf8>>, <<"++"/utf8>>),
gleam@should:equal(_pipe@1, <<"Gleam++Erlang++Elixir"/utf8>>).
-spec append_test() -> nil.
append_test() ->
_pipe = <<"Test"/utf8>>,
_pipe@1 = gleam@string:append(_pipe, <<" Me"/utf8>>),
gleam@should:equal(_pipe@1, <<"Test Me"/utf8>>).
-spec compare_test() -> nil.
compare_test() ->
_pipe = gleam@string:compare(<<""/utf8>>, <<""/utf8>>),
gleam@should:equal(_pipe, eq),
_pipe@1 = gleam@string:compare(<<"a"/utf8>>, <<""/utf8>>),
gleam@should:equal(_pipe@1, gt),
_pipe@2 = gleam@string:compare(<<"a"/utf8>>, <<"A"/utf8>>),
gleam@should:equal(_pipe@2, gt),
_pipe@3 = gleam@string:compare(<<"A"/utf8>>, <<"B"/utf8>>),
gleam@should:equal(_pipe@3, lt),
_pipe@4 = gleam@string:compare(<<"t"/utf8>>, <<"ABC"/utf8>>),
gleam@should:equal(_pipe@4, gt).
-spec contains_test() -> nil.
contains_test() ->
_pipe = <<"gleam"/utf8>>,
_pipe@1 = gleam@string:contains(_pipe, <<"ea"/utf8>>),
gleam@should:equal(_pipe@1, true),
_pipe@2 = <<"gleam"/utf8>>,
_pipe@3 = gleam@string:contains(_pipe@2, <<"x"/utf8>>),
gleam@should:equal(_pipe@3, false),
_pipe@4 = gleam@string:contains(<<"bellwether"/utf8>>, <<"bell"/utf8>>),
gleam@should:equal(_pipe@4, true).
-spec concat_test() -> nil.
concat_test() ->
_pipe = [<<"Hello"/utf8>>, <<", "/utf8>>, <<"world!"/utf8>>],
_pipe@1 = gleam@string:concat(_pipe),
gleam@should:equal(_pipe@1, <<"Hello, world!"/utf8>>).
-spec repeat_test() -> nil.
repeat_test() ->
_pipe = <<"hi"/utf8>>,
_pipe@1 = gleam@string:repeat(_pipe, 3),
gleam@should:equal(_pipe@1, <<"hihihi"/utf8>>),
_pipe@2 = <<"hi"/utf8>>,
_pipe@3 = gleam@string:repeat(_pipe@2, 0),
gleam@should:equal(_pipe@3, <<""/utf8>>),
_pipe@4 = <<"hi"/utf8>>,
_pipe@5 = gleam@string:repeat(_pipe@4, -1),
gleam@should:equal(_pipe@5, <<""/utf8>>).
-spec join_test() -> nil.
join_test() ->
_pipe = [<<"Hello"/utf8>>, <<"world!"/utf8>>],
_pipe@1 = gleam@string:join(_pipe, <<", "/utf8>>),
gleam@should:equal(_pipe@1, <<"Hello, world!"/utf8>>),
_pipe@2 = [<<"Hello"/utf8>>, <<"world!"/utf8>>],
_pipe@3 = gleam@string:join(_pipe@2, <<"-"/utf8>>),
gleam@should:equal(_pipe@3, <<"Hello-world!"/utf8>>).
-spec trim_test() -> nil.
trim_test() ->
_pipe = <<" hats \n"/utf8>>,
_pipe@1 = gleam@string:trim(_pipe),
gleam@should:equal(_pipe@1, <<"hats"/utf8>>).
-spec trim_left_test() -> nil.
trim_left_test() ->
_pipe = <<" hats \n"/utf8>>,
_pipe@1 = gleam@string:trim_left(_pipe),
gleam@should:equal(_pipe@1, <<"hats \n"/utf8>>).
-spec trim_right_test() -> nil.
trim_right_test() ->
_pipe = <<" hats \n"/utf8>>,
_pipe@1 = gleam@string:trim_right(_pipe),
gleam@should:equal(_pipe@1, <<" hats"/utf8>>).
-spec starts_with_test() -> nil.
starts_with_test() ->
_pipe = <<"theory"/utf8>>,
_pipe@1 = gleam@string:starts_with(_pipe, <<""/utf8>>),
gleam@should:equal(_pipe@1, true),
_pipe@2 = <<"theory"/utf8>>,
_pipe@3 = gleam@string:starts_with(_pipe@2, <<"the"/utf8>>),
gleam@should:equal(_pipe@3, true),
_pipe@4 = <<"theory"/utf8>>,
_pipe@5 = gleam@string:starts_with(_pipe@4, <<"ory"/utf8>>),
gleam@should:equal(_pipe@5, false),
_pipe@6 = <<"theory"/utf8>>,
_pipe@7 = gleam@string:starts_with(_pipe@6, <<"theory2"/utf8>>),
gleam@should:equal(_pipe@7, false).
-spec ends_with_test() -> nil.
ends_with_test() ->
_pipe = <<"theory"/utf8>>,
_pipe@1 = gleam@string:ends_with(_pipe, <<""/utf8>>),
gleam@should:equal(_pipe@1, true),
_pipe@2 = <<"theory"/utf8>>,
_pipe@3 = gleam@string:ends_with(_pipe@2, <<"ory"/utf8>>),
gleam@should:equal(_pipe@3, true),
_pipe@4 = <<"theory"/utf8>>,
_pipe@5 = gleam@string:ends_with(_pipe@4, <<"the"/utf8>>),
gleam@should:equal(_pipe@5, false),
_pipe@6 = <<"theory"/utf8>>,
_pipe@7 = gleam@string:ends_with(_pipe@6, <<"theory2"/utf8>>),
gleam@should:equal(_pipe@7, false).
-spec slice_test() -> nil.
slice_test() ->
_pipe = <<"gleam"/utf8>>,
_pipe@1 = gleam@string:slice(_pipe, 1, 2),
gleam@should:equal(_pipe@1, <<"le"/utf8>>),
_pipe@2 = <<"gleam"/utf8>>,
_pipe@3 = gleam@string:slice(_pipe@2, 1, 10),
gleam@should:equal(_pipe@3, <<"leam"/utf8>>),
_pipe@4 = <<"gleam"/utf8>>,
_pipe@5 = gleam@string:slice(_pipe@4, 10, 3),
gleam@should:equal(_pipe@5, <<""/utf8>>),
_pipe@6 = <<"gleam"/utf8>>,
_pipe@7 = gleam@string:slice(_pipe@6, -2, 2),
gleam@should:equal(_pipe@7, <<"am"/utf8>>),
_pipe@8 = <<"gleam"/utf8>>,
_pipe@9 = gleam@string:slice(_pipe@8, -12, 2),
gleam@should:equal(_pipe@9, <<""/utf8>>),
_pipe@10 = <<"gleam"/utf8>>,
_pipe@11 = gleam@string:slice(_pipe@10, 2, -3),
gleam@should:equal(_pipe@11, <<""/utf8>>).
-spec crop_test() -> nil.
crop_test() ->
_pipe = <<"gleam"/utf8>>,
_pipe@1 = gleam@string:crop(_pipe, <<"gl"/utf8>>),
gleam@should:equal(_pipe@1, <<"gleam"/utf8>>),
_pipe@2 = <<"gleam"/utf8>>,
_pipe@3 = gleam@string:crop(_pipe@2, <<"le"/utf8>>),
gleam@should:equal(_pipe@3, <<"leam"/utf8>>),
_pipe@4 = gleam@string:crop(<<"gleam"/utf8>>, <<"ea"/utf8>>),
gleam@should:equal(_pipe@4, <<"eam"/utf8>>),
_pipe@5 = <<"gleam"/utf8>>,
_pipe@6 = gleam@string:crop(_pipe@5, <<""/utf8>>),
gleam@should:equal(_pipe@6, <<"gleam"/utf8>>),
_pipe@7 = <<"gleam"/utf8>>,
_pipe@8 = gleam@string:crop(_pipe@7, <<"!"/utf8>>),
gleam@should:equal(_pipe@8, <<"gleam"/utf8>>).
-spec drop_left_test() -> nil.
drop_left_test() ->
_pipe = <<"gleam"/utf8>>,
_pipe@1 = gleam@string:drop_left(_pipe, 2),
gleam@should:equal(_pipe@1, <<"eam"/utf8>>),
_pipe@2 = <<"gleam"/utf8>>,
_pipe@3 = gleam@string:drop_left(_pipe@2, 6),
gleam@should:equal(_pipe@3, <<""/utf8>>),
_pipe@4 = <<"gleam"/utf8>>,
_pipe@5 = gleam@string:drop_left(_pipe@4, -2),
gleam@should:equal(_pipe@5, <<"gleam"/utf8>>).
-spec drop_right_test() -> nil.
drop_right_test() ->
_pipe = <<"gleam"/utf8>>,
_pipe@1 = gleam@string:drop_right(_pipe, 2),
gleam@should:equal(_pipe@1, <<"gle"/utf8>>),
_pipe@2 = <<"gleam"/utf8>>,
_pipe@3 = gleam@string:drop_right(_pipe@2, 5),
gleam@should:equal(_pipe@3, <<""/utf8>>),
_pipe@4 = <<"gleam"/utf8>>,
_pipe@5 = gleam@string:drop_right(_pipe@4, -2),
gleam@should:equal(_pipe@5, <<"gleam"/utf8>>).
-spec pad_left_test() -> nil.
pad_left_test() ->
_pipe = <<"121"/utf8>>,
_pipe@1 = gleam@string:pad_left(_pipe, 5, <<"."/utf8>>),
gleam@should:equal(_pipe@1, <<"..121"/utf8>>),
_pipe@2 = <<"121"/utf8>>,
_pipe@3 = gleam@string:pad_left(_pipe@2, 3, <<"."/utf8>>),
gleam@should:equal(_pipe@3, <<"121"/utf8>>),
_pipe@4 = <<"121"/utf8>>,
_pipe@5 = gleam@string:pad_left(_pipe@4, 2, <<"."/utf8>>),
gleam@should:equal(_pipe@5, <<"121"/utf8>>),
_pipe@6 = <<"121"/utf8>>,
_pipe@7 = gleam@string:pad_left(_pipe@6, 4, <<"XY"/utf8>>),
gleam@should:equal(_pipe@7, <<"X121"/utf8>>),
_pipe@8 = <<"121"/utf8>>,
_pipe@9 = gleam@string:pad_left(_pipe@8, 5, <<"XY"/utf8>>),
gleam@should:equal(_pipe@9, <<"XY121"/utf8>>),
_pipe@10 = <<"121"/utf8>>,
_pipe@11 = gleam@string:pad_left(_pipe@10, 6, <<"XY"/utf8>>),
gleam@should:equal(_pipe@11, <<"XYX121"/utf8>>).
-spec pad_right_test() -> nil.
pad_right_test() ->
_pipe = <<"121"/utf8>>,
_pipe@1 = gleam@string:pad_right(_pipe, 5, <<"."/utf8>>),
gleam@should:equal(_pipe@1, <<"121.."/utf8>>),
_pipe@2 = <<"121"/utf8>>,
_pipe@3 = gleam@string:pad_right(_pipe@2, 3, <<"."/utf8>>),
gleam@should:equal(_pipe@3, <<"121"/utf8>>),
_pipe@4 = <<"121"/utf8>>,
_pipe@5 = gleam@string:pad_right(_pipe@4, 2, <<"."/utf8>>),
gleam@should:equal(_pipe@5, <<"121"/utf8>>),
_pipe@6 = <<"121"/utf8>>,
_pipe@7 = gleam@string:pad_right(_pipe@6, 4, <<"XY"/utf8>>),
gleam@should:equal(_pipe@7, <<"121X"/utf8>>),
_pipe@8 = <<"121"/utf8>>,
_pipe@9 = gleam@string:pad_right(_pipe@8, 5, <<"XY"/utf8>>),
gleam@should:equal(_pipe@9, <<"121XY"/utf8>>),
_pipe@10 = <<"121"/utf8>>,
_pipe@11 = gleam@string:pad_right(_pipe@10, 6, <<"XY"/utf8>>),
gleam@should:equal(_pipe@11, <<"121XYX"/utf8>>).
-spec pop_grapheme_test() -> nil.
pop_grapheme_test() ->
_pipe = <<"gleam"/utf8>>,
_pipe@1 = gleam@string:pop_grapheme(_pipe),
gleam@should:equal(_pipe@1, {ok, {<<"g"/utf8>>, <<"leam"/utf8>>}}),
_pipe@2 = <<"g"/utf8>>,
_pipe@3 = gleam@string:pop_grapheme(_pipe@2),
gleam@should:equal(_pipe@3, {ok, {<<"g"/utf8>>, <<""/utf8>>}}),
_pipe@4 = <<""/utf8>>,
_pipe@5 = gleam@string:pop_grapheme(_pipe@4),
gleam@should:equal(_pipe@5, {error, nil}).
-spec to_graphemes_test() -> nil.
to_graphemes_test() ->
_pipe = <<"abc"/utf8>>,
_pipe@1 = gleam@string:to_graphemes(_pipe),
gleam@should:equal(_pipe@1, [<<"a"/utf8>>, <<"b"/utf8>>, <<"c"/utf8>>]),
_pipe@2 = <<"a"/utf8>>,
_pipe@3 = gleam@string:to_graphemes(_pipe@2),
gleam@should:equal(_pipe@3, [<<"a"/utf8>>]),
_pipe@4 = <<""/utf8>>,
_pipe@5 = gleam@string:to_graphemes(_pipe@4),
gleam@should:equal(_pipe@5, []).
-spec utf_codepoint_test() -> nil.
utf_codepoint_test() ->
_pipe = gleam@string:utf_codepoint(1114444),
gleam@should:be_error(_pipe),
_pipe@1 = gleam@string:utf_codepoint(65534),
gleam@should:be_error(_pipe@1),
_pipe@2 = gleam@string:utf_codepoint(55296),
gleam@should:be_error(_pipe@2).
-spec bit_string_utf_codepoint_test() -> nil.
bit_string_utf_codepoint_test() ->
{ok, Snake@1} = case gleam@string:utf_codepoint(128013) of
{ok, Snake} -> {ok, Snake};
_try ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _try,
module => <<"gleam/string_test"/utf8>>,
function => <<"bit_string_utf_codepoint_test"/utf8>>,
line => 356})
end,
gleam@should:equal(<<Snake@1/utf8>>, <<"🐍"/utf8>>).
-spec to_option_test() -> nil.
to_option_test() ->
_pipe = <<""/utf8>>,
_pipe@1 = gleam@string:to_option(_pipe),
gleam@should:equal(_pipe@1, none),
_pipe@2 = <<"ok"/utf8>>,
_pipe@3 = gleam@string:to_option(_pipe@2),
gleam@should:equal(_pipe@3, {some, <<"ok"/utf8>>}).