Current section

Files

Jump to
gleam_stdlib gen test gleam@queue_test.erl
Raw

gen/test/gleam@queue_test.erl

-module(gleam@queue_test).
-compile(no_auto_import).
-export([from_and_to_list_test/0, is_empty_test/0, length_test/0, push_back_test/0, push_front_test/0, push_test/0, pop_back_test/0, pop_back_after_push_back_test/0, pop_back_after_push_test/0, pop_back_empty_test/0, pop_front_test/0, pop_front_after_push_front_test/0, pop_front_after_push_test/0, pop_front_empty_test/0, reverse_test/0, is_equal_test/0, is_logically_equal_test/0]).
-spec from_and_to_list_test() -> gleam@should:expectation().
from_and_to_list_test() ->
gleam@should:equal(gleam@queue:from_list([]), gleam@queue:new()),
gleam@should:equal(
gleam@queue:to_list(gleam@queue:from_list([1, 2, 3])),
[1, 2, 3]
).
-spec is_empty_test() -> gleam@should:expectation().
is_empty_test() ->
gleam@should:be_true(gleam@queue:is_empty(gleam@queue:new())),
gleam@should:be_false(
gleam@queue:is_empty(gleam@queue:from_list([<<""/utf8>>]))
).
-spec length_test() -> gleam@should:expectation().
length_test() ->
Test = fun(Input) ->
gleam@should:equal(
gleam@queue:length(gleam@queue:from_list(Input)),
gleam@list:length(Input)
)
end,
Test([]),
Test([1]),
Test([1, 2]),
Test([1, 2, 1]),
Test([1, 2, 1, 5, 2, 7, 2, 7, 8, 4, 545]).
-spec push_back_test() -> gleam@should:expectation().
push_back_test() ->
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:push_back(gleam@queue:from_list([1, 2]), 3)
),
[1, 2, 3]
),
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:push_back(
gleam@queue:push_back(
gleam@queue:push_back(gleam@queue:new(), 1),
2
),
3
)
),
[1, 2, 3]
).
-spec push_front_test() -> gleam@should:expectation().
push_front_test() ->
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:push_front(
gleam@queue:push_front(gleam@queue:from_list([2, 3]), 1),
0
)
),
[0, 1, 2, 3]
).
-spec push_test() -> gleam@should:expectation().
push_test() ->
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:push_back(
gleam@queue:push_front(
gleam@queue:push_back(
gleam@queue:push_front(gleam@queue:new(), <<"b"/utf8>>),
<<"x"/utf8>>
),
<<"a"/utf8>>
),
<<"y"/utf8>>
)
),
[<<"a"/utf8>>, <<"b"/utf8>>, <<"x"/utf8>>, <<"y"/utf8>>]
).
-spec pop_back_test() -> gleam@should:expectation().
pop_back_test() ->
Tup@1 = case gleam@queue:pop_back(gleam@queue:from_list([1, 2, 3])) of
{ok, Tup} -> Tup;
Gleam@Assert ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => Gleam@Assert,
module => <<"gleam/queue_test"/utf8>>,
function => <<"pop_back_test"/utf8>>,
line => 76})
end,
gleam@should:equal(gleam@pair:first(Tup@1), 3),
gleam@should:be_true(
gleam@queue:is_equal(
gleam@pair:second(Tup@1),
gleam@queue:from_list([1, 2])
)
).
-spec pop_back_after_push_back_test() -> gleam@should:expectation().
pop_back_after_push_back_test() ->
Tup@1 = case gleam@queue:pop_back(
gleam@queue:push_back(
gleam@queue:push_back(
gleam@queue:push_back(gleam@queue:new(), 1),
2
),
3
)
) of
{ok, Tup} -> Tup;
Gleam@Assert ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => Gleam@Assert,
module => <<"gleam/queue_test"/utf8>>,
function => <<"pop_back_after_push_back_test"/utf8>>,
line => 92})
end,
gleam@should:equal(gleam@pair:first(Tup@1), 3).
-spec pop_back_after_push_test() -> gleam@should:expectation().
pop_back_after_push_test() ->
Tup@1 = case gleam@queue:pop_back(
gleam@queue:push_back(
gleam@queue:push_front(
gleam@queue:push_back(
gleam@queue:push_front(gleam@queue:new(), <<"b"/utf8>>),
<<"x"/utf8>>
),
<<"a"/utf8>>
),
<<"y"/utf8>>
)
) of
{ok, Tup} -> Tup;
Gleam@Assert ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => Gleam@Assert,
module => <<"gleam/queue_test"/utf8>>,
function => <<"pop_back_after_push_test"/utf8>>,
line => 105})
end,
gleam@should:equal(gleam@pair:first(Tup@1), <<"y"/utf8>>).
-spec pop_back_empty_test() -> gleam@should:expectation().
pop_back_empty_test() ->
gleam@should:equal(
gleam@queue:pop_back(gleam@queue:from_list([])),
{error, nil}
).
-spec pop_front_test() -> gleam@should:expectation().
pop_front_test() ->
Tup@1 = case gleam@queue:pop_front(gleam@queue:from_list([1, 2, 3])) of
{ok, Tup} -> Tup;
Gleam@Assert ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => Gleam@Assert,
module => <<"gleam/queue_test"/utf8>>,
function => <<"pop_front_test"/utf8>>,
line => 125})
end,
gleam@should:equal(gleam@pair:first(Tup@1), 1),
gleam@should:be_true(
gleam@queue:is_equal(
gleam@pair:second(Tup@1),
gleam@queue:from_list([2, 3])
)
).
-spec pop_front_after_push_front_test() -> gleam@should:expectation().
pop_front_after_push_front_test() ->
Tup@1 = case gleam@queue:pop_front(
gleam@queue:push_front(
gleam@queue:push_front(
gleam@queue:push_front(gleam@queue:new(), 3),
2
),
1
)
) of
{ok, Tup} -> Tup;
Gleam@Assert ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => Gleam@Assert,
module => <<"gleam/queue_test"/utf8>>,
function => <<"pop_front_after_push_front_test"/utf8>>,
line => 141})
end,
gleam@should:equal(gleam@pair:first(Tup@1), 1).
-spec pop_front_after_push_test() -> gleam@should:expectation().
pop_front_after_push_test() ->
Tup@1 = case gleam@queue:pop_front(
gleam@queue:push_front(
gleam@queue:push_back(
gleam@queue:push_front(gleam@queue:new(), <<"b"/utf8>>),
<<"x"/utf8>>
),
<<"a"/utf8>>
)
) of
{ok, Tup} -> Tup;
Gleam@Assert ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => Gleam@Assert,
module => <<"gleam/queue_test"/utf8>>,
function => <<"pop_front_after_push_test"/utf8>>,
line => 154})
end,
gleam@should:equal(gleam@pair:first(Tup@1), <<"a"/utf8>>).
-spec pop_front_empty_test() -> gleam@should:expectation().
pop_front_empty_test() ->
gleam@should:equal(
gleam@queue:pop_front(gleam@queue:from_list([])),
{error, nil}
).
-spec reverse_test() -> gleam@should:expectation().
reverse_test() ->
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:reverse(gleam@queue:from_list([1, 2, 3]))
),
[3, 2, 1]
),
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:reverse(
gleam@queue:push_back(
gleam@queue:push_back(
gleam@queue:push_back(gleam@queue:new(), 1),
2
),
3
)
)
),
[3, 2, 1]
),
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:reverse(
gleam@queue:push_front(
gleam@queue:push_front(
gleam@queue:push_front(gleam@queue:new(), 1),
2
),
3
)
)
),
[1, 2, 3]
),
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:reverse(
gleam@queue:push_back(
gleam@queue:push_back(
gleam@queue:push_front(
gleam@queue:push_front(gleam@queue:new(), 1),
2
),
3
),
4
)
)
),
[4, 3, 1, 2]
).
-spec is_equal_test() -> gleam@should:expectation().
is_equal_test() ->
Should_equal = fun(A, B) ->
gleam@should:be_true(gleam@queue:is_equal(A, B))
end,
Should_not_equal = fun(A@1, B@1) ->
gleam@should:be_false(gleam@queue:is_equal(A@1, B@1))
end,
Should_equal(gleam@queue:new(), gleam@queue:new()),
Should_equal(
gleam@queue:push_front(gleam@queue:new(), 1),
gleam@queue:push_back(gleam@queue:new(), 1)
),
Should_equal(
gleam@queue:push_front(gleam@queue:new(), 1),
gleam@queue:push_front(gleam@queue:new(), 1)
),
Should_equal(
gleam@queue:push_back(gleam@queue:push_back(gleam@queue:new(), 1), 2),
gleam@queue:push_front(gleam@queue:push_front(gleam@queue:new(), 2), 1)
),
Should_not_equal(
gleam@queue:push_back(gleam@queue:new(), 1),
gleam@queue:push_front(gleam@queue:push_front(gleam@queue:new(), 2), 1)
),
Should_not_equal(
gleam@queue:push_back(gleam@queue:push_back(gleam@queue:new(), 2), 1),
gleam@queue:push_front(gleam@queue:push_front(gleam@queue:new(), 2), 1)
).
-spec is_logically_equal_test() -> gleam@should:expectation().
is_logically_equal_test() ->
Both_even_or_odd = fun(A, B) ->
gleam@int:is_even(A)
=:= gleam@int:is_even(B)
end,
Should_equal = fun(A@1, B@1) ->
gleam@should:be_true(
gleam@queue:is_logically_equal(A@1, B@1, Both_even_or_odd)
)
end,
Should_not_equal = fun(A@2, B@2) ->
gleam@should:be_false(
gleam@queue:is_logically_equal(A@2, B@2, Both_even_or_odd)
)
end,
Should_equal(gleam@queue:new(), gleam@queue:new()),
Should_equal(
gleam@queue:push_front(gleam@queue:new(), 3),
gleam@queue:push_back(gleam@queue:new(), 1)
),
Should_equal(
gleam@queue:push_front(gleam@queue:new(), 4),
gleam@queue:push_back(gleam@queue:new(), 2)
),
Should_equal(
gleam@queue:push_front(gleam@queue:new(), 3),
gleam@queue:push_front(gleam@queue:new(), 1)
),
Should_equal(
gleam@queue:push_back(gleam@queue:push_back(gleam@queue:new(), 3), 4),
gleam@queue:push_front(gleam@queue:push_front(gleam@queue:new(), 2), 1)
),
Should_not_equal(
gleam@queue:push_back(gleam@queue:new(), 1),
gleam@queue:push_front(gleam@queue:push_front(gleam@queue:new(), 2), 1)
),
Should_not_equal(
gleam@queue:push_back(gleam@queue:push_back(gleam@queue:new(), 2), 1),
gleam@queue:push_front(gleam@queue:push_front(gleam@queue:new(), 2), 1)
),
Should_not_equal(
gleam@queue:push_back(gleam@queue:push_back(gleam@queue:new(), 4), 3),
gleam@queue:push_front(gleam@queue:push_front(gleam@queue:new(), 2), 1)
).