Merge pull request #81 from iamvery/refactor-tests
Refactor blanks tests
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -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
|
|
||||||
|
|||||||
Reference in New Issue
Block a user