Use koan assertions to fail the tests
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user