diff --git a/exercises/practice/series/.meta/test_template.erb b/exercises/practice/series/.meta/test_template.erb new file mode 100644 index 0000000000..ebeaf44584 --- /dev/null +++ b/exercises/practice/series/.meta/test_template.erb @@ -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 diff --git a/exercises/practice/series/series_test.rb b/exercises/practice/series/series_test.rb index f93e624068..f49516e223 100644 --- a/exercises/practice/series/series_test.rb +++ b/exercises/practice/series/series_test.rb @@ -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) @@ -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) @@ -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) @@ -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 diff --git a/exercises/practice/sieve/.meta/test_template.erb b/exercises/practice/sieve/.meta/test_template.erb new file mode 100644 index 0000000000..8452d2dc83 --- /dev/null +++ b/exercises/practice/sieve/.meta/test_template.erb @@ -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 diff --git a/exercises/practice/sieve/sieve_test.rb b/exercises/practice/sieve/sieve_test.rb index b7ca7972a1..0813e49529 100644 --- a/exercises/practice/sieve/sieve_test.rb +++ b/exercises/practice/sieve/sieve_test.rb @@ -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 diff --git a/exercises/practice/space-age/.meta/test_template.erb b/exercises/practice/space-age/.meta/test_template.erb new file mode 100644 index 0000000000..f62db93329 --- /dev/null +++ b/exercises/practice/space-age/.meta/test_template.erb @@ -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 diff --git a/exercises/practice/space-age/space_age_test.rb b/exercises/practice/space-age/space_age_test.rb index 7a4ea9cf8e..73df3570af 100644 --- a/exercises/practice/space-age/space_age_test.rb +++ b/exercises/practice/space-age/space_age_test.rb @@ -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 diff --git a/exercises/practice/spiral-matrix/.meta/test_template.erb b/exercises/practice/spiral-matrix/.meta/test_template.erb new file mode 100644 index 0000000000..3740ae8857 --- /dev/null +++ b/exercises/practice/spiral-matrix/.meta/test_template.erb @@ -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 diff --git a/exercises/practice/spiral-matrix/spiral_matrix_test.rb b/exercises/practice/spiral-matrix/spiral_matrix_test.rb index 89cf822af5..c0cec368e6 100644 --- a/exercises/practice/spiral-matrix/spiral_matrix_test.rb +++ b/exercises/practice/spiral-matrix/spiral_matrix_test.rb @@ -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 diff --git a/exercises/practice/sum-of-multiples/.meta/test_template.erb b/exercises/practice/sum-of-multiples/.meta/test_template.erb new file mode 100644 index 0000000000..6559db6613 --- /dev/null +++ b/exercises/practice/sum-of-multiples/.meta/test_template.erb @@ -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 diff --git a/exercises/practice/sum-of-multiples/sum_of_multiples_test.rb b/exercises/practice/sum-of-multiples/sum_of_multiples_test.rb index 50ad6e5f24..92ea075507 100644 --- a/exercises/practice/sum-of-multiples/sum_of_multiples_test.rb +++ b/exercises/practice/sum-of-multiples/sum_of_multiples_test.rb @@ -4,91 +4,106 @@ class SumOfMultiplesTest < Minitest::Test def test_no_multiples_within_limit # skip - sum_of_multiples = SumOfMultiples.new(3, 5) - assert_equal 0, sum_of_multiples.to(1) + actual = SumOfMultiples.new(3, 5).to(1) + expected = 0 + assert_equal expected, actual end def test_one_factor_has_multiples_within_limit skip - sum_of_multiples = SumOfMultiples.new(3, 5) - assert_equal 3, sum_of_multiples.to(4) + actual = SumOfMultiples.new(3, 5).to(4) + expected = 3 + assert_equal expected, actual end def test_more_than_one_multiple_within_limit skip - sum_of_multiples = SumOfMultiples.new(3) - assert_equal 9, sum_of_multiples.to(7) + actual = SumOfMultiples.new(3).to(7) + expected = 9 + assert_equal expected, actual end def test_more_than_one_factor_with_multiples_within_limit skip - sum_of_multiples = SumOfMultiples.new(3, 5) - assert_equal 23, sum_of_multiples.to(10) + actual = SumOfMultiples.new(3, 5).to(10) + expected = 23 + assert_equal expected, actual end def test_each_multiple_is_only_counted_once skip - sum_of_multiples = SumOfMultiples.new(3, 5) - assert_equal 2_318, sum_of_multiples.to(100) + actual = SumOfMultiples.new(3, 5).to(100) + expected = 2318 + assert_equal expected, actual end def test_a_much_larger_limit skip - sum_of_multiples = SumOfMultiples.new(3, 5) - assert_equal 233_168, sum_of_multiples.to(1_000) + actual = SumOfMultiples.new(3, 5).to(1000) + expected = 233_168 + assert_equal expected, actual end def test_three_factors skip - sum_of_multiples = SumOfMultiples.new(7, 13, 17) - assert_equal 51, sum_of_multiples.to(20) + actual = SumOfMultiples.new(7, 13, 17).to(20) + expected = 51 + assert_equal expected, actual end def test_factors_not_relatively_prime skip - sum_of_multiples = SumOfMultiples.new(4, 6) - assert_equal 30, sum_of_multiples.to(15) + actual = SumOfMultiples.new(4, 6).to(15) + expected = 30 + assert_equal expected, actual end def test_some_pairs_of_factors_relatively_prime_and_some_not skip - sum_of_multiples = SumOfMultiples.new(5, 6, 8) - assert_equal 4_419, sum_of_multiples.to(150) + actual = SumOfMultiples.new(5, 6, 8).to(150) + expected = 4419 + assert_equal expected, actual end def test_one_factor_is_a_multiple_of_another skip - sum_of_multiples = SumOfMultiples.new(5, 25) - assert_equal 275, sum_of_multiples.to(51) + actual = SumOfMultiples.new(5, 25).to(51) + expected = 275 + assert_equal expected, actual end def test_much_larger_factors skip - sum_of_multiples = SumOfMultiples.new(43, 47) - assert_equal 2_203_160, sum_of_multiples.to(10_000) + actual = SumOfMultiples.new(43, 47).to(10_000) + expected = 2_203_160 + assert_equal expected, actual end def test_all_numbers_are_multiples_of_1 skip - sum_of_multiples = SumOfMultiples.new(1) - assert_equal 4_950, sum_of_multiples.to(100) + actual = SumOfMultiples.new(1).to(100) + expected = 4950 + assert_equal expected, actual end def test_no_factors_means_an_empty_sum skip - sum_of_multiples = SumOfMultiples.new - assert_equal 0, sum_of_multiples.to(10_000) + actual = SumOfMultiples.new.to(10_000) + expected = 0 + assert_equal expected, actual end def test_the_only_multiple_of_0_is_0 skip - sum_of_multiples = SumOfMultiples.new(0) - assert_equal 0, sum_of_multiples.to(1) + actual = SumOfMultiples.new(0).to(1) + expected = 0 + assert_equal expected, actual end def test_solutions_using_include_exclude_must_extend_to_cardinality_greater_than_3 skip - sum_of_multiples = SumOfMultiples.new(2, 3, 5, 7, 11) - assert_equal 39_614_537, sum_of_multiples.to(10_000) + actual = SumOfMultiples.new(2, 3, 5, 7, 11).to(10_000) + expected = 39_614_537 + assert_equal expected, actual end end diff --git a/exercises/practice/transpose/.meta/test_template.erb b/exercises/practice/transpose/.meta/test_template.erb new file mode 100644 index 0000000000..724f5d5bac --- /dev/null +++ b/exercises/practice/transpose/.meta/test_template.erb @@ -0,0 +1,13 @@ +require 'minitest/autorun' +require_relative 'transpose' + +class TransposeTest < Minitest::Test +<% json["cases"].each do |cases| %> + def test_<%= underscore(cases["description"]) %> + #<%= skip? %> + actual = Transpose.transpose("<%= cases["input"]["lines"].join("\\n") %>") + expected = "<%= cases["expected"].join("\\n") %>" + assert_equal expected, actual + end + <% end %> +end diff --git a/exercises/practice/transpose/transpose_test.rb b/exercises/practice/transpose/transpose_test.rb index 5ab93e6228..9896135037 100644 --- a/exercises/practice/transpose/transpose_test.rb +++ b/exercises/practice/transpose/transpose_test.rb @@ -3,86 +3,86 @@ class TransposeTest < Minitest::Test def test_empty_string - # skip - input = "" + ## skip + actual = Transpose.transpose("") expected = "" - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_two_characters_in_a_row - skip - input = "A1" + # skip + actual = Transpose.transpose("A1") expected = "A\n1" - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_two_characters_in_a_column - skip - input = "A\n1" + # skip + actual = Transpose.transpose("A\n1") expected = "A1" - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_simple - skip - input = "ABC\n123" + # skip + actual = Transpose.transpose("ABC\n123") expected = "A1\nB2\nC3" - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_single_line - skip - input = "Single line." + # skip + actual = Transpose.transpose("Single line.") expected = "S\ni\nn\ng\nl\ne\n \nl\ni\nn\ne\n." - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_first_line_longer_than_second_line - skip - input = "The fourth line.\nThe fifth line." + # skip + actual = Transpose.transpose("The fourth line.\nThe fifth line.") expected = "TT\nhh\nee\n \nff\noi\nuf\nrt\nth\nh \n l\nli\nin\nne\ne.\n." - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_second_line_longer_than_first_line - skip - input = "The first line.\nThe second line." + # skip + actual = Transpose.transpose("The first line.\nThe second line.") expected = "TT\nhh\nee\n \nfs\nie\nrc\nso\ntn\n d\nl \nil\nni\nen\n.e\n ." - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_mixed_line_length - skip - input = "The longest line.\nA long line.\nA longer line.\nA line." + # skip + actual = Transpose.transpose("The longest line.\nA long line.\nA longer line.\nA line.") expected = "TAAA\nh \nelll\n ooi\nlnnn\nogge\nn e.\nglr\nei \nsnl\ntei\n .n\nl e\ni .\nn\ne\n." - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_square - skip - input = "HEART\nEMBER\nABUSE\nRESIN\nTREND" + # skip + actual = Transpose.transpose("HEART\nEMBER\nABUSE\nRESIN\nTREND") expected = "HEART\nEMBER\nABUSE\nRESIN\nTREND" - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_rectangle - skip - input = "FRACTURE\nOUTLINED\nBLOOMING\nSEPTETTE" + # skip + actual = Transpose.transpose("FRACTURE\nOUTLINED\nBLOOMING\nSEPTETTE") expected = "FOBS\nRULE\nATOP\nCLOT\nTIME\nUNIT\nRENT\nEDGE" - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_triangle - skip - input = "T\nEE\nAAA\nSSSS\nEEEEE\nRRRRRR" + # skip + actual = Transpose.transpose("T\nEE\nAAA\nSSSS\nEEEEE\nRRRRRR") expected = "TEASER\n EASER\n ASER\n SER\n ER\n R" - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end def test_jagged_triangle - skip - input = "11\n2\n3333\n444\n555555\n66666" + # skip + actual = Transpose.transpose("11\n2\n3333\n444\n555555\n66666") expected = "123456\n1 3456\n 3456\n 3 56\n 56\n 5" - assert_equal expected, Transpose.transpose(input) + assert_equal expected, actual end end