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
27 changes: 27 additions & 0 deletions exercises/practice/series/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
require 'minitest/autorun'
require_relative 'series'

class SeriesTest < Minitest::Test
<% json["cases"].each do |cases| %>
def test_<%= underscore(cases["description"]) %>
<%= skip? %>
<%- if cases["expected"].is_a?(Hash) && cases["expected"].key?("error") -%>
slice_string ='<%= cases["input"]["series"] %>'
<%- if cases["expected"]["error"] == "series cannot be empty"-%>
assert_raises ArgumentError do
Series.new(slice_string)
end
<%- else -%>
series = Series.new(slice_string)
assert_raises ArgumentError do
series.slices(<%= cases["input"]["sliceLength"] %>)
end
<%- end -%>
<%- else -%>
actual = Series.new('<%= cases["input"]["series"]%>').slices(<%= cases["input"]["sliceLength"] %>)
expected = <%= cases["expected"] %>
assert_equal expected, actual
<%- end -%>
end
<% end %>
end
38 changes: 22 additions & 16 deletions exercises/practice/series/series_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,43 +4,49 @@
class SeriesTest < Minitest::Test
def test_slices_of_one_from_one
# skip
series = Series.new("1")
assert_equal ["1"], series.slices(1)
actual = Series.new('1').slices(1)
expected = ["1"]
assert_equal expected, actual
end

def test_slices_of_one_from_two
skip
series = Series.new("12")
assert_equal %w[1 2], series.slices(1)
actual = Series.new('12').slices(1)
expected = %w[1 2]
assert_equal expected, actual
end

def test_slices_of_two
skip
series = Series.new("35")
assert_equal ["35"], series.slices(2)
actual = Series.new('35').slices(2)
expected = ["35"]
assert_equal expected, actual
end

def test_slices_of_two_overlap
skip
series = Series.new("9142")
assert_equal %w[91 14 42], series.slices(2)
actual = Series.new('9142').slices(2)
expected = %w[91 14 42]
assert_equal expected, actual
end

def test_slices_can_include_duplicates
skip
series = Series.new("777777")
assert_equal %w[777 777 777 777], series.slices(3)
actual = Series.new('777777').slices(3)
expected = %w[777 777 777 777]
assert_equal expected, actual
end

def test_slices_of_a_long_series
skip
series = Series.new("918493904243")
assert_equal %w[91849 18493 84939 49390 93904 39042 90424 04243], series.slices(5)
actual = Series.new('918493904243').slices(5)
expected = %w[91849 18493 84939 49390 93904 39042 90424 04243]
assert_equal expected, actual
end

def test_slice_length_is_too_large
skip
slice_string = "12345"
slice_string = '12345'
series = Series.new(slice_string)
assert_raises ArgumentError do
series.slices(6)
Expand All @@ -49,7 +55,7 @@ def test_slice_length_is_too_large

def test_slice_length_cannot_be_zero
skip
slice_string = "12345"
slice_string = '12345'
series = Series.new(slice_string)
assert_raises ArgumentError do
series.slices(0)
Expand All @@ -58,7 +64,7 @@ def test_slice_length_cannot_be_zero

def test_slice_length_cannot_be_negative
skip
slice_string = "123"
slice_string = '123'
series = Series.new(slice_string)
assert_raises ArgumentError do
series.slices(-1)
Expand All @@ -67,7 +73,7 @@ def test_slice_length_cannot_be_negative

def test_empty_series_is_invalid
skip
slice_string = ""
slice_string = ''
assert_raises ArgumentError do
Series.new(slice_string)
end
Expand Down
13 changes: 13 additions & 0 deletions exercises/practice/sieve/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
require 'minitest/autorun'
require_relative 'sieve'

class SieveTest < Minitest::Test
<% json["cases"].each do |cases| %>
def test_<%= underscore(cases["description"]) %>
<%= skip? %>
actual = Sieve.new(<%= cases["input"]["limit"] %>).primes
expected = <%= cases["expected"] %>
assert_equal expected, actual
end
<% end %>
end
28 changes: 11 additions & 17 deletions exercises/practice/sieve/sieve_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,36 @@
class SieveTest < Minitest::Test
def test_no_primes_under_two
# skip
actual = Sieve.new(1).primes
expected = []
assert_equal expected, Sieve.new(1).primes
assert_equal expected, actual
end

def test_find_first_prime
skip
actual = Sieve.new(2).primes
expected = [2]
assert_equal expected, Sieve.new(2).primes
assert_equal expected, actual
end

def test_find_primes_up_to_10
skip
actual = Sieve.new(10).primes
expected = [2, 3, 5, 7]
assert_equal expected, Sieve.new(10).primes
assert_equal expected, actual
end

def test_limit_is_prime
skip
actual = Sieve.new(13).primes
expected = [2, 3, 5, 7, 11, 13]
assert_equal expected, Sieve.new(13).primes
assert_equal expected, actual
end

def test_find_primes_up_to_1000
skip
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
]
assert_equal expected, Sieve.new(1000).primes
actual = Sieve.new(1000).primes
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]
assert_equal expected, actual
end
end
17 changes: 17 additions & 0 deletions exercises/practice/space-age/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require 'minitest/autorun'
require_relative 'space_age'

