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 test "simple replacement" do
ast = quote do: 1 + ___ ast = quote do: 1 + ___
mangled = Blanks.replace(ast, 37) assert Blanks.replace(ast, 37) == quote(do: 1 + 37)
assert {:+, [context: BlanksTest, import: Kernel], [1, 37]} == mangled
end end
test "Work with multiple different replacements" do test "Work with multiple different replacements" do
@@ -13,31 +12,16 @@ defmodule BlanksTest do
assert :ok == apply(SampleKoan, koan, [{:multiple, [3,4]}]) assert :ok == apply(SampleKoan, koan, [{:multiple, [3,4]}])
end 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 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 end
test "multiple arguments" do 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 end
test "counts simple blanks" do test "counts simple blanks" do
@@ -47,7 +31,7 @@ defmodule BlanksTest do
end end
test "counts multiple blanks" do test "counts multiple blanks" do
ast = [do: {:assert, [line: 5], [{:==, [line: 5], [{:___, [], __MODULE__}, {:___, __MODULE__}]}]}] ast = quote do: assert ___ == ___
assert Blanks.count(ast) == 2 assert Blanks.count(ast) == 2
end end

View File

@@ -6,7 +6,7 @@ defmodule ExecuteTest do
end end
test "stops at the first failing koan" do 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 file == 'test/support/sample_koan.ex'
assert line == 4 assert line == 4
end end

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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