Skip to content

Commit 4a3bf12

Browse files
committed
Add templates for exercises batch 11
1 parent 10c4b33 commit 4a3bf12

File tree

12 files changed

+250
-149
lines changed

12 files changed

+250
-149
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
require 'minitest/autorun'
2+
require_relative 'series'
3+
4+
class SeriesTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
<%- if cases["expected"].is_a?(Hash) && cases["expected"].key?("error") -%>
9+
slice_string ='<%= cases["input"]["series"] %>'
10+
<%- if cases["expected"]["error"] == "series cannot be empty"-%>
11+
assert_raises ArgumentError do
12+
Series.new(slice_string)
13+
end
14+
<%- else -%>
15+
series = Series.new(slice_string)
16+
assert_raises ArgumentError do
17+
series.slices(<%= cases["input"]["sliceLength"] %>)
18+
end
19+
<%- end -%>
20+
<%- else -%>
21+
actual = Series.new('<%= cases["input"]["series"]%>').slices(<%= cases["input"]["sliceLength"] %>)
22+
expected = <%= cases["expected"] %>
23+
assert_equal expected, actual
24+
<%- end -%>
25+
end
26+
<% end %>
27+
end

exercises/practice/series/series_test.rb

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,43 +4,49 @@
44
class SeriesTest < Minitest::Test
55
def test_slices_of_one_from_one
66
# skip
7-
series = Series.new("1")
8-
assert_equal ["1"], series.slices(1)
7+
actual = Series.new('1').slices(1)
8+
expected = ["1"]
9+
assert_equal expected, actual
910
end
1011

1112
def test_slices_of_one_from_two
1213
skip
13-
series = Series.new("12")
14-
assert_equal %w[1 2], series.slices(1)
14+
actual = Series.new('12').slices(1)
15+
expected = %w[1 2]
16+
assert_equal expected, actual
1517
end
1618

1719
def test_slices_of_two
1820
skip
19-
series = Series.new("35")
20-
assert_equal ["35"], series.slices(2)
21+
actual = Series.new('35').slices(2)
22+
expected = ["35"]
23+
assert_equal expected, actual
2124
end
2225

2326
def test_slices_of_two_overlap
2427
skip
25-
series = Series.new("9142")
26-
assert_equal %w[91 14 42], series.slices(2)
28+
actual = Series.new('9142').slices(2)
29+
expected = %w[91 14 42]
30+
assert_equal expected, actual
2731
end
2832

2933
def test_slices_can_include_duplicates
3034
skip
31-
series = Series.new("777777")
32-
assert_equal %w[777 777 777 777], series.slices(3)
35+
actual = Series.new('777777').slices(3)
36+
expected = %w[777 777 777 777]
37+
assert_equal expected, actual
3338
end
3439

3540
def test_slices_of_a_long_series
3641
skip
37-
series = Series.new("918493904243")
38-
assert_equal %w[91849 18493 84939 49390 93904 39042 90424 04243], series.slices(5)
42+
actual = Series.new('918493904243').slices(5)
43+
expected = %w[91849 18493 84939 49390 93904 39042 90424 04243]
44+
assert_equal expected, actual
3945
end
4046

4147
def test_slice_length_is_too_large
4248
skip
43-
slice_string = "12345"
49+
slice_string = '12345'
4450
series = Series.new(slice_string)
4551
assert_raises ArgumentError do
4652
series.slices(6)
@@ -49,7 +55,7 @@ def test_slice_length_is_too_large
4955

5056
def test_slice_length_cannot_be_zero
5157
skip
52-
slice_string = "12345"
58+
slice_string = '12345'
5359
series = Series.new(slice_string)
5460
assert_raises ArgumentError do
5561
series.slices(0)
@@ -58,7 +64,7 @@ def test_slice_length_cannot_be_zero
5864

5965
def test_slice_length_cannot_be_negative
6066
skip
61-
slice_string = "123"
67+
slice_string = '123'
6268
series = Series.new(slice_string)
6369
assert_raises ArgumentError do
6470
series.slices(-1)
@@ -67,7 +73,7 @@ def test_slice_length_cannot_be_negative
6773

6874
def test_empty_series_is_invalid
6975
skip
70-
slice_string = ""
76+
slice_string = ''
7177
assert_raises ArgumentError do
7278
Series.new(slice_string)
7379
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 'sieve'
3+
4+
class SieveTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
actual = Sieve.new(<%= cases["input"]["limit"] %>).primes
9+
expected = <%= cases["expected"] %>
10+
assert_equal expected, actual
11+
end
12+
<% end %>
13+
end

