trackler 2.1.0.1 → 2.1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/elixir/config.json +17 -0
  4. data/tracks/elixir/exercises/matrix/example.exs +63 -0
  5. data/tracks/elixir/exercises/matrix/matrix.exs +48 -0
  6. data/tracks/elixir/exercises/matrix/matrix_test.exs +58 -0
  7. data/tracks/elixir/exercises/twelve-days/example.exs +53 -0
  8. data/tracks/elixir/exercises/twelve-days/twelve_days.exs +25 -0
  9. data/tracks/elixir/exercises/twelve-days/twelve_days_test.exs +86 -0
  10. data/tracks/go/exercises/change/.meta/gen.go +1 -3
  11. data/tracks/go/exercises/change/cases_test.go +1 -0
  12. data/tracks/go/exercises/forth/example.go +1 -1
  13. data/tracks/go/exercises/raindrops/.meta/gen.go +1 -3
  14. data/tracks/go/exercises/raindrops/cases_test.go +5 -1
  15. data/tracks/go/exercises/raindrops/example.go +1 -1
  16. data/tracks/go/exercises/raindrops/raindrops.go +1 -1
  17. data/tracks/go/exercises/raindrops/raindrops_test.go +1 -1
  18. data/tracks/java/config.json +5 -5
  19. data/tracks/java/exercises/isogram/src/example/java/IsogramChecker.java +23 -27
  20. data/tracks/java/exercises/isogram/src/test/java/IsogramCheckerTest.java +77 -0
  21. data/tracks/javascript/config.json +9 -0
  22. data/tracks/javascript/exercises/proverb/example.js +36 -0
  23. data/tracks/javascript/exercises/proverb/proverb.spec.js +78 -0
  24. data/tracks/ruby/README.md +0 -33
  25. data/tracks/ruby/exercises/acronym/.meta/.version +1 -1
  26. data/tracks/ruby/exercises/acronym/acronym_test.rb +14 -9
  27. data/tracks/ruby/exercises/acronym/example.rb +1 -1
  28. data/tracks/ruby/exercises/acronym/example.tt +7 -4
  29. data/tracks/ruby/exercises/all-your-base/all_your_base_test.rb +1 -1
  30. data/tracks/ruby/exercises/all-your-base/example.tt +4 -3
  31. data/tracks/ruby/exercises/alphametics/alphametics_test.rb +2 -1
  32. data/tracks/ruby/exercises/alphametics/example.tt +2 -1
  33. data/tracks/ruby/exercises/anagram/anagram_test.rb +35 -20
  34. data/tracks/ruby/exercises/anagram/example.rb +1 -1
  35. data/tracks/ruby/exercises/anagram/example.tt +5 -2
  36. data/tracks/ruby/exercises/beer-song/beer_song_test.rb +1 -0
  37. data/tracks/ruby/exercises/beer-song/example.tt +6 -4
  38. data/tracks/ruby/exercises/binary/binary_test.rb +3 -2
  39. data/tracks/ruby/exercises/binary/example.tt +5 -2
  40. data/tracks/ruby/exercises/bowling/bowling_test.rb +39 -40
  41. data/tracks/ruby/exercises/bowling/example.tt +2 -2
  42. data/tracks/ruby/exercises/bracket-push/.meta/.version +1 -1
  43. data/tracks/ruby/exercises/bracket-push/bracket_push_test.rb +7 -3
  44. data/tracks/ruby/exercises/bracket-push/example.rb +1 -1
  45. data/tracks/ruby/exercises/bracket-push/example.tt +5 -2
  46. data/tracks/ruby/exercises/clock/clock_test.rb +40 -41
  47. data/tracks/ruby/exercises/clock/example.tt +5 -2
  48. data/tracks/ruby/exercises/connect/.meta/.version +1 -1
  49. data/tracks/ruby/exercises/connect/connect_test.rb +20 -3
  50. data/tracks/ruby/exercises/connect/example.rb +1 -1
  51. data/tracks/ruby/exercises/connect/example.tt +3 -1
  52. data/tracks/ruby/exercises/custom-set/custom_set_test.rb +1 -2
  53. data/tracks/ruby/exercises/custom-set/example.tt +5 -2
  54. data/tracks/ruby/exercises/difference-of-squares/difference_of_squares_test.rb +6 -5
  55. data/tracks/ruby/exercises/difference-of-squares/example.tt +8 -4
  56. data/tracks/ruby/exercises/dominoes/dominoes_test.rb +1 -1
  57. data/tracks/ruby/exercises/dominoes/example.tt +1 -1
  58. data/tracks/ruby/exercises/gigasecond/.meta/.version +1 -1
  59. data/tracks/ruby/exercises/gigasecond/example.rb +1 -1
  60. data/tracks/ruby/exercises/gigasecond/example.tt +7 -5
  61. data/tracks/ruby/exercises/gigasecond/gigasecond_test.rb +11 -16
  62. data/tracks/ruby/exercises/grains/example.tt +5 -3
  63. data/tracks/ruby/exercises/grains/grains_test.rb +2 -1
  64. data/tracks/ruby/exercises/hello-world/example.tt +1 -1
  65. data/tracks/ruby/exercises/hello-world/hello_world_test.rb +1 -1
  66. data/tracks/ruby/exercises/isogram/.meta/.version +1 -1
  67. data/tracks/ruby/exercises/isogram/example.rb +1 -1
  68. data/tracks/ruby/exercises/isogram/example.tt +6 -4
  69. data/tracks/ruby/exercises/isogram/isogram_test.rb +18 -10
  70. data/tracks/ruby/exercises/largest-series-product/.meta/.version +1 -1
  71. data/tracks/ruby/exercises/largest-series-product/example.rb +1 -1
  72. data/tracks/ruby/exercises/largest-series-product/example.tt +7 -5
  73. data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +11 -21
  74. data/tracks/ruby/exercises/leap/.meta/.version +1 -1
  75. data/tracks/ruby/exercises/leap/example.rb +1 -1
  76. data/tracks/ruby/exercises/leap/example.tt +6 -4
  77. data/tracks/ruby/exercises/leap/leap_test.rb +11 -25
  78. data/tracks/ruby/exercises/nth-prime/example.tt +7 -5
  79. data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +2 -3
  80. data/tracks/ruby/exercises/pangram/example.tt +5 -3
  81. data/tracks/ruby/exercises/pangram/pangram_test.rb +2 -1
  82. data/tracks/ruby/exercises/queen-attack/example.tt +2 -2
  83. data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +14 -15
  84. data/tracks/ruby/exercises/raindrops/example.tt +7 -4
  85. data/tracks/ruby/exercises/raindrops/raindrops_test.rb +38 -38
  86. data/tracks/ruby/exercises/rna-transcription/example.tt +6 -3
  87. data/tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb +4 -5
  88. data/tracks/ruby/exercises/roman-numerals/example.tt +7 -4
  89. data/tracks/ruby/exercises/roman-numerals/roman_numerals_test.rb +5 -5
  90. data/tracks/ruby/exercises/run-length-encoding/.meta/.version +1 -1
  91. data/tracks/ruby/exercises/run-length-encoding/example.rb +1 -1
  92. data/tracks/ruby/exercises/run-length-encoding/example.tt +6 -3
  93. data/tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb +70 -28
  94. data/tracks/ruby/exercises/say/example.tt +7 -5
  95. data/tracks/ruby/exercises/say/say_test.rb +3 -2
  96. data/tracks/ruby/exercises/sieve/example.tt +4 -1
  97. data/tracks/ruby/exercises/sieve/sieve_test.rb +1 -3
  98. data/tracks/ruby/exercises/tournament/example.tt +4 -1
  99. data/tracks/ruby/exercises/tournament/tournament_test.rb +1 -2
  100. data/tracks/ruby/exercises/transpose/example.tt +5 -2
  101. data/tracks/ruby/exercises/transpose/transpose_test.rb +1 -2
  102. data/tracks/ruby/exercises/triangle/example.tt +5 -3
  103. data/tracks/ruby/exercises/triangle/triangle_test.rb +1 -3
  104. data/tracks/ruby/exercises/two-bucket/example.tt +7 -4
  105. data/tracks/ruby/exercises/two-bucket/two_bucket_test.rb +9 -9
  106. data/tracks/ruby/exercises/word-count/example.tt +6 -4
  107. data/tracks/ruby/exercises/word-count/word_count_test.rb +2 -3
  108. data/tracks/ruby/exercises/wordy/example.tt +5 -3
  109. data/tracks/ruby/exercises/wordy/wordy_test.rb +2 -1
  110. data/tracks/ruby/lib/acronym_cases.rb +3 -15
  111. data/tracks/ruby/lib/all_your_base_cases.rb +22 -54
  112. data/tracks/ruby/lib/alphametics_cases.rb +12 -27
  113. data/tracks/ruby/lib/anagram_cases.rb +7 -15
  114. data/tracks/ruby/lib/beer_song_cases.rb +7 -24
  115. data/tracks/ruby/lib/binary_cases.rb +5 -18
  116. data/tracks/ruby/lib/bowling_cases.rb +24 -24
  117. data/tracks/ruby/lib/bracket_push_cases.rb +6 -21
  118. data/tracks/ruby/lib/clock_cases.rb +6 -25
  119. data/tracks/ruby/lib/connect_cases.rb +2 -20
  120. data/tracks/ruby/lib/custom_set_cases.rb +14 -35
  121. data/tracks/ruby/lib/difference_of_squares_cases.rb +5 -26
  122. data/tracks/ruby/lib/dominoes_cases.rb +2 -11
  123. data/tracks/ruby/lib/generator/case_values.rb +25 -0
  124. data/tracks/ruby/lib/generator/exercise_cases.rb +11 -0
  125. data/tracks/ruby/lib/generator/files/track_files.rb +7 -2
  126. data/tracks/ruby/lib/generator/template_values.rb +12 -7
  127. data/tracks/ruby/lib/gigasecond_cases.rb +4 -18
  128. data/tracks/ruby/lib/grains_cases.rb +11 -38
  129. data/tracks/ruby/lib/hamming_cases.rb +0 -6
  130. data/tracks/ruby/lib/hello_world_cases.rb +2 -14
  131. data/tracks/ruby/lib/isogram_cases.rb +8 -16
  132. data/tracks/ruby/lib/largest_series_product_cases.rb +10 -16
  133. data/tracks/ruby/lib/leap_cases.rb +3 -16
  134. data/tracks/ruby/lib/luhn_cases.rb +0 -6
  135. data/tracks/ruby/lib/nth_prime_cases.rb +11 -13
  136. data/tracks/ruby/lib/ocr_numbers_cases.rb +0 -5
  137. data/tracks/ruby/lib/pangram_cases.rb +2 -19
  138. data/tracks/ruby/lib/pig_latin_cases.rb +0 -5
  139. data/tracks/ruby/lib/queen_attack_cases.rb +14 -37
  140. data/tracks/ruby/lib/raindrops_cases.rb +3 -15
  141. data/tracks/ruby/lib/rna_transcription_cases.rb +2 -14
  142. data/tracks/ruby/lib/roman_numerals_cases.rb +7 -10
  143. data/tracks/ruby/lib/run_length_encoding_cases.rb +4 -25
  144. data/tracks/ruby/lib/say_cases.rb +3 -14
  145. data/tracks/ruby/lib/sieve_cases.rb +1 -15
  146. data/tracks/ruby/lib/tournament_cases.rb +1 -14
  147. data/tracks/ruby/lib/transpose_cases.rb +1 -14
  148. data/tracks/ruby/lib/triangle_cases.rb +8 -27
  149. data/tracks/ruby/lib/two_bucket_cases.rb +7 -17
  150. data/tracks/ruby/lib/word_count_cases.rb +1 -13
  151. data/tracks/ruby/lib/wordy_cases.rb +4 -27
  152. data/tracks/ruby/test/fixtures/metadata/exercises/complex/canonical-data.json +45 -0
  153. data/tracks/ruby/test/fixtures/xruby/lib/beta_cases.rb +7 -0
  154. data/tracks/ruby/test/generator/case_values_test.rb +30 -0
  155. data/tracks/ruby/test/generator/files/track_files_test.rb +2 -3
  156. data/tracks/ruby/test/generator/template_values_test.rb +44 -3
  157. data/tracks/ruby/test/wordy_cases_test.rb +4 -65
  158. metadata +14 -4
  159. data/tracks/java/exercises/isogram/src/test/java/IsogramTest.java +0 -80
  160. data/tracks/ruby/test/grains_cases_test.rb +0 -103
