-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() -> nil. from_and_to_list_test() -> _pipe = gleam@queue:from_list([]), gleam@should:equal(_pipe, gleam@queue:new()), _pipe@1 = [1], _pipe@2 = gleam@queue:from_list(_pipe@1), _pipe@3 = gleam@queue:to_list(_pipe@2), gleam@should:equal(_pipe@3, [1]), _pipe@4 = [1, 2], _pipe@5 = gleam@queue:from_list(_pipe@4), _pipe@6 = gleam@queue:to_list(_pipe@5), gleam@should:equal(_pipe@6, [1, 2]), _pipe@7 = [1, 2, 3], _pipe@8 = gleam@queue:from_list(_pipe@7), _pipe@9 = gleam@queue:to_list(_pipe@8), gleam@should:equal(_pipe@9, [1, 2, 3]). -spec is_empty_test() -> nil. is_empty_test() -> _pipe = gleam@queue:new(), _pipe@1 = gleam@queue:is_empty(_pipe), gleam@should:be_true(_pipe@1), _pipe@2 = gleam@queue:from_list([<<""/utf8>>]), _pipe@3 = gleam@queue:is_empty(_pipe@2), gleam@should:be_false(_pipe@3). -spec length_test() -> nil. length_test() -> Test = fun(Input) -> _pipe = gleam@queue:from_list(Input), _pipe@1 = gleam@queue:length(_pipe), gleam@should:equal(_pipe@1, 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() -> nil. push_back_test() -> _pipe = [1, 2], _pipe@1 = gleam@queue:from_list(_pipe), _pipe@2 = gleam@queue:push_back(_pipe@1, 3), _pipe@3 = gleam@queue:to_list(_pipe@2), gleam@should:equal(_pipe@3, [1, 2, 3]), _pipe@4 = gleam@queue:new(), _pipe@5 = gleam@queue:push_back(_pipe@4, 1), _pipe@6 = gleam@queue:push_back(_pipe@5, 2), _pipe@7 = gleam@queue:push_back(_pipe@6, 3), _pipe@8 = gleam@queue:to_list(_pipe@7), gleam@should:equal(_pipe@8, [1, 2, 3]). -spec push_front_test() -> nil. push_front_test() -> _pipe = [2, 3], _pipe@1 = gleam@queue:from_list(_pipe), _pipe@2 = gleam@queue:push_front(_pipe@1, 1), _pipe@3 = gleam@queue:push_front(_pipe@2, 0), _pipe@4 = gleam@queue:to_list(_pipe@3), gleam@should:equal(_pipe@4, [0, 1, 2, 3]). -spec push_test() -> nil. push_test() -> _pipe = gleam@queue:new(), _pipe@1 = gleam@queue:push_front(_pipe, <<"b"/utf8>>), _pipe@2 = gleam@queue:push_back(_pipe@1, <<"x"/utf8>>), _pipe@3 = gleam@queue:push_front(_pipe@2, <<"a"/utf8>>), _pipe@4 = gleam@queue:push_back(_pipe@3, <<"y"/utf8>>), _pipe@5 = gleam@queue:to_list(_pipe@4), gleam@should:equal( _pipe@5, [<<"a"/utf8>>, <<"b"/utf8>>, <<"x"/utf8>>, <<"y"/utf8>>] ). -spec pop_back_test() -> nil. pop_back_test() -> {ok, Tup@1} = case begin _pipe = [1, 2, 3], _pipe@1 = gleam@queue:from_list(_pipe), gleam@queue:pop_back(_pipe@1) end of {ok, Tup} -> {ok, Tup}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"gleam/queue_test"/utf8>>, function => <<"pop_back_test"/utf8>>, line => 87}) end, _pipe@2 = Tup@1, _pipe@3 = gleam@pair:first(_pipe@2), gleam@should:equal(_pipe@3, 3), _pipe@4 = Tup@1, _pipe@5 = gleam@pair:second(_pipe@4), _pipe@6 = gleam@queue:is_equal(_pipe@5, gleam@queue:from_list([1, 2])), gleam@should:be_true(_pipe@6). -spec pop_back_after_push_back_test() -> nil. pop_back_after_push_back_test() -> {ok, Tup@1} = case begin _pipe = gleam@queue:new(), _pipe@1 = gleam@queue:push_back(_pipe, 1), _pipe@2 = gleam@queue:push_back(_pipe@1, 2), _pipe@3 = gleam@queue:push_back(_pipe@2, 3), gleam@queue:pop_back(_pipe@3) end of {ok, Tup} -> {ok, Tup}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"gleam/queue_test"/utf8>>, function => <<"pop_back_after_push_back_test"/utf8>>, line => 103}) end, _pipe@4 = Tup@1, _pipe@5 = gleam@pair:first(_pipe@4), gleam@should:equal(_pipe@5, 3). -spec pop_back_after_push_test() -> nil. pop_back_after_push_test() -> {ok, Tup@1} = case begin _pipe = gleam@queue:new(), _pipe@1 = gleam@queue:push_front(_pipe, <<"b"/utf8>>), _pipe@2 = gleam@queue:push_back(_pipe@1, <<"x"/utf8>>), _pipe@3 = gleam@queue:push_front(_pipe@2, <<"a"/utf8>>), _pipe@4 = gleam@queue:push_back(_pipe@3, <<"y"/utf8>>), gleam@queue:pop_back(_pipe@4) end of {ok, Tup} -> {ok, Tup}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"gleam/queue_test"/utf8>>, function => <<"pop_back_after_push_test"/utf8>>, line => 116}) end, _pipe@5 = Tup@1, _pipe@6 = gleam@pair:first(_pipe@5), gleam@should:equal(_pipe@6, <<"y"/utf8>>). -spec pop_back_empty_test() -> nil. pop_back_empty_test() -> _pipe = gleam@queue:from_list([]), _pipe@1 = gleam@queue:pop_back(_pipe), gleam@should:equal(_pipe@1, {error, nil}). -spec pop_front_test() -> nil. pop_front_test() -> {ok, Tup@1} = case begin _pipe = [1, 2, 3], _pipe@1 = gleam@queue:from_list(_pipe), gleam@queue:pop_front(_pipe@1) end of {ok, Tup} -> {ok, Tup}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"gleam/queue_test"/utf8>>, function => <<"pop_front_test"/utf8>>, line => 136}) end, _pipe@2 = Tup@1, _pipe@3 = gleam@pair:first(_pipe@2), gleam@should:equal(_pipe@3, 1), _pipe@4 = Tup@1, _pipe@5 = gleam@pair:second(_pipe@4), _pipe@6 = gleam@queue:is_equal(_pipe@5, gleam@queue:from_list([2, 3])), gleam@should:be_true(_pipe@6). -spec pop_front_after_push_front_test() -> nil. pop_front_after_push_front_test() -> {ok, Tup@1} = case begin _pipe = gleam@queue:new(), _pipe@1 = gleam@queue:push_front(_pipe, 3), _pipe@2 = gleam@queue:push_front(_pipe@1, 2), _pipe@3 = gleam@queue:push_front(_pipe@2, 1), gleam@queue:pop_front(_pipe@3) end of {ok, Tup} -> {ok, Tup}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"gleam/queue_test"/utf8>>, function => <<"pop_front_after_push_front_test"/utf8>>, line => 152}) end, _pipe@4 = Tup@1, _pipe@5 = gleam@pair:first(_pipe@4), gleam@should:equal(_pipe@5, 1). -spec pop_front_after_push_test() -> nil. pop_front_after_push_test() -> {ok, Tup@1} = case begin _pipe = gleam@queue:new(), _pipe@1 = gleam@queue:push_front(_pipe, <<"b"/utf8>>), _pipe@2 = gleam@queue:push_back(_pipe@1, <<"x"/utf8>>), _pipe@3 = gleam@queue:push_front(_pipe@2, <<"a"/utf8>>), gleam@queue:pop_front(_pipe@3) end of {ok, Tup} -> {ok, Tup}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"gleam/queue_test"/utf8>>, function => <<"pop_front_after_push_test"/utf8>>, line => 165}) end, _pipe@4 = Tup@1, _pipe@5 = gleam@pair:first(_pipe@4), gleam@should:equal(_pipe@5, <<"a"/utf8>>). -spec pop_front_empty_test() -> nil. pop_front_empty_test() -> _pipe = gleam@queue:from_list([]), _pipe@1 = gleam@queue:pop_front(_pipe), gleam@should:equal(_pipe@1, {error, nil}). -spec reverse_test() -> nil. reverse_test() -> _pipe = gleam@queue:from_list([1, 2, 3]), _pipe@1 = gleam@queue:reverse(_pipe), _pipe@2 = gleam@queue:to_list(_pipe@1), gleam@should:equal(_pipe@2, [3, 2, 1]), _pipe@3 = gleam@queue:new(), _pipe@4 = gleam@queue:push_back(_pipe@3, 1), _pipe@5 = gleam@queue:push_back(_pipe@4, 2), _pipe@6 = gleam@queue:push_back(_pipe@5, 3), _pipe@7 = gleam@queue:reverse(_pipe@6), _pipe@8 = gleam@queue:to_list(_pipe@7), gleam@should:equal(_pipe@8, [3, 2, 1]), _pipe@9 = gleam@queue:new(), _pipe@10 = gleam@queue:push_front(_pipe@9, 1), _pipe@11 = gleam@queue:push_front(_pipe@10, 2), _pipe@12 = gleam@queue:push_front(_pipe@11, 3), _pipe@13 = gleam@queue:reverse(_pipe@12), _pipe@14 = gleam@queue:to_list(_pipe@13), gleam@should:equal(_pipe@14, [1, 2, 3]), _pipe@15 = gleam@queue:new(), _pipe@16 = gleam@queue:push_front(_pipe@15, 1), _pipe@17 = gleam@queue:push_front(_pipe@16, 2), _pipe@18 = gleam@queue:push_back(_pipe@17, 3), _pipe@19 = gleam@queue:push_back(_pipe@18, 4), _pipe@20 = gleam@queue:reverse(_pipe@19), _pipe@21 = gleam@queue:to_list(_pipe@20), gleam@should:equal(_pipe@21, [4, 3, 1, 2]). -spec is_equal_test() -> nil. is_equal_test() -> Should_equal = fun(A, B) -> _pipe = A, _pipe@1 = gleam@queue:is_equal(_pipe, B), gleam@should:be_true(_pipe@1) end, Should_not_equal = fun(A@1, B@1) -> _pipe@2 = A@1, _pipe@3 = gleam@queue:is_equal(_pipe@2, B@1), gleam@should:be_false(_pipe@3) end, Should_equal(gleam@queue:new(), gleam@queue:new()), _pipe@4 = gleam@queue:new(), _pipe@5 = gleam@queue:push_front(_pipe@4, 1), Should_equal( _pipe@5, begin _pipe@6 = gleam@queue:new(), gleam@queue:push_back(_pipe@6, 1) end ), _pipe@7 = gleam@queue:new(), _pipe@8 = gleam@queue:push_front(_pipe@7, 1), Should_equal( _pipe@8, begin _pipe@9 = gleam@queue:new(), gleam@queue:push_front(_pipe@9, 1) end ), _pipe@10 = gleam@queue:new(), _pipe@11 = gleam@queue:push_back(_pipe@10, 1), _pipe@12 = gleam@queue:push_back(_pipe@11, 2), Should_equal( _pipe@12, begin _pipe@13 = gleam@queue:new(), _pipe@14 = gleam@queue:push_front(_pipe@13, 2), gleam@queue:push_front(_pipe@14, 1) end ), _pipe@15 = gleam@queue:new(), _pipe@16 = gleam@queue:push_back(_pipe@15, 1), Should_not_equal( _pipe@16, begin _pipe@17 = gleam@queue:new(), _pipe@18 = gleam@queue:push_front(_pipe@17, 2), gleam@queue:push_front(_pipe@18, 1) end ), _pipe@19 = gleam@queue:new(), _pipe@20 = gleam@queue:push_back(_pipe@19, 2), _pipe@21 = gleam@queue:push_back(_pipe@20, 1), Should_not_equal( _pipe@21, begin _pipe@22 = gleam@queue:new(), _pipe@23 = gleam@queue:push_front(_pipe@22, 2), gleam@queue:push_front(_pipe@23, 1) end ). -spec is_logically_equal_test() -> nil. 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) -> _pipe = A@1, _pipe@1 = gleam@queue:is_logically_equal(_pipe, B@1, Both_even_or_odd), gleam@should:be_true(_pipe@1) end, Should_not_equal = fun(A@2, B@2) -> _pipe@2 = A@2, _pipe@3 = gleam@queue:is_logically_equal(_pipe@2, B@2, Both_even_or_odd), gleam@should:be_false(_pipe@3) end, Should_equal(gleam@queue:new(), gleam@queue:new()), _pipe@4 = gleam@queue:new(), _pipe@5 = gleam@queue:push_front(_pipe@4, 3), Should_equal( _pipe@5, begin _pipe@6 = gleam@queue:new(), gleam@queue:push_back(_pipe@6, 1) end ), _pipe@7 = gleam@queue:new(), _pipe@8 = gleam@queue:push_front(_pipe@7, 4), Should_equal( _pipe@8, begin _pipe@9 = gleam@queue:new(), gleam@queue:push_back(_pipe@9, 2) end ), _pipe@10 = gleam@queue:new(), _pipe@11 = gleam@queue:push_front(_pipe@10, 3), Should_equal( _pipe@11, begin _pipe@12 = gleam@queue:new(), gleam@queue:push_front(_pipe@12, 1) end ), _pipe@13 = gleam@queue:new(), _pipe@14 = gleam@queue:push_back(_pipe@13, 3), _pipe@15 = gleam@queue:push_back(_pipe@14, 4), Should_equal( _pipe@15, begin _pipe@16 = gleam@queue:new(), _pipe@17 = gleam@queue:push_front(_pipe@16, 2), gleam@queue:push_front(_pipe@17, 1) end ), _pipe@18 = gleam@queue:new(), _pipe@19 = gleam@queue:push_back(_pipe@18, 1), Should_not_equal( _pipe@19, begin _pipe@20 = gleam@queue:new(), _pipe@21 = gleam@queue:push_front(_pipe@20, 2), gleam@queue:push_front(_pipe@21, 1) end ), _pipe@22 = gleam@queue:new(), _pipe@23 = gleam@queue:push_back(_pipe@22, 2), _pipe@24 = gleam@queue:push_back(_pipe@23, 1), Should_not_equal( _pipe@24, begin _pipe@25 = gleam@queue:new(), _pipe@26 = gleam@queue:push_front(_pipe@25, 2), gleam@queue:push_front(_pipe@26, 1) end ), _pipe@27 = gleam@queue:new(), _pipe@28 = gleam@queue:push_back(_pipe@27, 4), _pipe@29 = gleam@queue:push_back(_pipe@28, 3), Should_not_equal( _pipe@29, begin _pipe@30 = gleam@queue:new(), _pipe@31 = gleam@queue:push_front(_pipe@30, 2), gleam@queue:push_front(_pipe@31, 1) end ).