Current section
Files
Jump to
Current section
Files
gen/test/ids@cuid_test.erl
-module(ids@cuid_test).
-compile(no_auto_import).
-export([gen_test/0, is_cuid_test/0, slug_test/0, is_slug_test/0]).
-spec gen_test() -> gleam@should:expectation().
gen_test() ->
Channel@1 = case ids@cuid:start() of
{ok, Channel} -> Channel;
Gleam@Assert ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => Gleam@Assert,
module => <<"ids/cuid_test"/utf8>>,
function => <<"gen_test"/utf8>>,
line => 12})
end,
gleam@should:be_true(check_collision(fun() -> ids@cuid:gen(Channel@1) end)),
gleam@should:be_true(
gleam@string:starts_with(ids@cuid:gen(Channel@1), <<"c"/utf8>>)
).
-spec is_cuid_test() -> gleam@should:expectation().
is_cuid_test() ->
gleam@should:be_false(ids@cuid:is_cuid(<<"random"/utf8>>)),
gleam@should:be_true(ids@cuid:is_cuid(<<"ckgr2o7lm0000ygenmx3pnnuf"/utf8>>)).
-spec slug_test() -> gleam@should:expectation().
slug_test() ->
Channel@1 = case ids@cuid:start() of
{ok, Channel} -> Channel;
Gleam@Assert ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => Gleam@Assert,
module => <<"ids/cuid_test"/utf8>>,
function => <<"slug_test"/utf8>>,
line => 34})
end,
gleam@should:be_true(check_collision(fun() -> ids@cuid:slug(Channel@1) end)),
gleam@should:be_true(ids@cuid:is_slug(ids@cuid:slug(Channel@1))).
-spec is_slug_test() -> gleam@should:expectation().
is_slug_test() ->
gleam@should:be_false(ids@cuid:is_slug(<<"random"/utf8>>)),
gleam@should:be_true(ids@cuid:is_slug(<<"12345678"/utf8>>)).
-spec check_collision(fun(() -> binary())) -> boolean().
check_collision(Func) ->
gleam@pair:second(
gleam@iterator:fold(
gleam@iterator:unfold(0, fun(Acc) -> case Acc < 100000 of
false ->
done;
true ->
{next, Func(), Acc + 1}
end end),
{gleam@map:new(), true},
fun(Id, Acc@1) ->
{Id_map, Flag} = Acc@1,
case Flag of
false ->
Acc@1;
true ->
case gleam@map:get(Id_map, Id) of
{ok, _} ->
{Id_map, false};
{error, _} ->
{gleam@map:insert(Id_map, Id, Id), true}
end
end
end
)
).