@@ -1,53 +1,26 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class GrainsCase < OpenStruct
4
- def test_name
5
- 'test_%s' % description.downcase.tr_s(' ', '_')
6
- end
3
+ class GrainsCase < ExerciseCase
7
4
 
8
5
  def workload
9
- fail NotImplementedError
10
- end
11
-
12
- def skipped
13
- index.zero? ? '# skip' : 'skip'
6
+ send("#{property}_workload")
14
7
  end
15
8
 
16
9
  private
17
10
 
18
- def underscore_format(number)
19
- number.to_s.reverse.gsub(/...(?=.)/, '\&_').reverse
11
+ def square_workload
12
+ if raises_error?
13
+ "assert_raises(ArgumentError) { Grains.square(#{input}) }"
14
+ else
15
+ "assert_equal #{underscore_format(expected)}, Grains.square(#{input})"
16
+ end
20
17
  end
21
- end
22
18
 
23
- class GrainsCase::SquareMethod < GrainsCase
24
- def workload
25
- return error_assertion if expected < 0
26
-
27
- "assert_equal #{underscore_format(expected)}, Grains.square(#{input})"
28
- end
29
-
30
- private
31
-
32
- def error_assertion
33
- "assert_raises(ArgumentError) { Grains.square(#{input}) }"
34
- end
35
- end
36
-
37
- class GrainsCase::TotalMethod < GrainsCase
38
- def workload
19
+ def total_workload
39
20
  "assert_equal #{underscore_format(expected)}, Grains.total"
