-module(queue_use).
-export([ok1/0, ok2/0]).
-export([wrong1/0, wrong2/0, wrong3/0, wrong4/0, wrong5/0, wrong6/0, wrong7/0, wrong8/0]).
ok1() ->
queue:is_empty(queue:new()).
ok2() ->
Q0 = queue:new(),
Q1 = queue:in(42, Q0),
{{value, 42}, Q2} = queue:out(Q1),
queue:is_empty(Q2).
%%--------------------------------------------------
wrong1() ->
queue:is_empty({[],[]}).
wrong2() ->
Q0 = {[],[]},
queue:in(42, Q0).
wrong3() ->
Q0 = queue:new(),
Q1 = queue:in(42, Q0),
{[42],Q2} = Q1,
Q2.
wrong4() ->
Q0 = queue:new(),
Q1 = queue:in(42, Q0),
Q1 =:= {[42],[]}.
wrong5() ->
{F, _R} = queue:new(),
F.
wrong6() ->
{{value, 42}, Q2} = queue:out({[42],[]}),
Q2.
%%--------------------------------------------------
-record(db, {p, q}).
wrong7() ->
add_unique(42, #db{p = [], q = queue:new()}).
add_unique(E, DB) ->
case is_in_queue(E, DB) of
true -> DB;
false -> DB#db{q = queue:in(E, DB#db.q)}
end.
is_in_queue(P, #db{q = {L1,L2}}) ->
lists:member(P, L1) orelse lists:member(P, L2).
%%--------------------------------------------------
wrong8() ->
tuple_queue({42, gazonk}).
tuple_queue({F, Q}) ->
queue:in(F, Q).