Current section

Files

Jump to
gleam_stdlib gen test gleam@string_test.erl
Raw

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>>}).