Improve readability of test harness
This commit is contained in:
@@ -15,11 +15,9 @@ defmodule ASTMangler do
|
|||||||
|> Enum.find_index(fn(x) -> x == :__ end)
|
|> Enum.find_index(fn(x) -> x == :__ end)
|
||||||
|> replace(args, b)
|
|> replace(args, b)
|
||||||
end
|
end
|
||||||
|
|
||||||
def replace(nil, ast, b) when is_list(ast) do
|
def replace(nil, ast, b) when is_list(ast) do
|
||||||
Enum.map(ast, fn(element) -> expand(element, b) end)
|
Enum.map(ast, fn(element) -> expand(element, b) end)
|
||||||
end
|
end
|
||||||
|
|
||||||
def replace(index, list, b) when is_integer(index) do
|
def replace(index, list, b) when is_integer(index) do
|
||||||
List.update_at(list, index, fn(_)-> b end)
|
List.update_at(list, index, fn(_)-> b end)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,14 +2,29 @@ defmodule KoansHarnessTest do
|
|||||||
use ExUnit.Case
|
use ExUnit.Case
|
||||||
|
|
||||||
test "Equalities" do
|
test "Equalities" do
|
||||||
answers = [true, 1, 2, 1, :something]
|
answers = [true,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
:something]
|
||||||
|
|
||||||
assert all_pass?(Equalities, answers) == [:passed, :passed, :passed, :passed, :passed]
|
assert test_all(Equalities, answers) == :all_passed
|
||||||
end
|
end
|
||||||
|
|
||||||
def all_pass?(module, answers) do
|
def test_all(module, answers) do
|
||||||
module.all_koans
|
module.all_koans
|
||||||
|> Enum.zip(answers)
|
|> Enum.zip(answers)
|
||||||
|> Enum.map(fn({koan, answer}) -> Runner.run_koan(module, koan, [answer]) end)
|
|> run_all(module)
|
||||||
|
|> passed?
|
||||||
|
|> results
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def run_all(pairs, module) do
|
||||||
|
Enum.map(pairs, fn ({koan, answer}) -> Runner.run_koan(module, koan, [answer]) 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