Merge pull request #81 from iamvery/refactor-tests

Refactor blanks tests
This commit is contained in:
Uku Taht
2016-04-25 08:57:51 +01:00
14 changed files with 26 additions and 46 deletions

View File

@@ -4,8 +4,7 @@ defmodule BlanksTest do
test "simple replacement" do
ast = quote do: 1 + ___
mangled = Blanks.replace(ast, 37)
assert {:+, [context: BlanksTest, import: Kernel], [1, 37]} == mangled
assert Blanks.replace(ast, 37) == quote(do: 1 + 37)
end
test "Work with multiple different replacements" do
@@ -13,31 +12,16 @@ defmodule BlanksTest do
assert :ok == apply(SampleKoan, koan, [{:multiple, [3,4]}])
end
def complex_example do
[head | tail] = [1,2,3,4]
assert head == 1
assert tail == [2,3,4]
end
def foo(answer) do
if answer == :yes do
:bar
else
:batz
end
end
test "complex example" do
ast = [do: {:assert, [line: 5], [{:==, [line: 5], [true, {:___, [], __MODULE__}]}]}]
ast = quote do: assert true == ___
assert [do: {:assert, [line: 5], [{:==, [line: 5], [true, true]}]}] == Blanks.replace(ast, true)
assert Blanks.replace(ast, true) == quote(do: assert true == true)
end
test "multiple arguments" do
ast = [do: {:assert, [line: 5], [{:==, [line: 5], [{:___, [], __MODULE__}, {:___, [], __MODULE__}]}]}]
ast = quote do: assert ___ == ___
assert [do: {:assert, [line: 5], [{:==, [line: 5], [true, false]}]}] == Blanks.replace(ast, [true, false])
assert Blanks.replace(ast, [true, false]) == quote(do: assert true == false)
end
test "counts simple blanks" do
@@ -47,7 +31,7 @@ defmodule BlanksTest do
end
test "counts multiple blanks" do
ast = [do: {:assert, [line: 5], [{:==, [line: 5], [{:___, [], __MODULE__}, {:___, __MODULE__}]}]}]
ast = quote do: assert ___ == ___
assert Blanks.count(ast) == 2
end

View File

@@ -6,7 +6,7 @@ defmodule ExecuteTest do
end
test "stops at the first failing koan" do
{:failed, %{error: _, file: file, line: line}, SampleKoan, _name} = Execute.run_module(SampleKoan)
{:failed, %{file: file, line: line}, SampleKoan, _name} = Execute.run_module(SampleKoan)
assert file == 'test/support/sample_koan.ex'
assert line == 4
end

View File

@@ -1,6 +1,6 @@
defmodule EnumTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Enums" do
answers = [

View File

@@ -1,6 +1,6 @@
defmodule EqualitiesTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Equalities" do
answers = [

View File

@@ -1,6 +1,6 @@
defmodule FunctionsTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Functions" do
answers = [

View File

@@ -1,6 +1,6 @@
defmodule ListsTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Lists" do
answers = [1,

View File

@@ -1,6 +1,6 @@
defmodule MapsTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Maps" do
answers = [

View File

@@ -1,6 +1,6 @@
defmodule PatternsTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Pattern Matching" do
answers = [

View File

@@ -1,6 +1,6 @@
defmodule ProcessesTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Processes" do
answers = [

View File

@@ -1,6 +1,6 @@
defmodule StringTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Strings" do
answers = [

View File

@@ -1,6 +1,6 @@
defmodule StructsTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Structs" do
answers = [

View File

@@ -1,6 +1,6 @@
defmodule TasksTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Tasks" do
answers = [

View File

@@ -1,8 +1,8 @@
defmodule TupleTests do
use ExUnit.Case
use TestHarness
import TestHarness
test "Tuples" do
test "Tuples" do
answers = [
{:a, 1, "hi"},
3,

View File

@@ -1,17 +1,13 @@
ExUnit.start()
defmodule TestHarness do
defmacro __using__(_) do
quote do
def test_all(module, answers) do
module.all_koans
|> Enum.zip(answers)
|> run_all(module)
end
def test_all(module, answers) do
module.all_koans
|> Enum.zip(answers)
|> run_all(module)
end
def run_all(pairs, module) do
Enum.map(pairs, fn ({koan, answer}) -> Execute.run_koan(module, koan, [answer]) end)
end
end
def run_all(pairs, module) do
Enum.map(pairs, fn ({koan, answer}) -> Execute.run_koan(module, koan, [answer]) end)
end
end