41 lines
1 KiB
Elixir
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
|