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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/elixir/config.json +17 -0
- data/tracks/elixir/exercises/matrix/example.exs +63 -0
- data/tracks/elixir/exercises/matrix/matrix.exs +48 -0
- data/tracks/elixir/exercises/matrix/matrix_test.exs +58 -0
- data/tracks/elixir/exercises/twelve-days/example.exs +53 -0
- data/tracks/elixir/exercises/twelve-days/twelve_days.exs +25 -0
- data/tracks/elixir/exercises/twelve-days/twelve_days_test.exs +86 -0
- data/tracks/go/exercises/change/.meta/gen.go +1 -3
- data/tracks/go/exercises/change/cases_test.go +1 -0
- data/tracks/go/exercises/forth/example.go +1 -1
- data/tracks/go/exercises/raindrops/.meta/gen.go +1 -3
- data/tracks/go/exercises/raindrops/cases_test.go +5 -1
- data/tracks/go/exercises/raindrops/example.go +1 -1
- data/tracks/go/exercises/raindrops/raindrops.go +1 -1
- data/tracks/go/exercises/raindrops/raindrops_test.go +1 -1
- data/tracks/java/config.json +5 -5
- data/tracks/java/exercises/isogram/src/example/java/IsogramChecker.java +23 -27
- data/tracks/java/exercises/isogram/src/test/java/IsogramCheckerTest.java +77 -0
- data/tracks/javascript/config.json +9 -0
- data/tracks/javascript/exercises/proverb/example.js +36 -0
- data/tracks/javascript/exercises/proverb/proverb.spec.js +78 -0
- data/tracks/ruby/README.md +0 -33
- data/tracks/ruby/exercises/acronym/.meta/.version +1 -1
- data/tracks/ruby/exercises/acronym/acronym_test.rb +14 -9
- data/tracks/ruby/exercises/acronym/example.rb +1 -1
- data/tracks/ruby/exercises/acronym/example.tt +7 -4
- data/tracks/ruby/exercises/all-your-base/all_your_base_test.rb +1 -1
- data/tracks/ruby/exercises/all-your-base/example.tt +4 -3
- data/tracks/ruby/exercises/alphametics/alphametics_test.rb +2 -1
- data/tracks/ruby/exercises/alphametics/example.tt +2 -1
- data/tracks/ruby/exercises/anagram/anagram_test.rb +35 -20
- data/tracks/ruby/exercises/anagram/example.rb +1 -1
- data/tracks/ruby/exercises/anagram/example.tt +5 -2
- data/tracks/ruby/exercises/beer-song/beer_song_test.rb +1 -0
- data/tracks/ruby/exercises/beer-song/example.tt +6 -4
- data/tracks/ruby/exercises/binary/binary_test.rb +3 -2
- data/tracks/ruby/exercises/binary/example.tt +5 -2
- data/tracks/ruby/exercises/bowling/bowling_test.rb +39 -40
- data/tracks/ruby/exercises/bowling/example.tt +2 -2
- data/tracks/ruby/exercises/bracket-push/.meta/.version +1 -1
- data/tracks/ruby/exercises/bracket-push/bracket_push_test.rb +7 -3
- data/tracks/ruby/exercises/bracket-push/example.rb +1 -1
- data/tracks/ruby/exercises/bracket-push/example.tt +5 -2
- data/tracks/ruby/exercises/clock/clock_test.rb +40 -41
- data/tracks/ruby/exercises/clock/example.tt +5 -2
- data/tracks/ruby/exercises/connect/.meta/.version +1 -1
- data/tracks/ruby/exercises/connect/connect_test.rb +20 -3
- data/tracks/ruby/exercises/connect/example.rb +1 -1
- data/tracks/ruby/exercises/connect/example.tt +3 -1
- data/tracks/ruby/exercises/custom-set/custom_set_test.rb +1 -2
- data/tracks/ruby/exercises/custom-set/example.tt +5 -2
- data/tracks/ruby/exercises/difference-of-squares/difference_of_squares_test.rb +6 -5
- data/tracks/ruby/exercises/difference-of-squares/example.tt +8 -4
- data/tracks/ruby/exercises/dominoes/dominoes_test.rb +1 -1
- data/tracks/ruby/exercises/dominoes/example.tt +1 -1
- data/tracks/ruby/exercises/gigasecond/.meta/.version +1 -1
- data/tracks/ruby/exercises/gigasecond/example.rb +1 -1
- data/tracks/ruby/exercises/gigasecond/example.tt +7 -5
- data/tracks/ruby/exercises/gigasecond/gigasecond_test.rb +11 -16
- data/tracks/ruby/exercises/grains/example.tt +5 -3
- data/tracks/ruby/exercises/grains/grains_test.rb +2 -1
- data/tracks/ruby/exercises/hello-world/example.tt +1 -1
- data/tracks/ruby/exercises/hello-world/hello_world_test.rb +1 -1
- data/tracks/ruby/exercises/isogram/.meta/.version +1 -1
- data/tracks/ruby/exercises/isogram/example.rb +1 -1
- data/tracks/ruby/exercises/isogram/example.tt +6 -4
- data/tracks/ruby/exercises/isogram/isogram_test.rb +18 -10
- data/tracks/ruby/exercises/largest-series-product/.meta/.version +1 -1
- data/tracks/ruby/exercises/largest-series-product/example.rb +1 -1
- data/tracks/ruby/exercises/largest-series-product/example.tt +7 -5
- data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +11 -21
- data/tracks/ruby/exercises/leap/.meta/.version +1 -1
- data/tracks/ruby/exercises/leap/example.rb +1 -1
- data/tracks/ruby/exercises/leap/example.tt +6 -4
- data/tracks/ruby/exercises/leap/leap_test.rb +11 -25
- data/tracks/ruby/exercises/nth-prime/example.tt +7 -5
- data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +2 -3
- data/tracks/ruby/exercises/pangram/example.tt +5 -3
- data/tracks/ruby/exercises/pangram/pangram_test.rb +2 -1
- data/tracks/ruby/exercises/queen-attack/example.tt +2 -2
- data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +14 -15
- data/tracks/ruby/exercises/raindrops/example.tt +7 -4
- data/tracks/ruby/exercises/raindrops/raindrops_test.rb +38 -38
- data/tracks/ruby/exercises/rna-transcription/example.tt +6 -3
- data/tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb +4 -5
- data/tracks/ruby/exercises/roman-numerals/example.tt +7 -4
- data/tracks/ruby/exercises/roman-numerals/roman_numerals_test.rb +5 -5
- data/tracks/ruby/exercises/run-length-encoding/.meta/.version +1 -1
- data/tracks/ruby/exercises/run-length-encoding/example.rb +1 -1
- data/tracks/ruby/exercises/run-length-encoding/example.tt +6 -3
- data/tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb +70 -28
- data/tracks/ruby/exercises/say/example.tt +7 -5
- data/tracks/ruby/exercises/say/say_test.rb +3 -2
- data/tracks/ruby/exercises/sieve/example.tt +4 -1
- data/tracks/ruby/exercises/sieve/sieve_test.rb +1 -3
- data/tracks/ruby/exercises/tournament/example.tt +4 -1
- data/tracks/ruby/exercises/tournament/tournament_test.rb +1 -2
- data/tracks/ruby/exercises/transpose/example.tt +5 -2
- data/tracks/ruby/exercises/transpose/transpose_test.rb +1 -2
- data/tracks/ruby/exercises/triangle/example.tt +5 -3
- data/tracks/ruby/exercises/triangle/triangle_test.rb +1 -3
- data/tracks/ruby/exercises/two-bucket/example.tt +7 -4
- data/tracks/ruby/exercises/two-bucket/two_bucket_test.rb +9 -9
- data/tracks/ruby/exercises/word-count/example.tt +6 -4
- data/tracks/ruby/exercises/word-count/word_count_test.rb +2 -3
- data/tracks/ruby/exercises/wordy/example.tt +5 -3
- data/tracks/ruby/exercises/wordy/wordy_test.rb +2 -1
- data/tracks/ruby/lib/acronym_cases.rb +3 -15
- data/tracks/ruby/lib/all_your_base_cases.rb +22 -54
- data/tracks/ruby/lib/alphametics_cases.rb +12 -27
- data/tracks/ruby/lib/anagram_cases.rb +7 -15
- data/tracks/ruby/lib/beer_song_cases.rb +7 -24
- data/tracks/ruby/lib/binary_cases.rb +5 -18
- data/tracks/ruby/lib/bowling_cases.rb +24 -24
- data/tracks/ruby/lib/bracket_push_cases.rb +6 -21
- data/tracks/ruby/lib/clock_cases.rb +6 -25
- data/tracks/ruby/lib/connect_cases.rb +2 -20
- data/tracks/ruby/lib/custom_set_cases.rb +14 -35
- data/tracks/ruby/lib/difference_of_squares_cases.rb +5 -26
- data/tracks/ruby/lib/dominoes_cases.rb +2 -11
- data/tracks/ruby/lib/generator/case_values.rb +25 -0
- data/tracks/ruby/lib/generator/exercise_cases.rb +11 -0
- data/tracks/ruby/lib/generator/files/track_files.rb +7 -2
- data/tracks/ruby/lib/generator/template_values.rb +12 -7
- data/tracks/ruby/lib/gigasecond_cases.rb +4 -18
- data/tracks/ruby/lib/grains_cases.rb +11 -38
- data/tracks/ruby/lib/hamming_cases.rb +0 -6
- data/tracks/ruby/lib/hello_world_cases.rb +2 -14
- data/tracks/ruby/lib/isogram_cases.rb +8 -16
- data/tracks/ruby/lib/largest_series_product_cases.rb +10 -16
- data/tracks/ruby/lib/leap_cases.rb +3 -16
- data/tracks/ruby/lib/luhn_cases.rb +0 -6
- data/tracks/ruby/lib/nth_prime_cases.rb +11 -13
- data/tracks/ruby/lib/ocr_numbers_cases.rb +0 -5
- data/tracks/ruby/lib/pangram_cases.rb +2 -19
- data/tracks/ruby/lib/pig_latin_cases.rb +0 -5
- data/tracks/ruby/lib/queen_attack_cases.rb +14 -37
- data/tracks/ruby/lib/raindrops_cases.rb +3 -15
- data/tracks/ruby/lib/rna_transcription_cases.rb +2 -14
- data/tracks/ruby/lib/roman_numerals_cases.rb +7 -10
- data/tracks/ruby/lib/run_length_encoding_cases.rb +4 -25
- data/tracks/ruby/lib/say_cases.rb +3 -14
- data/tracks/ruby/lib/sieve_cases.rb +1 -15
- data/tracks/ruby/lib/tournament_cases.rb +1 -14
- data/tracks/ruby/lib/transpose_cases.rb +1 -14
- data/tracks/ruby/lib/triangle_cases.rb +8 -27
- data/tracks/ruby/lib/two_bucket_cases.rb +7 -17
- data/tracks/ruby/lib/word_count_cases.rb +1 -13
- data/tracks/ruby/lib/wordy_cases.rb +4 -27
- data/tracks/ruby/test/fixtures/metadata/exercises/complex/canonical-data.json +45 -0
- data/tracks/ruby/test/fixtures/xruby/lib/beta_cases.rb +7 -0
- data/tracks/ruby/test/generator/case_values_test.rb +30 -0
- data/tracks/ruby/test/generator/files/track_files_test.rb +2 -3
- data/tracks/ruby/test/generator/template_values_test.rb +44 -3
- data/tracks/ruby/test/wordy_cases_test.rb +4 -65
- metadata +14 -4
- data/tracks/java/exercises/isogram/src/test/java/IsogramTest.java +0 -80
- data/tracks/ruby/test/grains_cases_test.rb +0 -103
@@ -1,53 +1,26 @@
|
|
1
1
|
require 'exercise_cases'
|
2
2
|
|
3
|
-
class GrainsCase <
|
4
|
-
def test_name
|
5
|
-
'test_%s' % description.downcase.tr_s(' ', '_')
|
6
|
-
end
|
3
|
+
class GrainsCase < ExerciseCase
|
7
4
|
|
8
5
|
def workload
|
9
|
-
|
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
|
19
|
-
|
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
|
-
|
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
|
-
|
47
|
-
|
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
|
@@ -1,21 +1,9 @@
|
|
1
1
|
require 'exercise_cases'
|
2
2
|
|
3
|
-
class HelloWorldCase <
|
4
|
-
def test_name
|
5
|
-
'test_%s' % property.gsub(/[ -]/, '_')
|
6
|
-
end
|
3
|
+
class HelloWorldCase < ExerciseCase
|
7
4
|
|
8
5
|
def workload
|
9
|
-
|
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 <
|
3
|
+
class IsogramCase < ExerciseCase
|
4
4
|
|
5
|
-
def
|
6
|
-
|
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 <
|
4
|
-
def name
|
5
|
-
'test_%s' % description.tr('()', '').tr(' -', '_').downcase
|
6
|
-
end
|
3
|
+
class LargestSeriesProductCase < ExerciseCase
|
7
4
|
|
8
|
-
def
|
9
|
-
|
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
|
-
|
13
|
-
expected.to_i == -1
|
14
|
-
end
|
13
|
+
private
|
15
14
|
|
16
|
-
def
|
17
|
-
|
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 <
|
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
|
13
|
-
|
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
|
@@ -1,11 +1,18 @@
|
|
1
1
|
require 'exercise_cases'
|
2
2
|
|
3
|
-
class NthPrimeCase <
|
4
|
-
|
5
|
-
|
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
|
-
|
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 <
|
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
|
-
" #{
|
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
|
4
|
-
def test_name
|
5
|
-
"test_#{description.gsub(/[ ]/, '_')}"
|
6
|
-
end
|
3
|
+
class QueenAttackCase < ExerciseCase
|
7
4
|
|
8
|
-
def
|
9
|
-
|
5
|
+
def workload
|
6
|
+
property == 'create' ? create_workload : attack_workload
|
10
7
|
end
|
11
8
|
|
12
|
-
|
13
|
-
queen['position'].delete('() ').split(',').map{|i| i.to_i}
|
14
|
-
end
|
15
|
-
end
|
9
|
+
private
|
16
10
|
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
24
|
-
|
16
|
+
def parse_position queen
|
17
|
+
queen['position'].delete('() ').split(',').map{|i| i.to_i}
|
25
18
|
end
|
26
|
-
end
|
27
19
|
|
28
|
-
|
29
|
-
|
30
|
-
expected == -1 ? exception : input
|
20
|
+
def create_workload
|
21
|
+
raises_error? ? exception : "#{assert} #{test_case}"
|
31
22
|
end
|
32
23
|
|
33
|
-
def
|
34
|
-
"Queens.new
|
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
|
-
#{
|
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 <
|
4
|
-
def name
|
5
|
-
'test_%s' % number
|
6
|
-
end
|
3
|
+
class RaindropsCase < ExerciseCase
|
7
4
|
|
8
|
-
def
|
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 <
|
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 <
|
3
|
+
class RomanNumeralsCase < ExerciseCase
|
4
4
|
def name
|
5
5
|
'test_%s' % number.to_s
|
6
6
|
end
|
7
7
|
|
8
|
-
def
|
9
|
-
'
|
8
|
+
def workload
|
9
|
+
"assert_equal '#{expected}', #{actual}"
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
index > 0
|
14
|
-
end
|
15
|
-
end
|
12
|
+
private
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
RomanNumeralsCase.new(row.merge('index' => i))
|
14
|
+
def actual
|
15
|
+
'%s.to_roman' % number.to_s
|
20
16
|
end
|
17
|
+
|
21
18
|
end
|