diff --git a/exercises/behaviours/server/lib/frequency.ex b/exercises/behaviours/server/lib/frequency.ex index d73ba29..577441b 100644 --- a/exercises/behaviours/server/lib/frequency.ex +++ b/exercises/behaviours/server/lib/frequency.ex @@ -5,6 +5,7 @@ defmodule Frequency do ## API Calls (calling from Client process) def start(), do: Server.start(__MODULE__, []) + def stop(), do: Server.stop(__MODULE__) def allocate(), do: Server.call(__MODULE__, {:allocate, self()}) def deallocate(freq), do: Server.call(__MODULE__, {:deallocate, freq}) diff --git a/exercises/behaviours/server/mix.lock b/exercises/behaviours/server/mix.lock new file mode 100644 index 0000000..44ce6d8 --- /dev/null +++ b/exercises/behaviours/server/mix.lock @@ -0,0 +1,5 @@ +%{ + "recon": {:hex, :recon, "2.5.0", "2f7fcbec2c35034bade2f9717f77059dc54eb4e929a3049ca7ba6775c0bd66cd", [:mix, :rebar3], [], "hexpm", "72f3840fedd94f06315c523f6cecf5b4827233bed7ae3fe135b2a0ebeab5e196"}, + "redbug": {:hex, :redbug, "1.2.1", "9153ee50e42c39ce3f6efa65ee746f4a52896da66862cfb59e7c0f838b7b8414", [:rebar3], [], "hexpm", "bfc7bcb8743c55dbe0134dbcb89dd6a57606288cc4e2570eccd701061fbcbd93"}, + "rexbug": {:hex, :rexbug, "1.0.4", "b9908d95da835c7353ef051bc587662c9054fa3c0c11e96de9bad7fe18460aad", [:mix], [{:mix_test_watch, ">= 0.5.0", [hex: :mix_test_watch, repo: "hexpm", optional: true]}, {:redbug, "~> 1.2", [hex: :redbug, repo: "hexpm", optional: false]}], "hexpm", "4826565f39e617fa0eea3e916f02928b2f1d880bf5e084cb80da86a3e369390e"}, +} diff --git a/exercises/behaviours/server/test/frequencies_test.exs b/exercises/behaviours/server/test/frequencies_test.exs new file mode 100644 index 0000000..6890831 --- /dev/null +++ b/exercises/behaviours/server/test/frequencies_test.exs @@ -0,0 +1,46 @@ +defmodule FrequencyTest do + use ExUnit.Case + + ## WARNING: Don't make those kind of tests at home! + + describe "Frequency tests" do + test "Test allocation" do + Frequency.start() + for i <- 10..15 do + assert {:ok, i} == Frequency.allocate() + end + assert {:error, _} = Frequency.allocate() + assert :stop = Frequency.stop() + :ok + end + + test "Test deallocation" do + Frequency.start() + for i <- 1..5 do + assert :ok == Frequency.deallocate(i) + end + for i <- 5..1 do + assert {:ok, i} == Frequency.allocate() + end + assert {:ok, 10} = Frequency.allocate() + assert :stop = Frequency.stop() + :ok + end + + test "List available frequencies" do + Frequency.start() + assert [10, 11, 12, 13, 14, 15] == Frequency.list_available() + assert :stop = Frequency.stop() + :ok + end + + test "List allocated frequencies" do + Frequency.start() + assert [] == Frequency.list_allocated() + assert {:ok, 10} = Frequency.allocate() + assert [{10, _pid}] = Frequency.list_allocated() + assert :stop = Frequency.stop() + :ok + end + end +end diff --git a/exercises/behaviours/server/test/server_test.exs b/exercises/behaviours/server/test/server_test.exs index 4fa9b61..6723ea7 100644 --- a/exercises/behaviours/server/test/server_test.exs +++ b/exercises/behaviours/server/test/server_test.exs @@ -1,8 +1,3 @@ defmodule ServerTest do use ExUnit.Case - doctest Server - - test "greets the world" do - assert Server.hello() == :world - end end