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, push_back_test/0, is_empty_test/0, length_test/0, push_test/0, push_front_test/0, pop_back_test/0, pop_front_test/0, reverse_test/0, is_equal_test/0, is_logically_equal_test/0]).
from_and_to_list_test() ->
gleam@should:equal(gleam@queue:from_list([]), gleam@queue:new()),
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:push_back(gleam@queue:from_list([0, 0]), 1)
),
[0, 0, 1]
),
Test = fun(Input) ->
gleam@should:equal(
gleam@list:reverse(
gleam@queue:to_list(gleam@queue:from_list(Input))
),
Input
)
end,
Test([]),
Test([1]),
Test([1, 2]),
Test([1, 2, 1]),
Test([1, 2, 1, 5, 2, 7, 2, 7, 8, 4, 545]).
push_back_test() ->
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:push_back(gleam@queue:from_list([0, 0]), 1)
),
[0, 0, 1]
).
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>>]))
).
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]).
push_test() ->
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:push_back(
gleam@queue:push_back(
gleam@queue:push_back(gleam@queue:new(), 7),
8
),
2
)
),
[7, 8, 2]
).
push_front_test() ->
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:push_front(
gleam@queue:push_front(
gleam@queue:push_back(
gleam@queue:push_back(
gleam@queue:push_back(gleam@queue:new(), 7),
8
),
2
),
4
),
3
)
),
[3, 4, 7, 8, 2]
),
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:push_front(gleam@queue:from_list([0, 0]), 1)
),
[1, 0, 0]
).
pop_back_test() ->
ExpectedRest = gleam@queue:push_front(
gleam@queue:push_front(gleam@queue:new(), 1),
2
),
gleam@should:equal(
gleam@queue:pop_back(gleam@queue:from_list([1, 2, 3])),
{ok, {3, ExpectedRest}}
),
gleam@should:equal(
gleam@queue:pop_back(gleam@queue:from_list([])),
{error, nil}
).
pop_front_test() ->
gleam@should:equal(
gleam@queue:pop_front(gleam@queue:from_list([1, 2, 3])),
{ok, {1, gleam@queue:from_list([2, 3])}}
),
gleam@should:equal(
gleam@queue:pop_front(gleam@queue:from_list([])),
{error, nil}
).
reverse_test() ->
gleam@should:equal(
gleam@queue:to_list(
gleam@queue:reverse(gleam@queue:from_list([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_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]
).
is_equal_test() ->
ShouldEqual = fun(A, B) ->
gleam@should:be_true(gleam@queue:is_equal(A, B))
end,
ShouldNotEqual = fun(A@1, B@1) ->
gleam@should:be_false(gleam@queue:is_equal(A@1, B@1))
end,
ShouldEqual(gleam@queue:new(), gleam@queue:new()),
ShouldEqual(
gleam@queue:push_front(gleam@queue:new(), 1),
gleam@queue:push_back(gleam@queue:new(), 1)
),
ShouldEqual(
gleam@queue:push_front(gleam@queue:new(), 1),
gleam@queue:push_front(gleam@queue:new(), 1)
),
ShouldEqual(
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)
),
ShouldNotEqual(
gleam@queue:push_back(gleam@queue:new(), 1),
gleam@queue:push_front(gleam@queue:push_front(gleam@queue:new(), 2), 1)
),
ShouldNotEqual(
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)
).
is_logically_equal_test() ->
BothEvenOrOdd = fun(A, B) ->
gleam@int:is_even(A)
=:= gleam@int:is_even(B)
end,
ShouldEqual = fun(A@1, B@1) ->
gleam@should:be_true(
gleam@queue:is_logically_equal(A@1, B@1, BothEvenOrOdd)
)
end,
ShouldNotEqual = fun(A@2, B@2) ->
gleam@should:be_false(
gleam@queue:is_logically_equal(A@2, B@2, BothEvenOrOdd)
)
end,
ShouldEqual(gleam@queue:new(), gleam@queue:new()),
ShouldEqual(
gleam@queue:push_front(gleam@queue:new(), 3),
gleam@queue:push_back(gleam@queue:new(), 1)
),
ShouldEqual(
gleam@queue:push_front(gleam@queue:new(), 4),
gleam@queue:push_back(gleam@queue:new(), 2)
),
ShouldEqual(
gleam@queue:push_front(gleam@queue:new(), 3),
gleam@queue:push_front(gleam@queue:new(), 1)
),
ShouldEqual(
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)
),
ShouldNotEqual(
gleam@queue:push_back(gleam@queue:new(), 1),
gleam@queue:push_front(gleam@queue:push_front(gleam@queue:new(), 2), 1)
),
ShouldNotEqual(
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)
),
ShouldNotEqual(
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)
).