diff --git a/exercises/practice/dominoes/.meta/test_template.erb b/exercises/practice/dominoes/.meta/test_template.erb new file mode 100644 index 0000000000..a7e57e72db --- /dev/null +++ b/exercises/practice/dominoes/.meta/test_template.erb @@ -0,0 +1,12 @@ +require 'minitest/autorun' +require_relative 'dominoes' + +class DominoesTest < Minitest::Test +<% json["cases"].each do |cases| %> + def test_<%= underscore(cases["description"]) %> + <%= skip? %> + dominoes = <%= cases["input"]["dominoes"] %> + <%= cases["expected"] ? "assert" : "refute" %> Dominoes.chain?(dominoes) + end + <% end %> +end diff --git a/exercises/practice/dominoes/dominoes_test.rb b/exercises/practice/dominoes/dominoes_test.rb index 6f994466a8..61bd05ef35 100644 --- a/exercises/practice/dominoes/dominoes_test.rb +++ b/exercises/practice/dominoes/dominoes_test.rb @@ -38,19 +38,19 @@ def test_cant_be_chained refute Dominoes.chain?(dominoes) end - def test_disconnected_simple + def test_disconnected___simple skip dominoes = [[1, 1], [2, 2]] refute Dominoes.chain?(dominoes) end - def test_disconnected_double_loop + def test_disconnected___double_loop skip dominoes = [[1, 2], [2, 1], [3, 4], [4, 3]] refute Dominoes.chain?(dominoes) end - def test_disconnected_single_isolated + def test_disconnected___single_isolated skip dominoes = [[1, 2], [2, 3], [3, 1], [4, 4]] refute Dominoes.chain?(dominoes) diff --git a/exercises/practice/eliuds-eggs/.meta/test_template.erb b/exercises/practice/eliuds-eggs/.meta/test_template.erb new file mode 100644 index 0000000000..99186c907c --- /dev/null +++ b/exercises/practice/eliuds-eggs/.meta/test_template.erb @@ -0,0 +1,11 @@ +require 'minitest/autorun' +require_relative 'eliuds_eggs' + +class EliudsEggsTest < Minitest::Test +<% json["cases"].each do |cases| %> + def test_<%= underscore(cases["description"]) %> + <%= skip? %> + assert_equal <%= cases["expected"] %>, EliudsEggs.egg_count(<%= cases["input"]["number"] %>) + end + <% end %> +end diff --git a/exercises/practice/etl/.meta/test_template.erb b/exercises/practice/etl/.meta/test_template.erb new file mode 100644 index 0000000000..91eaefbbfc --- /dev/null +++ b/exercises/practice/etl/.meta/test_template.erb @@ -0,0 +1,21 @@ +require 'minitest/autorun' +require_relative 'etl' + +class EtlTest < Minitest::Test +<% json["cases"].each do |cases| %> + def test_<%= underscore(cases["description"]) %> + <%= skip? %> + old = { + <% cases["input"]["legacy"].each do |key, value| -%> + <%= key %> => <%= value %>, + <%- end -%> + } + expected = { + <% cases["expected"].each do |key, value| -%> + '<%= key %>' => <%= value %>, + <%- end -%> + } + assert_equal expected, ETL.transform(old) + end + <% end %> +end diff --git a/exercises/practice/etl/etl_test.rb b/exercises/practice/etl/etl_test.rb index 09a8c1a91b..c101d16bc8 100644 --- a/exercises/practice/etl/etl_test.rb +++ b/exercises/practice/etl/etl_test.rb @@ -2,7 +2,7 @@ require_relative 'etl' class EtlTest < Minitest::Test - def test_a_single_letter + def test_single_letter # skip old = { 1 => ["A"] diff --git a/exercises/practice/flatten-array/.meta/test_template.erb b/exercises/practice/flatten-array/.meta/test_template.erb new file mode 100644 index 0000000000..3ceef0c430 --- /dev/null +++ b/exercises/practice/flatten-array/.meta/test_template.erb @@ -0,0 +1,12 @@ +require 'minitest/autorun' +require_relative 'flatten_array' + +class FlattenArrayTest < Minitest::Test +<% json["cases"].each do |cases| %> + def test_<%= underscore(cases["description"]) %> + <%= skip? %> + flat_array = FlattenArray.flatten(<%= cases["input"]["array"] %>) + assert_equal <%= cases["expected"] %>, flat_array + end + <% end %> +end diff --git a/exercises/practice/flatten-array/.meta/tests.toml b/exercises/practice/flatten-array/.meta/tests.toml index 1c0c79136a..309aae8404 100644 --- a/exercises/practice/flatten-array/.meta/tests.toml +++ b/exercises/practice/flatten-array/.meta/tests.toml @@ -35,12 +35,30 @@ include = false description = "consecutive null values at the front of the list are omitted from the final result" include = false +[bc72da10-5f55-4ada-baf3-50e4da02ec8e] +description = "consecutive null values at the front of the array are omitted from the final result" +reimplements = "c6cf26de-8ccd-4410-84bd-b9efd88fd2bc" + [382c5242-587e-4577-b8ce-a5fb51e385a1] description = "consecutive null values in the middle of the list are omitted from the final result" include = false +[6991836d-0d9b-4703-80a0-3f1f23eb5981] +description = "consecutive null values in the middle of the array are omitted from the final result" +reimplements = "382c5242-587e-4577-b8ce-a5fb51e385a1" + [ef1d4790-1b1e-4939-a179-51ace0829dbd] description = "6 level nest list with null values" +include = false + +[dc90a09c-5376-449c-a7b3-c2d20d540069] +description = "6 level nested array with null values" +reimplements = "ef1d4790-1b1e-4939-a179-51ace0829dbd" [85721643-705a-4150-93ab-7ae398e2942d] description = "all values in nested list are null" +include = false + +[51f5d9af-8f7f-4fb5-a156-69e8282cb275] +description = "all values in nested array are null" +reimplements = "85721643-705a-4150-93ab-7ae398e2942d" diff --git a/exercises/practice/flatten-array/flatten_array_test.rb b/exercises/practice/flatten-array/flatten_array_test.rb index 46fb7592f4..4d27e5fe2e 100644 --- a/exercises/practice/flatten-array/flatten_array_test.rb +++ b/exercises/practice/flatten-array/flatten_array_test.rb @@ -4,7 +4,8 @@ class FlattenArrayTest < Minitest::Test def test_empty # skip - assert_empty FlattenArray.flatten([]) + flat_array = FlattenArray.flatten([]) + assert_empty flat_array end def test_no_nesting @@ -15,7 +16,8 @@ def test_no_nesting def test_flattens_a_nested_array skip - assert_empty FlattenArray.flatten([[[]]]) + flat_array = FlattenArray.flatten([[[]]]) + assert_empty flat_array end def test_flattens_array_with_just_integers_present @@ -36,14 +38,27 @@ def test_6_level_nesting assert_equal [1, 2, 3, 4, 5, 6, 7, 8], flat_array end - def test_6_level_nest_list_with_null_values + def test_consecutive_null_values_at_the_front_of_the_array_are_omitted_from_the_final_result + skip + flat_array = FlattenArray.flatten([nil, nil, 3]) + assert_equal [3], flat_array + end + + def test_consecutive_null_values_in_the_middle_of_the_array_are_omitted_from_the_final_result + skip + flat_array = FlattenArray.flatten([1, nil, nil, 4]) + assert_equal [1, 4], flat_array + end + + def test_6_level_nested_array_with_null_values skip flat_array = FlattenArray.flatten([0, 2, [[2, 3], 8, [[100]], nil, [[nil]]], -2]) assert_equal [0, 2, 2, 3, 8, 100, -2], flat_array end - def test_all_values_in_nested_list_are_null + def test_all_values_in_nested_array_are_null skip - assert_empty FlattenArray.flatten([nil, [[[nil]]], nil, nil, [[nil, nil], nil], nil]) + flat_array = FlattenArray.flatten([nil, [[[nil]]], nil, nil, [[nil, nil], nil], nil]) + assert_empty flat_array end end diff --git a/exercises/practice/flower-field/.meta/test_template.erb b/exercises/practice/flower-field/.meta/test_template.erb new file mode 100644 index 0000000000..0157e35a41 --- /dev/null +++ b/exercises/practice/flower-field/.meta/test_template.erb @@ -0,0 +1,13 @@ +require 'minitest/autorun' +require_relative 'flower_field' + +class FlowerFieldTest < Minitest::Test +<% json["cases"].each do |cases| %> + def test_<%= underscore(cases["description"]) %> + <%= skip? %> + input = <%= cases["input"]["garden"] %> + expected = <%= cases["expected"] %> + assert_equal expected, FlowerField.annotate(input) + end + <% end %> +end diff --git a/exercises/practice/flower-field/flower_field_test.rb b/exercises/practice/flower-field/flower_field_test.rb index e9bde59618..23e1783030 100644 --- a/exercises/practice/flower-field/flower_field_test.rb +++ b/exercises/practice/flower-field/flower_field_test.rb @@ -3,6 +3,7 @@ class FlowerFieldTest < Minitest::Test def test_no_rows + # skip input = [] expected = [] assert_equal expected, FlowerField.annotate(input) diff --git a/exercises/practice/gigasecond/.meta/test_template.erb b/exercises/practice/gigasecond/.meta/test_template.erb new file mode 100644 index 0000000000..0715771f7c --- /dev/null +++ b/exercises/practice/gigasecond/.meta/test_template.erb @@ -0,0 +1,12 @@ +require 'minitest/autorun' +require_relative 'gigasecond' +require 'time' + +class GigasecondTest < Minitest::Test +<% json["cases"].each do |cases| %> + def test_<%= underscore(cases["description"]) %> + <%= skip? %> + assert_equal Time.parse('<%= cases["expected"] %> UTC'), Gigasecond.from(Time.parse('<%= cases["input"]["moment"] %><%= cases["input"]["moment"].include?('T') ? '' : 'T00:00:00' %> UTC')) + end + <% end %> +end diff --git a/exercises/practice/gigasecond/.meta/tests.toml b/exercises/practice/gigasecond/.meta/tests.toml index 64fd072a04..7f75cf5e6f 100644 --- a/exercises/practice/gigasecond/.meta/tests.toml +++ b/exercises/practice/gigasecond/.meta/tests.toml @@ -11,15 +11,12 @@ [92fbe71c-ea52-4fac-bd77-be38023cacf7] description = "date only specification of time" -include = false [6d86dd16-6f7a-47be-9e58-bb9fb2ae1433] description = "second test for date only specification of time" -include = false [77eb8502-2bca-4d92-89d9-7b39ace28dd5] description = "third test for date only specification of time" -include = false [c9d89a7d-06f8-4e28-a305-64f1b2abc693] description = "full time specified" diff --git a/exercises/practice/gigasecond/gigasecond_test.rb b/exercises/practice/gigasecond/gigasecond_test.rb index ad000cf3d5..b30d7eb79e 100644 --- a/exercises/practice/gigasecond/gigasecond_test.rb +++ b/exercises/practice/gigasecond/gigasecond_test.rb @@ -1,14 +1,30 @@ require 'minitest/autorun' require_relative 'gigasecond' +require 'time' class GigasecondTest < Minitest::Test - def test_full_time_specified + def test_date_only_specification_of_time # skip - assert_equal Time.utc(2046, 10, 2, 23, 46, 40), Gigasecond.from(Time.utc(2015, 1, 24, 22, 0, 0)) + assert_equal Time.parse('2043-01-01T01:46:40 UTC'), Gigasecond.from(Time.parse('2011-04-25T00:00:00 UTC')) + end + + def test_second_test_for_date_only_specification_of_time + skip + assert_equal Time.parse('2009-02-19T01:46:40 UTC'), Gigasecond.from(Time.parse('1977-06-13T00:00:00 UTC')) + end + + def test_third_test_for_date_only_specification_of_time + skip + assert_equal Time.parse('1991-03-27T01:46:40 UTC'), Gigasecond.from(Time.parse('1959-07-19T00:00:00 UTC')) + end + + def test_full_time_specified + skip + assert_equal Time.parse('2046-10-02T23:46:40 UTC'), Gigasecond.from(Time.parse('2015-01-24T22:00:00 UTC')) end def test_full_time_with_day_roll_over skip - assert_equal Time.utc(2046, 10, 3, 1, 46, 39), Gigasecond.from(Time.utc(2015, 1, 24, 23, 59, 59)) + assert_equal Time.parse('2046-10-03T01:46:39 UTC'), Gigasecond.from(Time.parse('2015-01-24T23:59:59 UTC')) end end diff --git a/exercises/practice/grains/.meta/test_template.erb b/exercises/practice/grains/.meta/test_template.erb new file mode 100644 index 0000000000..ffb764c893 --- /dev/null +++ b/exercises/practice/grains/.meta/test_template.erb @@ -0,0 +1,26 @@ +require 'minitest/autorun' +require_relative 'grains' + +class GrainsTest < Minitest::Test +<% json["cases"].each do |cases| %> + <%- if cases["cases"] -%> + <% cases["cases"].each do |sub_case| %> + def test_<%= underscore(sub_case["description"]) %> + <%= skip? %> + <%- if sub_case["expected"].is_a?(Hash) && sub_case["expected"].key?("error") -%> + assert_raises(ArgumentError) do + Grains.square(<%= sub_case["input"]["square"] %>) + end + <%- else -%> + assert_equal <%= sub_case["expected"] %>, Grains.square(<%= sub_case["input"]["square"] %>) + <%- end -%> + end + <% end %> + <%- else -%> + def test_<%= underscore(cases["description"]) %> + <%= skip? %> + assert_equal <%= cases["expected"] %>, Grains.total + end + <%- end -%> +<% end %> +end diff --git a/exercises/practice/grains/grains_test.rb b/exercises/practice/grains/grains_test.rb index 8351663201..bf5ab14c62 100644 --- a/exercises/practice/grains/grains_test.rb +++ b/exercises/practice/grains/grains_test.rb @@ -2,56 +2,56 @@ require_relative 'grains' class GrainsTest < Minitest::Test - def test_1 + def test_grains_on_square_1 # skip assert_equal 1, Grains.square(1) end - def test_2 + def test_grains_on_square_2 skip assert_equal 2, Grains.square(2) end - def test_3 + def test_grains_on_square_3 skip assert_equal 4, Grains.square(3) end - def test_4 + def test_grains_on_square_4 skip assert_equal 8, Grains.square(4) end - def test_16 + def test_grains_on_square_16 skip assert_equal 32_768, Grains.square(16) end - def test_32 + def test_grains_on_square_32 skip assert_equal 2_147_483_648, Grains.square(32) end - def test_64 + def test_grains_on_square_64 skip assert_equal 9_223_372_036_854_775_808, Grains.square(64) end - def test_square_0_raises_an_exception + def test_square_0_is_invalid skip assert_raises(ArgumentError) do Grains.square(0) end end - def test_negative_square_raises_an_exception + def test_negative_square_is_invalid skip assert_raises(ArgumentError) do Grains.square(-1) end end - def test_square_greater_than_64_raises_an_exception + def test_square_greater_than_64_is_invalid skip assert_raises(ArgumentError) do Grains.square(65)