Skip to content

Commit 80cf594

Browse files
meatball133kotp
andauthored
Add templates to exercises batch 4 (#1775)
* Enhance underscore method to filter invalid characters and update test file naming convention * Add test case which test underscore for special characters * Use character classes in regex. Also expose description for nested test cases. * Underscore must not create multiple underscores around special characters * Make test name unique in allergies * Change exercises to use single quotes. * Change template for allergies so it should match the old version. * Update acronym solution to work on the new test * Fix import and class in atbash test * Enhance underscore method to filter invalid characters and update test file naming convention * Add test case which test underscore for special characters * Use character classes in regex. Also expose description for nested test cases. * Underscore must not create multiple underscores around special characters --------- Co-authored-by: Victor Goff <keeperotphones+github@gmail.com> --------- Co-authored-by: Victor Goff <keeperotphones+github@gmail.com> * Fix formatting in dominoes * Add EOL * remove trailing spaces --------- Co-authored-by: Victor Goff <keeperotphones+github@gmail.com>
1 parent 05d72ff commit 80cf594

File tree

15 files changed

+179
-25
lines changed

15 files changed

+179
-25
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
require 'minitest/autorun'
2+
require_relative 'dominoes'
3+
4+
class DominoesTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
dominoes = <%= cases["input"]["dominoes"] %>
9+
<%= cases["expected"] ? "assert" : "refute" %> Dominoes.chain?(dominoes)
10+
end
11+
<% end %>
12+
end

exercises/practice/dominoes/dominoes_test.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,19 @@ def test_cant_be_chained
3838
refute Dominoes.chain?(dominoes)
3939
end
4040

41-
def test_disconnected_simple
41+
def test_disconnected___simple
4242
skip
4343
dominoes = [[1, 1], [2, 2]]
4444
refute Dominoes.chain?(dominoes)
4545
end
4646

47-
def test_disconnected_double_loop
47+
def test_disconnected___double_loop
4848
skip
4949
dominoes = [[1, 2], [2, 1], [3, 4], [4, 3]]
5050
refute Dominoes.chain?(dominoes)
5151
end
5252

53-
def test_disconnected_single_isolated
53+
def test_disconnected___single_isolated
5454
skip
5555
dominoes = [[1, 2], [2, 3], [3, 1], [4, 4]]
5656
refute Dominoes.chain?(dominoes)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
require 'minitest/autorun'
2+
require_relative 'eliuds_eggs'
3+
4+
class EliudsEggsTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
assert_equal <%= cases["expected"] %>, EliudsEggs.egg_count(<%= cases["input"]["number"] %>)
9+
end
10+
<% end %>
11+
end
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
require 'minitest/autorun'
2+
require_relative 'etl'
3+
4+
class EtlTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
old = {
9+
<% cases["input"]["legacy"].each do |key, value| -%>
10+
<%= key %> => <%= value %>,
11+
<%- end -%>
12+
}
13+
expected = {
14+
<% cases["expected"].each do |key, value| -%>
15+
'<%= key %>' => <%= value %>,
16+
<%- end -%>
17+
}
18+
assert_equal expected, ETL.transform(old)
19+
end
20+
<% end %>
21+
end

exercises/practice/etl/etl_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
require_relative 'etl'
33

44
class EtlTest < Minitest::Test
5-
def test_a_single_letter
5+
def test_single_letter
66
# skip
77
old = {
88
1 => ["A"]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
require 'minitest/autorun'
2+
require_relative 'flatten_array'
3+
4+
class FlattenArrayTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
flat_array = FlattenArray.flatten(<%= cases["input"]["array"] %>)
9+
assert_equal <%= cases["expected"] %>, flat_array
10+
end
11+
<% end %>
12+
end

exercises/practice/flatten-array/.meta/tests.toml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,30 @@ include = false
3535
description = "consecutive null values at the front of the list are omitted from the final result"
3636
include = false
3737

38+
[bc72da10-5f55-4ada-baf3-50e4da02ec8e]
39+
description = "consecutive null values at the front of the array are omitted from the final result"
40+
reimplements = "c6cf26de-8ccd-4410-84bd-b9efd88fd2bc"
41+
3842
[382c5242-587e-4577-b8ce-a5fb51e385a1]
3943
description = "consecutive null values in the middle of the list are omitted from the final result"
4044
include = false
4145

46+
[6991836d-0d9b-4703-80a0-3f1f23eb5981]
47+
description = "consecutive null values in the middle of the array are omitted from the final result"
48+
reimplements = "382c5242-587e-4577-b8ce-a5fb51e385a1"
49+
4250
[ef1d4790-1b1e-4939-a179-51ace0829dbd]
4351
description = "6 level nest list with null values"
52+
include = false
53+
54+
[dc90a09c-5376-449c-a7b3-c2d20d540069]
55+
description = "6 level nested array with null values"
56+
reimplements = "ef1d4790-1b1e-4939-a179-51ace0829dbd"
4457

4558
[85721643-705a-4150-93ab-7ae398e2942d]
4659
description = "all values in nested list are null"
60+
include = false
61+
62+
[51f5d9af-8f7f-4fb5-a156-69e8282cb275]
63+
description = "all values in nested array are null"
64+
reimplements = "85721643-705a-4150-93ab-7ae398e2942d"

exercises/practice/flatten-array/flatten_array_test.rb

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
class FlattenArrayTest < Minitest::Test
55
def test_empty
66
# skip
7-
assert_empty FlattenArray.flatten([])
7+
flat_array = FlattenArray.flatten([])
8+
assert_empty flat_array
89
end
910

1011
def test_no_nesting
@@ -15,7 +16,8 @@ def test_no_nesting
1516

1617
def test_flattens_a_nested_array
1718
skip
18-
assert_empty FlattenArray.flatten([[[]]])
19+
flat_array = FlattenArray.flatten([[[]]])
20+
assert_empty flat_array
1921
end
2022

2123
def test_flattens_array_with_just_integers_present
@@ -36,14 +38,27 @@ def test_6_level_nesting
3638
assert_equal [1, 2, 3, 4, 5, 6, 7, 8], flat_array
3739
end
3840

39-
def test_6_level_nest_list_with_null_values
41+
def test_consecutive_null_values_at_the_front_of_the_array_are_omitted_from_the_final_result
42+
skip
43+
flat_array = FlattenArray.flatten([nil, nil, 3])
44+
assert_equal [3], flat_array
45+
end
46+
47+
def test_consecutive_null_values_in_the_middle_of_the_array_are_omitted_from_the_final_result
48+
skip
49+
flat_array = FlattenArray.flatten([1, nil, nil, 4])
50+
assert_equal [1, 4], flat_array
51+
end
52+
53+
def test_6_level_nested_array_with_null_values
4054
skip
4155
flat_array = FlattenArray.flatten([0, 2, [[2, 3], 8, [[100]], nil, [[nil]]], -2])
4256
assert_equal [0, 2, 2, 3, 8, 100, -2], flat_array
4357
end
4458

45-
def test_all_values_in_nested_list_are_null
59+
def test_all_values_in_nested_array_are_null
4660
skip
47-
assert_empty FlattenArray.flatten([nil, [[[nil]]], nil, nil, [[nil, nil], nil], nil])
61+
flat_array = FlattenArray.flatten([nil, [[[nil]]], nil, nil, [[nil, nil], nil], nil])
62+
assert_empty flat_array
4863
end
4964
end
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
require 'minitest/autorun'
2+
require_relative 'flower_field'
3+
4+
class FlowerFieldTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
input = <%= cases["input"]["garden"] %>
9+
expected = <%= cases["expected"] %>
10+
assert_equal expected, FlowerField.annotate(input)
11+
end
12+
<% end %>
13+
end

exercises/practice/flower-field/flower_field_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
class FlowerFieldTest < Minitest::Test
55
def test_no_rows
6+
# skip
67
input = []
78
expected = []
89
assert_equal expected, FlowerField.annotate(input)

0 commit comments

Comments
 (0)