40
21
  end
41
- end
42
-
43
- GrainsCases = proc do |data|
44
- data = JSON.parse(data)
45
22
 
46
- cases = data['square']['cases'].map.with_index do |row, i|
47
- GrainsCase::SquareMethod.new(row.merge('index' => i))
23
+ def underscore_format(number)
24
+ number.to_s.reverse.gsub(/...(?=.)/, '\&_').reverse
48
25
  end
49
-
50
- cases << GrainsCase::TotalMethod.new(
51
- data['total'].merge('index' => cases.size)
52
- )
53
26
  end
@@ -13,9 +13,3 @@ class HammingCase < ExerciseCase
13
13
  "Hamming.compute('#{strand1}', '#{strand2}')"
14
14
  end
15
15
  end
16
-
17
- HammingCases = proc do |data|
18
- JSON.parse(data)['cases'].map.with_index do |row, i|
19
- HammingCase.new(row.merge('index' => i))
20
- end
21
- end
@@ -1,21 +1,9 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class HelloWorldCase < OpenStruct
4
- def test_name
5
- 'test_%s' % property.gsub(/[ -]/, '_')
6
- end
3
+ class HelloWorldCase < ExerciseCase
7
4
 
8
5
  def workload
9
- "assert_equal #{expected.inspect}, HelloWorld.hello"
6
+ assert_equal { "HelloWorld.hello" }
10
7
  end
