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
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule EnumTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Enums" do
|
||||
answers = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule EqualitiesTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Equalities" do
|
||||
answers = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule FunctionsTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Functions" do
|
||||
answers = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule ListsTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Lists" do
|
||||
answers = [1,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule MapsTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Maps" do
|
||||
answers = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule PatternsTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Pattern Matching" do
|
||||
answers = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule ProcessesTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Processes" do
|
||||
answers = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule StringTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Strings" do
|
||||
answers = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule StructsTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Structs" do
|
||||
answers = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
defmodule TasksTests do
|
||||
use ExUnit.Case
|
||||
use TestHarness
|
||||
import TestHarness
|
||||
|
||||
test "Tasks" do
|
||||
answers = [
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user