Use koan assertions to fail the tests

This commit is contained in:
Uku Taht
2016-03-12 16:11:32 +02:00
parent 0eb715d4ca
commit 031258e086
2 changed files with 4 additions and 15 deletions

View File

@@ -14,12 +14,8 @@ defmodule Koans do
end end
def unquote(compiled_name)(answer) do def unquote(compiled_name)(answer) do
try do unquote(mangled_body)
unquote(mangled_body) :ok
:ok
rescue
e in _ -> e
end
end end
end end
end end

View File

@@ -8,7 +8,7 @@ defmodule KoansHarnessTest do
1, 1,
:something] :something]
assert test_all(Equalities, answers) == :all_passed test_all(Equalities, answers)
end end
test "Lists" do test "Lists" do
@@ -31,23 +31,16 @@ defmodule KoansHarnessTest do
[{1, 3, 5}, {2, 4, 6}] [{1, 3, 5}, {2, 4, 6}]
] ]
assert test_all(Lists, answers) == :all_passed test_all(Lists, answers)
end end
def test_all(module, answers) do def test_all(module, answers) do
module.all_koans module.all_koans
|> Enum.zip(answers) |> Enum.zip(answers)
|> run_all(module) |> run_all(module)
|> passed?
|> results
end end
def run_all(pairs, module) do def run_all(pairs, module) do
Enum.map(pairs, fn ({koan, answer}) -> Runner.run_koan(module, koan, [answer]) end) Enum.map(pairs, fn ({koan, answer}) -> Runner.run_koan(module, koan, [answer]) end)
end end
def passed?(answers), do: {Enum.all?(answers, fn(element) -> element == :passed end), answers}
def results({true, _}), do: :all_passed
def results({false, answers}), do: answers
end end