process-communication/test/test_stack.exs
2023-07-03 13:51:47 +03:00

41 lines
1 KiB
Elixir

defmodule MyStack.Test do
require MyStack
use ExUnit.Case, async: true
defmodule MySupervisor do
use Supervisor
def start_link do
Supervisor.start_link(__MODULE__, :ok)
end
def init(:ok) do
children = [
%{id: 1, start: {MyStack, :start_link, [[name: :my_server]]}},
%{id: 2, start: {MyStack, :start_link, [[name: :my_server2]]}}
]
Supervisor.init(children, strategy: :one_for_one)
end
end
setup do
{:ok, supervisor: MySupervisor.start_link()}
end
test "server starts with an empty client list", %{supervisor: supervisor} do
send(:my_server, {:push, 2})
assert GenServer.call(:my_server, :pop) == 2
send(:my_server, {:push, 1})
send(:my_server, {:push, 4})
send(:my_server2, {:push, 3})
send(:my_server2, {:push, 8})
assert GenServer.call(:my_server2, :pop) == 8
assert GenServer.call(:my_server, :pop) == 4
assert GenServer.call(:my_server2, :pop) == 3
assert GenServer.call(:my_server, :pop) == 1
end
end