class SpaceAgeTest < Minitest::Test
# assert_in_delta will pass if the difference
# between the values being compared is less
# than the allowed delta
DELTA = 0.01
<% json["cases"].each do |cases| %>
def test_<%= underscore(cases["description"]) %>
<%= skip? %>
actual = SpaceAge.new(<%= cases["input"]["seconds"] %>).on_<%= cases["input"]["planet"].downcase %>
expected = <%= cases["expected"] %>
assert_in_delta expected, actual, DELTA
end
<% end %>
end
40 changes: 24 additions & 16 deletions exercises/practice/space-age/space_age_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,49 +9,57 @@ class SpaceAgeTest < Minitest::Test

def test_age_on_earth
# skip
age = SpaceAge.new(1_000_000_000)
assert_in_delta 31.69, age.on_earth, DELTA
actual = SpaceAge.new(1_000_000_000).on_earth
expected = 31.69
assert_in_delta expected, actual, DELTA
end

def test_age_on_mercury
skip
age = SpaceAge.new(2_134_835_688)
assert_in_delta 280.88, age.on_mercury, DELTA
actual = SpaceAge.new(2_134_835_688).on_mercury
expected = 280.88
assert_in_delta expected, actual, DELTA
end

def test_age_on_venus
skip
age = SpaceAge.new(189_839_836)
assert_in_delta 9.78, age.on_venus, DELTA
actual = SpaceAge.new(189_839_836).on_venus
expected = 9.78
assert_in_delta expected, actual, DELTA
end

def test_age_on_mars
skip
age = SpaceAge.new(2_329_871_239)
assert_in_delta 39.25, age.on_mars, DELTA
actual = SpaceAge.new(2_129_871_239).on_mars
expected = 35.88
assert_in_delta expected, actual, DELTA
end

def test_age_on_jupiter
skip
age = SpaceAge.new(901_876_382)
assert_in_delta 2.41, age.on_jupiter, DELTA
actual = SpaceAge.new(901_876_382).on_jupiter
expected = 2.41
assert_in_delta expected, actual, DELTA
end

def test_age_on_saturn
skip
age = SpaceAge.new(3_000_000_000)
assert_in_delta 3.23, age.on_saturn, DELTA
actual = SpaceAge.new(2_000_000_000).on_saturn
expected = 2.15
assert_in_delta expected, actual, DELTA
end

def test_age_on_uranus
skip
age = SpaceAge.new(3_210_123_456)
assert_in_delta 1.21, age.on_uranus, DELTA
actual = SpaceAge.new(1_210_123_456).on_uranus
expected = 0.46
assert_in_delta expected, actual, DELTA
end

def test_age_on_neptune
skip
age = SpaceAge.new(8_210_123_456)
assert_in_delta 1.58, age.on_neptune, DELTA
actual = SpaceAge.new(1_821_023_456).on_neptune
expected = 0.35
assert_in_delta expected, actual, DELTA
end
end
13 changes: 13 additions & 0 deletions exercises/practice/spiral-matrix/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
require 'minitest/autorun'
require_relative 'spiral_matrix'

class SpiralMatrixTest < Minitest::Test
<% json["cases"].each do |cases| %>
def test_<%= underscore(cases["description"]) %>
<%= skip? %>
actual = SpiralMatrix.new(<%= cases["input"]["size"] %>).matrix
expected = <%= cases["expected"] %>
assert_equal expected, actual
end
<% end %>
end
50 changes: 16 additions & 34 deletions exercises/practice/spiral-matrix/spiral_matrix_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,61 +4,43 @@
class SpiralMatrixTest < Minitest::Test
def test_empty_spiral
# skip
spiral = SpiralMatrix.new(0).matrix
actual = SpiralMatrix.new(0).matrix
expected = []
assert_equal expected, spiral
assert_equal expected, actual
end

def test_trivial_spiral
skip
spiral = SpiralMatrix.new(1).matrix
actual = SpiralMatrix.new(1).matrix
expected = [[1]]
assert_equal expected, spiral
assert_equal expected, actual
end

def test_spiral_of_size_2
skip
spiral = SpiralMatrix.new(2).matrix
expected = [
[1, 2],
[4, 3]
]
assert_equal expected, spiral
actual = SpiralMatrix.new(2).matrix
expected = [[1, 2], [4, 3]]
assert_equal expected, actual
end

def test_spiral_of_size_3
skip
spiral = SpiralMatrix.new(3).matrix
expected = [
[1, 2, 3],
[8, 9, 4],
[7, 6, 5]
]
assert_equal expected, spiral
actual = SpiralMatrix.new(3).matrix
expected = [[1, 2, 3], [8, 9, 4], [7, 6, 5]]
assert_equal expected, actual
end

def test_spiral_of_size_4
skip
spiral = SpiralMatrix.new(4).matrix
expected = [
[1, 2, 3, 4],
[12, 13, 14, 5],
[11, 16, 15, 6],
[10, 9, 8, 7]
]
assert_equal expected, spiral
actual = SpiralMatrix.new(4).matrix
expected = [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]
assert_equal expected, actual
end

def test_spiral_of_size_5
skip
spiral = SpiralMatrix.new(5).matrix
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]
]
assert_equal expected, spiral
actual = SpiralMatrix.new(5).matrix
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]]
assert_equal expected, actual
end
end
13 changes: 13 additions & 0 deletions exercises/practice/sum-of-multiples/.meta/test_template.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
require 'minitest/autorun'
require_relative 'sum_of_multiples'

class SumOfMultiplesTest < Minitest::Test
<% json["cases"].each do |cases| %>
def test_<%= underscore(cases["description"]) %>
<%= skip? %>
actual = SumOfMultiples.new(<%= cases["input"]["factors"].join(", ") %>).to(<%= cases["input"]["limit"] %>)
expected = <%= cases["expected"] %>
assert_equal expected, actual
end
<% end %>
end
Loading