11
8
 
12
- def skipped
13
- index.zero? ? '# skip' : 'skip'
14
- end
15
- end
16
-
17
- HelloWorldCases = proc do |data|
18
- JSON.parse(data)['cases'].map.with_index do |row, i|
19
- HelloWorldCase.new(row.merge('index' => i))
20
- end
21
9
  end
@@ -1,22 +1,14 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class IsogramCase < OpenStruct
3
+ class IsogramCase < ExerciseCase
4
4
 
5
- def name
6
- format('test_%s', description.downcase.gsub(/[ -]/, '_'))
5
+ def workload
6
+ indent_lines(
7
+ [
8
+ "string = #{input.inspect}",
9
+ "#{assert} Isogram.is_isogram?(string)"
10
+ ], 4
11
+ )
7
12
  end
8
13
 
9
- def assertion
10
- expected ? 'assert' : 'refute'
11
- end
12
-
13
- def skip
14
- index.zero? ? '# skip' : 'skip'
15
- end
16
- end
17
-
18
- IsogramCases = proc do |data|
19
- JSON.parse(data)['cases'].map.with_index do |row, i|
20
- IsogramCase.new(row.merge('index' => i))
21
- end
22
14
  end
@@ -1,25 +1,19 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class LargestSeriesProductCase < OpenStruct
4
- def name
5
- 'test_%s' % description.tr('()', '').tr(' -', '_').downcase
6
- end
3
+ class LargestSeriesProductCase < ExerciseCase
7
4
 
8
- def do
9
- "Series.new('#{digits}').largest_product(#{span})"
5
+ def workload
6
+ if raises_error?
7
+ assert_raises(ArgumentError) { test_case }
8
+ else
9
+ assert_equal { test_case }
10
+ end
10
11
  end
11
12
 
12
- def raises_error?
13
- expected.to_i == -1
14
- end
13
+ private
15
14
 
16
- def skipped?
17
- index > 0
15
+ def test_case
16
+ "Series.new('#{digits}').largest_product(#{span})"
18
17
  end
19
- end
20
18
 
21
- LargestSeriesProductCases = proc do |data|
22
- JSON.parse(data)['cases'].map.with_index do |row, i|
23
- LargestSeriesProductCase.new(row.merge('index' => i))
24
- end
25
19
  end
