From 96b473a9948c8253c292279a79e6c97921a51f69 Mon Sep 17 00:00:00 2001 From: Felipe Sere Date: Mon, 21 Mar 2016 19:34:10 +0000 Subject: [PATCH] Improve punctuation in PatternMatching koans --- lib/koans/08_pattern_matching.ex | 43 +++++++++++--------------------- test/koans_harness_test.exs | 7 ++---- 2 files changed, 17 insertions(+), 33 deletions(-) diff --git a/lib/koans/08_pattern_matching.ex b/lib/koans/08_pattern_matching.ex index fe90162..ad7c9ed 100644 --- a/lib/koans/08_pattern_matching.ex +++ b/lib/koans/08_pattern_matching.ex @@ -1,84 +1,71 @@ defmodule PatternMatching do use Koans - koan "one matches one" do + koan "One matches one" do assert match?(1, :__) end - koan "a pattern can change" do + koan "A pattern can change" do a = 1 assert a = :__ end - # TODO not sure about this koan? - koan "a pattern can also be strict" do + koan "A pattern can also be strict" do a = 1 assert ^a = :__ end - koan "patterns can be used to pull things apart" do - [head | _tail] = [1,2,3,4] + koan "Patterns can be used to pull things apart" do + [head | tail] = [1,2,3,4] assert head == :__ - end - - koan "...whichever side you actually need" do - [_head | tail] = [1,2,3,4] - assert tail == :__ end - - koan "and then put them back together" do + koan "And then put them back together" do head = 1 tail = [2,3,4] assert :__ == [head | tail] end - koan "Some values can be irrelevant" do + koan "Some values can be ignored" do [_first, _second, third, _fourth] = [1,2,3,4] assert third == :__ end - koan "strings come apart just a easily" do + koan "Strings come apart just a easily" do "Shopping list: " <> items = "Shopping list: eggs, milk" assert items == :__ end - koan "patterns show what you really care about" do + koan "Patterns show what you really care about" do %{make: make} = %{type: "car", year: 2016, make: "Honda", color: "black"} assert make == :__ end - koan "the pattern can make assertions about what it expects" do - assert match?([1, _, _], :__) + koan "The pattern can make assertions about what it expects" do + assert match?([1, _second, _third], :__) end def make_noise(%{type: "cat"}), do: "Meow" def make_noise(%{type: "dog"}), do: "Woof" def make_noise(_anything), do: "Eh?" - koan "functions can declare what kind of arguments they accept" do + koan "Functions can declare what kind of arguments they accept" do dog = %{type: "dog", legs: 4, age: 9, color: "brown"} + cat = %{type: "cat", legs: 4, age: 3, color: "grey"} + snake = %{type: "snake", legs: 0, age: 20, color: "black"} assert make_noise(dog) == :__ - end - - koan "...and for cats..." do - cat = %{type: "cat", legs: 4, age: 3, color: "grey"} assert make_noise(cat) == :__ - end - - koan "...and for snakes..." do - snake = %{type: "snake", legs: 0, age: 20, color: "black"} assert make_noise(snake) == :__ end - koan "errors are shaped differently than sucessful results" do + koan "Errors are shaped differently than sucessful results" do result = case Map.fetch(%{}, :obviously_not_a_key) do :error -> "not present" _ -> flunk("I should not happen") diff --git a/test/koans_harness_test.exs b/test/koans_harness_test.exs index 5aa0a2f..411b25a 100644 --- a/test/koans_harness_test.exs +++ b/test/koans_harness_test.exs @@ -124,16 +124,13 @@ defmodule KoansHarnessTest do 1, 2, 1, - 1, - [2,3,4], + {:multiple, [1, [2,3,4]]}, [1,2,3,4], 3, "eggs, milk", "Honda", [1,2,3], - "Woof", - "Meow", - "Eh?", + {:multiple, ["Woof", "Meow", "Eh?",]}, "not present" ]