exercises/practice/sieve/sieve_test.rb

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,36 @@
44
class SieveTest < Minitest::Test
55
def test_no_primes_under_two
66
# skip
7+
actual = Sieve.new(1).primes
78
expected = []
8-
assert_equal expected, Sieve.new(1).primes
9+
assert_equal expected, actual
910
end
1011

1112
def test_find_first_prime
1213
skip
14+
actual = Sieve.new(2).primes
1315
expected = [2]
14-
assert_equal expected, Sieve.new(2).primes
16+
assert_equal expected, actual
1517
end
1618

1719
def test_find_primes_up_to_10
1820
skip
21+
actual = Sieve.new(10).primes
1922
expected = [2, 3, 5, 7]
20-
assert_equal expected, Sieve.new(10).primes
23+
assert_equal expected, actual
2124
end
2225

2326
def test_limit_is_prime
2427
skip
28+
actual = Sieve.new(13).primes
2529
expected = [2, 3, 5, 7, 11, 13]
26-
assert_equal expected, Sieve.new(13).primes
30+
assert_equal expected, actual
2731
end
2832

2933
def test_find_primes_up_to_1000
3034
skip
31-
expected = [
32-
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
33-
61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139,
34-
149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
35-
239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337,
36-
347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439,
37-
443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557,
38-
563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653,
39-
659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769,
40-
773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883,
41-
887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
42-
]
43-
assert_equal expected, Sieve.new(1000).primes
35+
actual = Sieve.new(1000).primes
36+
expected = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997]
37+
assert_equal expected, actual
4438
end
4539
end
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
require 'minitest/autorun'
2+
require_relative 'space_age'
3+
4+
class SpaceAgeTest < Minitest::Test
5+
# assert_in_delta will pass if the difference
6+
# between the values being compared is less
7+
# than the allowed delta
8+
DELTA = 0.01
9+
<% json["cases"].each do |cases| %>
10+
def test_<%= underscore(cases["description"]) %>
11+
<%= skip? %>
12+
actual = SpaceAge.new(<%= cases["input"]["seconds"] %>).on_<%= cases["input"]["planet"].downcase %>
13+
expected = <%= cases["expected"] %>
14+
assert_in_delta expected, actual, DELTA
15+
end
16+
<% end %>
17+
end

exercises/practice/space-age/space_age_test.rb

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,49 +9,57 @@ class SpaceAgeTest < Minitest::Test
99

1010
def test_age_on_earth
1111
# skip
12-
age = SpaceAge.new(1_000_000_000)
13-
assert_in_delta 31.69, age.on_earth, DELTA
12+
actual = SpaceAge.new(1_000_000_000).on_earth
13+
expected = 31.69
14+
assert_in_delta expected, actual, DELTA
1415
end
1516

1617
def test_age_on_mercury
1718
skip
18-
age = SpaceAge.new(2_134_835_688)
19-
assert_in_delta 280.88, age.on_mercury, DELTA
19+
actual = SpaceAge.new(2_134_835_688).on_mercury
20+
expected = 280.88
21+
assert_in_delta expected, actual, DELTA
2022
end
2123

2224
def test_age_on_venus
2325
skip
24-
age = SpaceAge.new(189_839_836)
25-
assert_in_delta 9.78, age.on_venus, DELTA
26+
actual = SpaceAge.new(189_839_836).on_venus
27+
expected = 9.78
28+
assert_in_delta expected, actual, DELTA
2629
end
2730

2831
def test_age_on_mars
2932
skip
30-
age = SpaceAge.new(2_329_871_239)
31-
assert_in_delta 39.25, age.on_mars, DELTA
33+
actual = SpaceAge.new(2_129_871_239).on_mars
34+
expected = 35.88
35+
assert_in_delta expected, actual, DELTA
3236
end
3337

3438
def test_age_on_jupiter
3539
skip
36-
age = SpaceAge.new(901_876_382)
37-
assert_in_delta 2.41, age.on_jupiter, DELTA
40+
actual = SpaceAge.new(901_876_382).on_jupiter
41+
expected = 2.41
42+
assert_in_delta expected, actual, DELTA
3843
end
3944