@@ -1,25 +1,12 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class LeapCase < OpenStruct
4
- def name
5
- 'test_%s' % description.downcase.gsub(/[ -]/, '_')
6
- end
7
-
8
- def do
9
- "Year.leap?(#{input})"
10
- end
3
+ class LeapCase < ExerciseCase
11
4
 
12
- def skip
13
- index.zero? ? '# skip' : 'skip'
5
+ def workload
6
+ "#{assert} Year.leap?(#{input.inspect})"
14
7
  end
15
8
 
16
9
  def failure_message
17
10
  "Expected '#{expected}', #{input} is #{expected ? '' : 'not '}a leap year."
18
11
  end
19
12
  end
20
-
21
- LeapCases = proc do |data|
22
- JSON.parse(data)['cases'].map.with_index do |row, i|
23
- LeapCase.new(row.merge('index' => i))
24
- end
25
- end
@@ -3,9 +3,3 @@ class LuhnCase < ExerciseCase
3
3
  "#{assert} Luhn.valid?(#{input.inspect})"
4
4
  end
5
5
  end
6
-
7
- LuhnCases = proc do |data|
8
- JSON.parse(data)['cases'].map.with_index do |row, i|
9
- LuhnCase.new(row.merge('index' => i))
10
- end
11
- end
@@ -1,11 +1,18 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class NthPrimeCase < OpenStruct
4
- def name
5
- 'test_%s' % description.downcase.gsub(/[ -]/, '_')
3
+ class NthPrimeCase < ExerciseCase
4
+
5
+ def workload
6
+ if raises_error?
7
+ assert_raises(ArgumentError) { test_case }
8
+ else
9
+ assert_equal { test_case }
10
+ end
6
11
  end
7
12
 
8
- def actual
13
+ private
14
+
15
+ def test_case
9
16
  "Prime.nth(#{input})"
10
17
  end
11
18
 
@@ -13,13 +20,4 @@ class NthPrimeCase < OpenStruct
13
20
  expected == false
14
21
  end
15
22
 
16
- def skipped?
17
- index > 0
18
- end
19
- end
20
-
21
- NthPrimeCases = proc do |data|
22
- JSON.parse(data)['cases'].map.with_index do |row, i|
23
- NthPrimeCase.new(row.merge('index' => i))
24
- end
25
23
  end
