From cc3232a31f322fbb4d99bec5f3341887e0819b4b Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Tue, 24 May 2016 17:29:18 +0100 Subject: [PATCH 01/10] Added very basic koans for integers --- lib/koans/16_integers.ex | 37 +++++++++++++++++++++++++++++++ lib/runner.ex | 1 + test/koans/integer_koans_test.exs | 17 ++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 lib/koans/16_integers.ex create mode 100644 test/koans/integer_koans_test.exs diff --git a/lib/koans/16_integers.ex b/lib/koans/16_integers.ex new file mode 100644 index 0000000..745dbfd --- /dev/null +++ b/lib/koans/16_integers.ex @@ -0,0 +1,37 @@ +defmodule Integers do + require Integer + use Koans + + @intro "Integers" + + koan "Are you odd?" do + assert Integer.is_odd(3) == ___ + end + + koan "Actually you might be even" do + assert Integer.is_even(4) == ___ + end + + koan "Let's grab the individual digits in a list" do + individual_digits = Integer.digits(58127) + assert individual_digits == ___ + end + + koan "Oh no! I need it back together" do + number = Integer.undigits([1, 2, 3, 4]) + + assert number == ___ + end + + koan "I think I need my number as a char" do + char_digit = Integer.to_char_list(7) + + assert char_digit == ___ + end + + koan "Actually I want my number as a string" do + string_digit = Integer.to_string(1234) + + assert string_digit == ___ + end +end \ No newline at end of file diff --git a/lib/runner.ex b/lib/runner.ex index 401db50..a174869 100644 --- a/lib/runner.ex +++ b/lib/runner.ex @@ -15,6 +15,7 @@ defmodule Runner do Processes, Tasks, Agents, + Integers, ] def koan?(koan), do: Enum.member?(@modules, koan) diff --git a/test/koans/integer_koans_test.exs b/test/koans/integer_koans_test.exs new file mode 100644 index 0000000..2ca196a --- /dev/null +++ b/test/koans/integer_koans_test.exs @@ -0,0 +1,17 @@ +defmodule IntegerTests do + use ExUnit.Case + import TestHarness + + test "Integers" do + answers = [ + true, + false, + [5, 8, 1, 2, 7], + 1234, + '7', + "1234", + ] + + test_all(Integers, answers) + end +end From 6e9dc8b32861ff1c64b94dc6c670a508f48e6a6c Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Tue, 24 May 2016 17:31:53 +0100 Subject: [PATCH 02/10] fix formatting --- lib/runner.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runner.ex b/lib/runner.ex index a174869..ab59f73 100644 --- a/lib/runner.ex +++ b/lib/runner.ex @@ -15,7 +15,7 @@ defmodule Runner do Processes, Tasks, Agents, - Integers, + Integers, ] def koan?(koan), do: Enum.member?(@modules, koan) From 1f9d6a07cc4a690b879c1460d8a4ecf0182ea16f Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Tue, 24 May 2016 18:00:16 +0100 Subject: [PATCH 03/10] fixing failing test --- test/koans/integer_koans_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/koans/integer_koans_test.exs b/test/koans/integer_koans_test.exs index 2ca196a..cf622db 100644 --- a/test/koans/integer_koans_test.exs +++ b/test/koans/integer_koans_test.exs @@ -5,7 +5,7 @@ defmodule IntegerTests do test "Integers" do answers = [ true, - false, + true, [5, 8, 1, 2, 7], 1234, '7', From 9baecdf031171ddd4cb6bcab7433ab365f74c105 Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Tue, 24 May 2016 19:43:00 +0100 Subject: [PATCH 04/10] Add a test for hexidecimal parsing --- lib/koans/16_integers.ex | 4 ++++ test/koans/integer_koans_test.exs | 1 + 2 files changed, 5 insertions(+) diff --git a/lib/koans/16_integers.ex b/lib/koans/16_integers.ex index 745dbfd..b8adad7 100644 --- a/lib/koans/16_integers.ex +++ b/lib/koans/16_integers.ex @@ -34,4 +34,8 @@ defmodule Integers do assert string_digit == ___ end + + koan "The meaning of life in hexidecimal is 2A!" do + assert Integer.parse("2A", 16) == {___, ""} + end end \ No newline at end of file diff --git a/test/koans/integer_koans_test.exs b/test/koans/integer_koans_test.exs index cf622db..18815e9 100644 --- a/test/koans/integer_koans_test.exs +++ b/test/koans/integer_koans_test.exs @@ -10,6 +10,7 @@ defmodule IntegerTests do 1234, '7', "1234", + 42 ] test_all(Integers, answers) From a57ba3da2de95fdaedc7b648fd47cb3d81824647 Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Wed, 25 May 2016 12:06:52 +0100 Subject: [PATCH 05/10] Add koans for floats, rename to numbers koans, reposition on the list --- lib/koans/04_numbers.ex | 72 +++++++++++++++++++ lib/koans/{04_atoms.ex => 05_atoms.ex} | 0 lib/koans/{05_tuples.ex => 06_tuples.ex} | 0 lib/koans/{06_lists.ex => 07_lists.ex} | 0 ...7_keyword_lists.ex => 08_keyword_lists.ex} | 0 lib/koans/{08_maps.ex => 09_maps.ex} | 0 lib/koans/{09_structs.ex => 10_structs.ex} | 0 ...ern_matching.ex => 11_pattern_matching.ex} | 0 .../{11_functions.ex => 12_functions.ex} | 0 lib/koans/{12_enums.ex => 13_enums.ex} | 0 .../{13_processes.ex => 14_processes.ex} | 0 lib/koans/{14_tasks.ex => 15_tasks.ex} | 0 lib/koans/{15_agents.ex => 16_agents.ex} | 0 lib/koans/16_integers.ex | 41 ----------- test/koans/integer_koans_test.exs | 18 ----- test/koans/numbers_koans_test.exs | 25 +++++++ 16 files changed, 97 insertions(+), 59 deletions(-) create mode 100644 lib/koans/04_numbers.ex rename lib/koans/{04_atoms.ex => 05_atoms.ex} (100%) rename lib/koans/{05_tuples.ex => 06_tuples.ex} (100%) rename lib/koans/{06_lists.ex => 07_lists.ex} (100%) rename lib/koans/{07_keyword_lists.ex => 08_keyword_lists.ex} (100%) rename lib/koans/{08_maps.ex => 09_maps.ex} (100%) rename lib/koans/{09_structs.ex => 10_structs.ex} (100%) rename lib/koans/{10_pattern_matching.ex => 11_pattern_matching.ex} (100%) rename lib/koans/{11_functions.ex => 12_functions.ex} (100%) rename lib/koans/{12_enums.ex => 13_enums.ex} (100%) rename lib/koans/{13_processes.ex => 14_processes.ex} (100%) rename lib/koans/{14_tasks.ex => 15_tasks.ex} (100%) rename lib/koans/{15_agents.ex => 16_agents.ex} (100%) delete mode 100644 lib/koans/16_integers.ex delete mode 100644 test/koans/integer_koans_test.exs create mode 100644 test/koans/numbers_koans_test.exs diff --git a/lib/koans/04_numbers.ex b/lib/koans/04_numbers.ex new file mode 100644 index 0000000..d1a1b46 --- /dev/null +++ b/lib/koans/04_numbers.ex @@ -0,0 +1,72 @@ +defmodule Numbers do + require Integer + use Koans + + @intro "Numbers" + + koan "Are you odd?" do + assert Integer.is_odd(3) == ___ + end + + koan "Actually you might be even" do + assert Integer.is_even(4) == ___ + end + + koan "Let's grab the individual digits in a list" do + individual_digits = Integer.digits(58127) + assert individual_digits == ___ + end + + koan "Oh no! I need it back together" do + number = Integer.undigits([1, 2, 3, 4]) + + assert number == ___ + end + + koan "I think I need my number as a char" do + char_digit = Integer.to_char_list(7) + + assert char_digit == ___ + end + + koan "Actually I want my number as a string" do + string_digit = Integer.to_string(1234) + + assert string_digit == ___ + end + + koan "The meaning of life in hexidecimal is 2A!" do + assert Integer.parse("2A", 16) == {___, ""} + end + + koan "I don't want this decimal point, let's round up" do + assert Float.ceil(34.25) == ___ + end + + koan "OK, I only want it to 1 decimal place" do + assert Float.ceil(34.25, 1) == ___ + end + + koan "Rounding down is what I need" do + assert Float.floor(99.99) == ___ + end + + koan "Rounding down to 2 decimal places" do + assert Float.floor(12.345, 2) == ___ + end + + koan "Just want to parse to a float" do + assert Float.parse("34.5") == {___, ""} + end + + koan "Hmm, I want to parse this but it has some strings" do + assert Float.parse("1 million dollars") == {___, " million dollars"} + end + + koan "Round the number up or down for me" do + assert Float.round(5.5) == ___ + assert Float.round(5.4) == ___ + assert Float.round(8.94, 1) == ___ + assert Float.round(-5.5674, 3) == ___ + end +end \ No newline at end of file diff --git a/lib/koans/04_atoms.ex b/lib/koans/05_atoms.ex similarity index 100% rename from lib/koans/04_atoms.ex rename to lib/koans/05_atoms.ex diff --git a/lib/koans/05_tuples.ex b/lib/koans/06_tuples.ex similarity index 100% rename from lib/koans/05_tuples.ex rename to lib/koans/06_tuples.ex diff --git a/lib/koans/06_lists.ex b/lib/koans/07_lists.ex similarity index 100% rename from lib/koans/06_lists.ex rename to lib/koans/07_lists.ex diff --git a/lib/koans/07_keyword_lists.ex b/lib/koans/08_keyword_lists.ex similarity index 100% rename from lib/koans/07_keyword_lists.ex rename to lib/koans/08_keyword_lists.ex diff --git a/lib/koans/08_maps.ex b/lib/koans/09_maps.ex similarity index 100% rename from lib/koans/08_maps.ex rename to lib/koans/09_maps.ex diff --git a/lib/koans/09_structs.ex b/lib/koans/10_structs.ex similarity index 100% rename from lib/koans/09_structs.ex rename to lib/koans/10_structs.ex diff --git a/lib/koans/10_pattern_matching.ex b/lib/koans/11_pattern_matching.ex similarity index 100% rename from lib/koans/10_pattern_matching.ex rename to lib/koans/11_pattern_matching.ex diff --git a/lib/koans/11_functions.ex b/lib/koans/12_functions.ex similarity index 100% rename from lib/koans/11_functions.ex rename to lib/koans/12_functions.ex diff --git a/lib/koans/12_enums.ex b/lib/koans/13_enums.ex similarity index 100% rename from lib/koans/12_enums.ex rename to lib/koans/13_enums.ex diff --git a/lib/koans/13_processes.ex b/lib/koans/14_processes.ex similarity index 100% rename from lib/koans/13_processes.ex rename to lib/koans/14_processes.ex diff --git a/lib/koans/14_tasks.ex b/lib/koans/15_tasks.ex similarity index 100% rename from lib/koans/14_tasks.ex rename to lib/koans/15_tasks.ex diff --git a/lib/koans/15_agents.ex b/lib/koans/16_agents.ex similarity index 100% rename from lib/koans/15_agents.ex rename to lib/koans/16_agents.ex diff --git a/lib/koans/16_integers.ex b/lib/koans/16_integers.ex deleted file mode 100644 index b8adad7..0000000 --- a/lib/koans/16_integers.ex +++ /dev/null @@ -1,41 +0,0 @@ -defmodule Integers do - require Integer - use Koans - - @intro "Integers" - - koan "Are you odd?" do - assert Integer.is_odd(3) == ___ - end - - koan "Actually you might be even" do - assert Integer.is_even(4) == ___ - end - - koan "Let's grab the individual digits in a list" do - individual_digits = Integer.digits(58127) - assert individual_digits == ___ - end - - koan "Oh no! I need it back together" do - number = Integer.undigits([1, 2, 3, 4]) - - assert number == ___ - end - - koan "I think I need my number as a char" do - char_digit = Integer.to_char_list(7) - - assert char_digit == ___ - end - - koan "Actually I want my number as a string" do - string_digit = Integer.to_string(1234) - - assert string_digit == ___ - end - - koan "The meaning of life in hexidecimal is 2A!" do - assert Integer.parse("2A", 16) == {___, ""} - end -end \ No newline at end of file diff --git a/test/koans/integer_koans_test.exs b/test/koans/integer_koans_test.exs deleted file mode 100644 index 18815e9..0000000 --- a/test/koans/integer_koans_test.exs +++ /dev/null @@ -1,18 +0,0 @@ -defmodule IntegerTests do - use ExUnit.Case - import TestHarness - - test "Integers" do - answers = [ - true, - true, - [5, 8, 1, 2, 7], - 1234, - '7', - "1234", - 42 - ] - - test_all(Integers, answers) - end -end diff --git a/test/koans/numbers_koans_test.exs b/test/koans/numbers_koans_test.exs new file mode 100644 index 0000000..da7445c --- /dev/null +++ b/test/koans/numbers_koans_test.exs @@ -0,0 +1,25 @@ +defmodule NumbersTests do + use ExUnit.Case + import TestHarness + + test "Numbers" do + answers = [ + true, + true, + [5, 8, 1, 2, 7], + 1234, + '7', + "1234", + 42, + 35.0, + 34.3, + 99.0, + 12.34, + {34.5, ""}, + 1.0, + {:multiple, [6.0, 5.0, 8.94, -5.567]}, + ] + + test_all(Numbers, answers) + end +end From 14858cd497b8a0d99e13061fb7425a393d78a8c0 Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Wed, 25 May 2016 12:07:40 +0100 Subject: [PATCH 06/10] reposition numbers koans in the runner.ex file --- lib/runner.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runner.ex b/lib/runner.ex index ab59f73..046ed9e 100644 --- a/lib/runner.ex +++ b/lib/runner.ex @@ -3,6 +3,7 @@ defmodule Runner do Equalities, Strings, Sigils, + Numbers, Atoms, Tuples, Lists, @@ -15,7 +16,6 @@ defmodule Runner do Processes, Tasks, Agents, - Integers, ] def koan?(koan), do: Enum.member?(@modules, koan) From 57d1b5399a0059fe4b4312a050d45273d74b2fb2 Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Wed, 25 May 2016 12:09:36 +0100 Subject: [PATCH 07/10] fix failing test --- test/koans/numbers_koans_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/koans/numbers_koans_test.exs b/test/koans/numbers_koans_test.exs index da7445c..4d99440 100644 --- a/test/koans/numbers_koans_test.exs +++ b/test/koans/numbers_koans_test.exs @@ -16,7 +16,7 @@ defmodule NumbersTests do 99.0, 12.34, {34.5, ""}, - 1.0, + {1.0, " million dollars"}, {:multiple, [6.0, 5.0, 8.94, -5.567]}, ] From 40174320f910bdb5e9428a41e8cf79b2c9fc4c17 Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Wed, 25 May 2016 13:45:10 +0100 Subject: [PATCH 08/10] fix failing tests - for real this time :D --- test/koans/numbers_koans_test.exs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/koans/numbers_koans_test.exs b/test/koans/numbers_koans_test.exs index 4d99440..ac1bdb7 100644 --- a/test/koans/numbers_koans_test.exs +++ b/test/koans/numbers_koans_test.exs @@ -15,9 +15,9 @@ defmodule NumbersTests do 34.3, 99.0, 12.34, - {34.5, ""}, - {1.0, " million dollars"}, - {:multiple, [6.0, 5.0, 8.94, -5.567]}, + 34.5, + 1.0, + {:multiple, [6.0, 5.0, 8.9, -5.567]}, ] test_all(Numbers, answers) From 458d18494ef365bfd9102a32444e43892392fd2a Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Wed, 25 May 2016 23:11:56 +0100 Subject: [PATCH 09/10] Added some koans for the Range module --- lib/koans/04_numbers.ex | 21 +++++++++++++++++++++ test/koans/numbers_koans_test.exs | 3 +++ 2 files changed, 24 insertions(+) diff --git a/lib/koans/04_numbers.ex b/lib/koans/04_numbers.ex index d1a1b46..3ce1f0a 100644 --- a/lib/koans/04_numbers.ex +++ b/lib/koans/04_numbers.ex @@ -69,4 +69,25 @@ defmodule Numbers do assert Float.round(8.94, 1) == ___ assert Float.round(-5.5674, 3) == ___ end + + koan "I want the first and last in the range" do + first..last = Range.new(1, 10) + + assert first == ___ + assert last == ___ + end + + koan "Does my number exist in the range?" do + range = Range.new(1, 10) + + assert 4 in range == ___ + assert 10 in range == ___ + assert 0 in range == ___ + end + + koan "Is this a range?" do + assert Range.range?(1..10) == ___ + assert Range.range?(0) == ___ + end + end \ No newline at end of file diff --git a/test/koans/numbers_koans_test.exs b/test/koans/numbers_koans_test.exs index ac1bdb7..f60690e 100644 --- a/test/koans/numbers_koans_test.exs +++ b/test/koans/numbers_koans_test.exs @@ -18,6 +18,9 @@ defmodule NumbersTests do 34.5, 1.0, {:multiple, [6.0, 5.0, 8.9, -5.567]}, + {:multiple, [1, 10]}, + {:multiple, [true, true, false]}, + {:multiple, [true, false]}, ] test_all(Numbers, answers) From ba673557cfc46808b1ffb621d40add38c7962424 Mon Sep 17 00:00:00 2001 From: Mahmut Surekci Date: Thu, 26 May 2016 10:33:46 +0100 Subject: [PATCH 10/10] Remove blank line and intro title changed --- lib/koans/04_numbers.ex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/koans/04_numbers.ex b/lib/koans/04_numbers.ex index 3ce1f0a..89d4bb9 100644 --- a/lib/koans/04_numbers.ex +++ b/lib/koans/04_numbers.ex @@ -2,7 +2,7 @@ defmodule Numbers do require Integer use Koans - @intro "Numbers" + @intro "Why is the number six so scared? Because seven eight nine!\nWe should get to know numbers a bit more!" koan "Are you odd?" do assert Integer.is_odd(3) == ___ @@ -89,5 +89,4 @@ defmodule Numbers do assert Range.range?(1..10) == ___ assert Range.range?(0) == ___ end - end \ No newline at end of file