diff --git a/lib/koans/03_sigils.ex b/lib/koans/03_sigils.ex new file mode 100644 index 0000000..deef195 --- /dev/null +++ b/lib/koans/03_sigils.ex @@ -0,0 +1,39 @@ +defmodule Sigils do + use Koans + + @intro "Sigils" + + koan "The ~s sigil is a different way of expressing string literals" do + assert ~s{This is a string} == ___ + end + + koan "Sigils are useful to avoid escaping quotes in strings" do + assert "\"Welcome to the jungle\", they said." == ___ + end + + koan "Sigils can use different delimiters" do + matches? = ~s{This works!} == ~s[This works!] + assert matches? == ___ + end + + koan "The lowercase ~s sigil supports string interpolation" do + assert ~s[1 + 1 = #{1+1}] == ___ + end + + koan "The ~S sigil is similar to ~s but doesn't do interpolation" do + assert ~S[1 + 1 = #{1+1}] == ___ + end + + koan "The ~w sigil creates word lists" do + assert ~w(Hello world) == ___ + end + + koan "The ~w sigil also allows interpolation" do + assert ~w(Hello 1#{1+1}3) == ___ + end + + koan "The ~W sigil behaves to ~w as ~S behaves to ~s" do + assert ~W(Hello #{1+1}) == ___ + end +end + diff --git a/lib/koans/03_atoms.ex b/lib/koans/04_atoms.ex similarity index 100% rename from lib/koans/03_atoms.ex rename to lib/koans/04_atoms.ex diff --git a/lib/koans/04_tuples.ex b/lib/koans/05_tuples.ex similarity index 100% rename from lib/koans/04_tuples.ex rename to lib/koans/05_tuples.ex diff --git a/lib/koans/05_lists.ex b/lib/koans/06_lists.ex similarity index 100% rename from lib/koans/05_lists.ex rename to lib/koans/06_lists.ex diff --git a/lib/koans/06_keyword_lists.ex b/lib/koans/07_keyword_lists.ex similarity index 100% rename from lib/koans/06_keyword_lists.ex rename to lib/koans/07_keyword_lists.ex diff --git a/lib/koans/07_maps.ex b/lib/koans/08_maps.ex similarity index 100% rename from lib/koans/07_maps.ex rename to lib/koans/08_maps.ex diff --git a/lib/koans/08_structs.ex b/lib/koans/09_structs.ex similarity index 100% rename from lib/koans/08_structs.ex rename to lib/koans/09_structs.ex diff --git a/lib/koans/09_pattern_matching.ex b/lib/koans/10_pattern_matching.ex similarity index 100% rename from lib/koans/09_pattern_matching.ex rename to lib/koans/10_pattern_matching.ex diff --git a/lib/koans/10_functions.ex b/lib/koans/11_functions.ex similarity index 100% rename from lib/koans/10_functions.ex rename to lib/koans/11_functions.ex diff --git a/lib/koans/11_enums.ex b/lib/koans/12_enums.ex similarity index 100% rename from lib/koans/11_enums.ex rename to lib/koans/12_enums.ex diff --git a/lib/koans/12_processes.ex b/lib/koans/13_processes.ex similarity index 100% rename from lib/koans/12_processes.ex rename to lib/koans/13_processes.ex diff --git a/lib/koans/13_tasks.ex b/lib/koans/14_tasks.ex similarity index 100% rename from lib/koans/13_tasks.ex rename to lib/koans/14_tasks.ex diff --git a/lib/koans/14_agents.ex b/lib/koans/15_agents.ex similarity index 100% rename from lib/koans/14_agents.ex rename to lib/koans/15_agents.ex diff --git a/test/koans/sigils_koans_test.exs b/test/koans/sigils_koans_test.exs new file mode 100644 index 0000000..096fff2 --- /dev/null +++ b/test/koans/sigils_koans_test.exs @@ -0,0 +1,19 @@ +defmodule SigilsTests do + use ExUnit.Case + import TestHarness + + test "Sigils" do + answers = [ + "This is a string", + ~S("Welcome to the jungle", they said.), + true, + "1 + 1 = 2", + ~S(1 + 1 = #{1+1}), + ["Hello", "world"], + ["Hello", "123"], + ["Hello", ~S(#{1+1})], + ] + + test_all(Sigils, answers) + end +end