Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions exercises/practice/dominoes/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -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
6 changes: 3 additions & 3 deletions exercises/practice/dominoes/dominoes_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
11 changes: 11 additions & 0 deletions exercises/practice/eliuds-eggs/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -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
21 changes: 21 additions & 0 deletions exercises/practice/etl/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion exercises/practice/etl/etl_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
require_relative 'etl'

class EtlTest < Minitest::Test
def test_a_single_letter
def test_single_letter
# skip
old = {
1 => ["A"]
Expand Down
12 changes: 12 additions & 0 deletions exercises/practice/flatten-array/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -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
18 changes: 18 additions & 0 deletions exercises/practice/flatten-array/.meta/tests.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
25 changes: 20 additions & 5 deletions exercises/practice/flatten-array/flatten_array_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
13 changes: 13 additions & 0 deletions exercises/practice/flower-field/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions exercises/practice/flower-field/flower_field_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

class FlowerFieldTest < Minitest::Test
def test_no_rows
# skip
input = []
expected = []
assert_equal expected, FlowerField.annotate(input)
Expand Down
12 changes: 12 additions & 0 deletions exercises/practice/gigasecond/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -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
3 changes: 0 additions & 3 deletions exercises/practice/gigasecond/.meta/tests.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
22 changes: 19 additions & 3 deletions exercises/practice/gigasecond/gigasecond_test.rb
Original file line number Diff line number Diff line change
@@ -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
26 changes: 26 additions & 0 deletions exercises/practice/grains/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -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
20 changes: 10 additions & 10 deletions exercises/practice/grains/grains_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down