4045
def test_age_on_saturn
4146
skip
42-
age = SpaceAge.new(3_000_000_000)
43-
assert_in_delta 3.23, age.on_saturn, DELTA
47+
actual = SpaceAge.new(2_000_000_000).on_saturn
48+
expected = 2.15
49+
assert_in_delta expected, actual, DELTA
4450
end
4551

4652
def test_age_on_uranus
4753
skip
48-
age = SpaceAge.new(3_210_123_456)
49-
assert_in_delta 1.21, age.on_uranus, DELTA
54+
actual = SpaceAge.new(1_210_123_456).on_uranus
55+
expected = 0.46
56+
assert_in_delta expected, actual, DELTA
5057
end
5158

5259
def test_age_on_neptune
5360
skip
54-
age = SpaceAge.new(8_210_123_456)
55-
assert_in_delta 1.58, age.on_neptune, DELTA
61+
actual = SpaceAge.new(1_821_023_456).on_neptune
62+
expected = 0.35
63+
assert_in_delta expected, actual, DELTA
5664
end
5765
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 'spiral_matrix'
3+
4+
class SpiralMatrixTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
actual = SpiralMatrix.new(<%= cases["input"]["size"] %>).matrix
9+
expected = <%= cases["expected"] %>
10+
assert_equal expected, actual
11+
end
12+
<% end %>
13+
end

exercises/practice/spiral-matrix/spiral_matrix_test.rb

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,61 +4,43 @@
44
class SpiralMatrixTest < Minitest::Test
55
def test_empty_spiral
66
# skip
7-
spiral = SpiralMatrix.new(0).matrix
7+
actual = SpiralMatrix.new(0).matrix
88
expected = []
9-
assert_equal expected, spiral
9+
assert_equal expected, actual
1010
end
1111

1212
def test_trivial_spiral
1313
skip
14-
spiral = SpiralMatrix.new(1).matrix
14+
actual = SpiralMatrix.new(1).matrix
1515
expected = [[1]]
16-
assert_equal expected, spiral
16+
assert_equal expected, actual
1717
end
1818

1919
def test_spiral_of_size_2
2020
skip
21-
spiral = SpiralMatrix.new(2).matrix
22-
expected = [
23-
[1, 2],
24-
[4, 3]
25-
]
26-
assert_equal expected, spiral
21+
actual = SpiralMatrix.new(2).matrix
22+
expected = [[1, 2], [4, 3]]
23+
assert_equal expected, actual
2724
end
2825

2926
def test_spiral_of_size_3
3027
skip
31-
spiral = SpiralMatrix.new(3).matrix
32-
expected = [
33-
[1, 2, 3],
34-
[8, 9, 4],
35-
[7, 6, 5]
36-
]
37-
assert_equal expected, spiral
28+
actual = SpiralMatrix.new(3).matrix
29+
expected = [[1, 2, 3], [8, 9, 4], [7, 6, 5]]
30+
assert_equal expected, actual
3831
end
3932

4033
def test_spiral_of_size_4
4134
skip
42-
spiral = SpiralMatrix.new(4).matrix
43-
expected = [
44-
[1, 2, 3, 4],
45-
[12, 13, 14, 5],
46-
[11, 16, 15, 6],
47-
[10, 9, 8, 7]
48-
]
49-
assert_equal expected, spiral
35+
actual = SpiralMatrix.new(4).matrix
36+
expected = [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]
37+
assert_equal expected, actual
5038
end
5139

5240
def test_spiral_of_size_5
5341
skip
54-
spiral = SpiralMatrix.new(5).matrix
55-
expected = [
56-
[1, 2, 3, 4, 5],
57-
[16, 17, 18, 19, 6],
58-
[15, 24, 25, 20, 7],
59-
[14, 23, 22, 21, 8],
60-
[13, 12, 11, 10, 9]
61-
]
62-
assert_equal expected, spiral
42+
actual = SpiralMatrix.new(5).matrix
43+
expected = [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]]
44+
assert_equal expected, actual
6345
end
6446
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 'sum_of_multiples'
3+
4+
class SumOfMultiplesTest < Minitest::Test
5+
<% json["cases"].each do |cases| %>
6+
def test_<%= underscore(cases["description"]) %>
7+
<%= skip? %>
8+
actual = SumOfMultiples.new(<%= cases["input"]["factors"].join(", ") %>).to(<%= cases["input"]["limit"] %>)
9+
expected = <%= cases["expected"] %>
10+
assert_equal expected, actual
11+
end
12+
<% end %>
13+
end

0 commit comments

Comments
 (0)