@@ -13,8 +13,3 @@ class OcrNumbersCase < ExerciseCase
13
13
  %Q(OcrNumbers.convert(#{(input.join("\n")).inspect}))
14
14
  end
15
15
  end
16
-
17
- OcrNumbersCases = proc do |data|
18
- JSON.parse(data)['cases'].flat_map {|section| section['cases'] }.
19
- map.with_index {|test, index| OcrNumbersCase.new(test.merge('index' => index)) }
20
- end
@@ -1,15 +1,11 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class PangramCase < OpenStruct
4
- def name
5
- 'test_%s' % description.downcase.tr_s(" -'", '_').sub(/_$/, '')
6
- end
7
-
3
+ class PangramCase < ExerciseCase
8
4
  def workload
9
5
  [
10
6
  "phrase = '#{input}'",
11
7
  " result = Pangram.pangram?(phrase)",
12
- " #{assertion} result, \"#{message}\""
8
+ " #{assert} result, \"#{message}\""
13
9
  ].join("\n")
14
10
  end
15
11
 
@@ -21,17 +17,4 @@ class PangramCase < OpenStruct
21
17
  expected ? 'IS' : 'is NOT'
22
18
  end
23
19
 
24
- def assertion
25
- expected ? 'assert' : 'refute'
26
- end
27
-
28
- def skipped?
29
- index.zero? ? '# skip' : 'skip'
30
- end
31
- end
32
-
33
- PangramCases = proc do |data|
34
- JSON.parse(data)['cases'].map.with_index do |row, i|
35
- PangramCase.new(row.merge('index' => i))
36
- end
37
20
  end
@@ -3,8 +3,3 @@ class PigLatinCase < ExerciseCase
3
3
  assert_equal { "PigLatin.translate(#{input.inspect})" }
4
4
  end
5
5
  end
6
-
7
- PigLatinCases = proc do |data|
8
- JSON.parse(data)['cases'].flat_map {|section| section['cases'] }. # extract all the cases into a single array
9
- map.with_index { |test, index| PigLatinCase.new(test.merge('index' => index)) }
10
- end
@@ -1,56 +1,33 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class QueenCase < OpenStruct
4
- def test_name
5
- "test_#{description.gsub(/[ ]/, '_')}"
6
- end
3
+ class QueenAttackCase < ExerciseCase
7
4
 
8
- def skipped
9
- index.zero? ? '# skip' : 'skip'
5
+ def workload
6
+ property == 'create' ? create_workload : attack_workload
10
7
  end
11
8
 
12
- def parse_position queen
13
- queen['position'].delete('() ').split(',').map{|i| i.to_i}
14
- end
15
- end
9
+ private
16
10
 
17
- class QueenAttackCase < QueenCase
18
- def workload
19
- """queens = Queens.new white: #{parse_position white_queen}, black: #{parse_position black_queen}
20
- #{assertion} queens.attack?"""
11
+ def attack_workload
12
+ """queens = Queens.new(white: #{parse_position white_queen}, black: #{parse_position black_queen})
13
+ #{assert} queens.attack?"""
21
14
  end
22
15
 
23
- def assertion
24
- expected ? 'assert' : 'refute'
16
+ def parse_position queen
17
+ queen['position'].delete('() ').split(',').map{|i| i.to_i}
25
18
  end
26
- end
27
19
 
28
- class QueenCreateCase < QueenCase
29
- def workload
30
- expected == -1 ? exception : input
20
+ def create_workload
21
+ raises_error? ? exception : "#{assert} #{test_case}"
31
22
  end
32
23
 
33
- def input
34
- "Queens.new white: #{parse_position queen}"
24
+ def test_case
25
+ "Queens.new(white: #{parse_position queen})"
35
26
  end
36
27
 
37
28
  def exception
38
29
  """assert_raises ArgumentError do
39
- #{input}
30
+ #{test_case}
40
31
  end"""
41
32
  end
42
33
  end
43
-
44
- TYPES = [
45
- ['create', QueenCreateCase],
46
- ['can_attack', QueenAttackCase]
47
- ]
48
-
49
- QueenAttackCases = proc do |data|
50
- json = JSON.parse data
51
- TYPES.flat_map.with_index do |(type, caseClass), i|
52
- json[type]['cases'].map.with_index do |row, j|
53
- caseClass.new row.merge('index' => i+j)
54
- end
55
- end
56
- end
@@ -1,21 +1,9 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class RaindropsCase < OpenStruct
4
- def name
5
- 'test_%s' % number
6
- end
3
+ class RaindropsCase < ExerciseCase
7
4
 
8
- def do
9
- "Raindrops.convert(#{number})"
5
+ def workload
6
+ assert_equal { "Raindrops.convert(#{number})" }
10
7
  end
11
8
 
12
- def skipped?
13
- index > 0
14
- end
15
- end
16
-
17
- RaindropsCases = proc do |data|
18
- JSON.parse(data)['cases'].map.with_index do |row, i|
19
- RaindropsCase.new(row.merge('index' => i))
20
- end
21
9
  end
@@ -1,21 +1,9 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class RnaTranscriptionCase < OpenStruct
4
- def test_name
5
- 'test_%s' % description.gsub(/[ -]/, '_')
6
- end
3
+ class RnaTranscriptionCase < ExerciseCase
7
4
 
8
5
  def workload
9
- "Complement.of_dna('#{dna}')"
6
+ "assert_equal '#{expected}', Complement.of_dna('#{dna}')"
10
7
  end
11
8
 
12
- def skipped
13
- index.zero? ? '# skip' : 'skip'
14
- end
15
- end
16
-
17
- RnaTranscriptionCases = proc do |data|
18
- JSON.parse(data)['cases'].map.with_index do |row, i|
19
- RnaTranscriptionCase.new(row.merge('index' => i))
20
- end
21
9
  end
@@ -1,21 +1,18 @@
1
1
  require 'exercise_cases'
2
2
 
3
- class RomanNumeralsCase < OpenStruct
3
+ class RomanNumeralsCase < ExerciseCase
4
4
  def name
5
5
  'test_%s' % number.to_s
6
6
  end
7
7
 
8
- def do
9
- '%s.to_roman' % number.to_s
8
+ def workload
9
+ "assert_equal '#{expected}', #{actual}"
10
10
  end
11
11
 
12
- def skipped?
13
- index > 0
14
- end
15
- end
12
+ private
16
13
 
17
- RomanNumeralsCases = proc do |data|
18
- JSON.parse(data)['cases'].map.with_index do |row, i|
19
- RomanNumeralsCase.new(row.merge('index' => i))
14
+ def actual
15
+ '%s.to_roman' % number.to_s
20
16
  end
17
+
21
18
  end