Destructure answers in test function
This commit is contained in:
12
lib/koans.ex
12
lib/koans.ex
@@ -43,11 +43,11 @@ defmodule Koans do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
defmacro generate_test_method(name, number_of_args, body) do
|
defmacro generate_test_method(name, number_of_args, body) do
|
||||||
answer_placeholders = create_vars(number_of_args)
|
answer_vars = for id <- 1..number_of_args, do: Macro.var(String.to_atom("answer#{id}"), Koans)
|
||||||
multi_var = Blanks.replace(body, answer_placeholders)
|
multi_var = Blanks.replace(body, answer_vars)
|
||||||
|
|
||||||
quote do
|
quote do
|
||||||
def unquote(name)({:multiple, answers}) do
|
def unquote(name)({:multiple, unquote(answer_vars)}) do
|
||||||
converted = List.to_tuple(answers)
|
|
||||||
try do
|
try do
|
||||||
unquote(multi_var)
|
unquote(multi_var)
|
||||||
:ok
|
:ok
|
||||||
@@ -68,10 +68,6 @@ defmodule Koans do
|
|||||||
quote do: raise ExUnit.AssertionError, expr: unquote(code)
|
quote do: raise ExUnit.AssertionError, expr: unquote(code)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp create_vars(amount) do
|
|
||||||
for id <- 0..amount, do: quote do: elem(converted, unquote(id))
|
|
||||||
end
|
|
||||||
|
|
||||||
defmacro __using__(_opts) do
|
defmacro __using__(_opts) do
|
||||||
quote do
|
quote do
|
||||||
@compile :nowarn_unused_vars
|
@compile :nowarn_unused_vars
|
||||||
|
|||||||
Reference in New Issue
Block a user