trackler 2.1.0.2 → 2.1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/common/exercises/phone-number/canonical-data.json +28 -10
- data/common/exercises/phone-number/description.md +19 -13
- data/lib/trackler/version.rb +1 -1
- data/tracks/go/exercises/bob/.meta/gen.go +1 -3
- data/tracks/go/exercises/bob/bob.go +1 -1
- data/tracks/go/exercises/bob/bob_test.go +1 -1
- data/tracks/go/exercises/bob/cases_test.go +8 -12
- data/tracks/go/exercises/bob/example.go +1 -1
- data/tracks/go/exercises/largest-series-product/.meta/gen.go +1 -3
- data/tracks/go/exercises/largest-series-product/cases_test.go +3 -4
- data/tracks/go/exercises/largest-series-product/example.go +1 -1
- data/tracks/go/exercises/largest-series-product/largest_series_product_test.go +1 -1
- data/tracks/java/exercises/accumulate/src/test/java/AccumulateTest.java +4 -4
- data/tracks/java/exercises/acronym/src/test/java/AcronymTest.java +7 -7
- data/tracks/java/exercises/all-your-base/src/test/java/BaseConverterTest.java +19 -19
- data/tracks/java/exercises/allergies/src/test/java/AllergiesTest.java +18 -18
- data/tracks/java/exercises/anagram/src/test/java/AnagramTest.java +15 -15
- data/tracks/lisp/docs/INSTALLATION.md +7 -13
- data/tracks/python/exercises/bracket-push/bracket_push_test.py +4 -1
- data/tracks/python/exercises/isogram/isogram_test.py +5 -1
- data/tracks/ruby/README.md +14 -40
- data/tracks/ruby/exercises/binary/binary_test.rb +0 -1
- data/tracks/ruby/exercises/bracket-push/bracket_push_test.rb +1 -1
- data/tracks/ruby/exercises/grains/grains_test.rb +2 -0
- data/tracks/ruby/exercises/isogram/isogram_test.rb +0 -1
- data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +2 -1
- data/tracks/ruby/exercises/luhn/luhn_test.rb +2 -0
- data/tracks/ruby/exercises/pangram/pangram_test.rb +0 -1
- data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +1 -1
- data/tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb +1 -1
- data/tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb +0 -1
- data/tracks/ruby/exercises/say/say_test.rb +2 -0
- data/tracks/ruby/exercises/word-count/word_count_test.rb +1 -1
- data/tracks/ruby/exercises/wordy/wordy_test.rb +2 -0
- data/tracks/ruby/lib/acronym_cases.rb +1 -1
- data/tracks/ruby/lib/all_your_base_cases.rb +1 -1
- data/tracks/ruby/lib/alphametics_cases.rb +1 -1
- data/tracks/ruby/lib/anagram_cases.rb +1 -1
- data/tracks/ruby/lib/beer_song_cases.rb +1 -1
- data/tracks/ruby/lib/binary_cases.rb +1 -1
- data/tracks/ruby/lib/bowling_cases.rb +1 -1
- data/tracks/ruby/lib/bracket_push_cases.rb +1 -1
- data/tracks/ruby/lib/clock_cases.rb +1 -1
- data/tracks/ruby/lib/connect_cases.rb +1 -1
- data/tracks/ruby/lib/custom_set_cases.rb +1 -1
- data/tracks/ruby/lib/difference_of_squares_cases.rb +1 -1
- data/tracks/ruby/lib/dominoes_cases.rb +1 -1
- data/tracks/ruby/lib/generator/files/generator_cases.rb +29 -0
- data/tracks/ruby/lib/generator/files/track_files.rb +11 -27
- data/tracks/ruby/lib/generator/template_values.rb +8 -2
- data/tracks/ruby/{exercises/anagram/example.tt → lib/generator/test_template.erb} +2 -2
- data/tracks/ruby/lib/gigasecond_cases.rb +1 -0
- data/tracks/ruby/lib/grains_cases.rb +1 -1
- data/tracks/ruby/lib/hamming_cases.rb +2 -0
- data/tracks/ruby/lib/hello_world_cases.rb +1 -1
- data/tracks/ruby/lib/isogram_cases.rb +1 -1
- data/tracks/ruby/lib/largest_series_product_cases.rb +1 -1
- data/tracks/ruby/lib/leap_cases.rb +1 -1
- data/tracks/ruby/lib/luhn_cases.rb +2 -0
- data/tracks/ruby/lib/nth_prime_cases.rb +1 -1
- data/tracks/ruby/lib/ocr_numbers_cases.rb +2 -0
- data/tracks/ruby/lib/pangram_cases.rb +1 -1
- data/tracks/ruby/lib/pig_latin_cases.rb +2 -0
- data/tracks/ruby/lib/queen_attack_cases.rb +1 -1
- data/tracks/ruby/lib/raindrops_cases.rb +1 -1
- data/tracks/ruby/lib/rna_transcription_cases.rb +1 -1
- data/tracks/ruby/lib/roman_numerals_cases.rb +1 -1
- data/tracks/ruby/lib/run_length_encoding_cases.rb +8 -6
- data/tracks/ruby/lib/say_cases.rb +1 -1
- data/tracks/ruby/lib/sieve_cases.rb +10 -3
- data/tracks/ruby/lib/tournament_cases.rb +1 -1
- data/tracks/ruby/lib/transpose_cases.rb +1 -1
- data/tracks/ruby/lib/triangle_cases.rb +1 -1
- data/tracks/ruby/lib/two_bucket_cases.rb +1 -1
- data/tracks/ruby/lib/word_count_cases.rb +12 -1
- data/tracks/ruby/lib/wordy_cases.rb +1 -1
- data/tracks/ruby/test/fixtures/xruby/lib/beta_cases.rb +1 -1
- data/tracks/ruby/{exercises/acronym/example.tt → test/fixtures/xruby/lib/generator/test_template.erb} +0 -0
- data/tracks/ruby/test/generator/files/generate_cases_test.rb +33 -0
- data/tracks/ruby/test/generator/files/track_files_test.rb +14 -28
- data/tracks/ruby/test/generator/template_values_test.rb +22 -4
- data/tracks/rust/config.json +10 -0
- data/tracks/rust/exercises/run-length-encoding/Cargo.lock +4 -0
- data/tracks/rust/exercises/run-length-encoding/Cargo.toml +6 -0
- data/tracks/rust/exercises/run-length-encoding/example.rs +45 -0
- data/tracks/rust/exercises/run-length-encoding/tests/run-length-encoding.rs +86 -0
- metadata +11 -29
- data/tracks/ruby/exercises/binary/example.tt +0 -22
- data/tracks/ruby/exercises/bracket-push/example.tt +0 -21
- data/tracks/ruby/exercises/clock/example.tt +0 -21
- data/tracks/ruby/exercises/custom-set/example.tt +0 -21
- data/tracks/ruby/exercises/grains/example.tt +0 -19
- data/tracks/ruby/exercises/hamming/example.tt +0 -21
- data/tracks/ruby/exercises/isogram/example.tt +0 -22
- data/tracks/ruby/exercises/largest-series-product/example.tt +0 -20
- data/tracks/ruby/exercises/luhn/example.tt +0 -18
- data/tracks/ruby/exercises/nth-prime/example.tt +0 -21
- data/tracks/ruby/exercises/ocr-numbers/example.tt +0 -21
- data/tracks/ruby/exercises/pangram/example.tt +0 -22
- data/tracks/ruby/exercises/pig-latin/example.tt +0 -21
- data/tracks/ruby/exercises/queen-attack/example.tt +0 -21
- data/tracks/ruby/exercises/raindrops/example.tt +0 -21
- data/tracks/ruby/exercises/rna-transcription/example.tt +0 -21
- data/tracks/ruby/exercises/roman-numerals/example.tt +0 -21
- data/tracks/ruby/exercises/run-length-encoding/example.tt +0 -24
- data/tracks/ruby/exercises/say/example.tt +0 -19
- data/tracks/ruby/exercises/sieve/example.tt +0 -22
- data/tracks/ruby/exercises/triangle/example.tt +0 -21
- data/tracks/ruby/exercises/two-bucket/example.tt +0 -21
- data/tracks/ruby/exercises/word-count/example.tt +0 -23
- data/tracks/ruby/exercises/wordy/example.tt +0 -19
- data/tracks/ruby/lib/exercise_cases.rb +0 -2
@@ -4,7 +4,7 @@ require 'minitest/autorun'
|
|
4
4
|
require_relative 'largest_series_product'
|
5
5
|
|
6
6
|
# Common test data version: e79b832
|
7
|
-
class
|
7
|
+
class LargestSeriesProductTest < Minitest::Test
|
8
8
|
def test_finds_the_largest_product_if_span_equals_length
|
9
9
|
# skip
|
10
10
|
assert_equal 18, Series.new('29').largest_product(2)
|
@@ -98,6 +98,7 @@ class Seriestest < Minitest::Test
|
|
98
98
|
# http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/constants.html
|
99
99
|
|
100
100
|
def test_bookkeeping
|
101
|
+
skip
|
101
102
|
assert_equal 3, BookKeeping::VERSION
|
102
103
|
end
|
103
104
|
end
|
@@ -69,6 +69,7 @@ class LuhnTest < Minitest::Test
|
|
69
69
|
skip
|
70
70
|
assert Luhn.valid?("091")
|
71
71
|
end
|
72
|
+
|
72
73
|
# Problems in exercism evolve over time, as we find better ways to ask
|
73
74
|
# questions.
|
74
75
|
# The version number refers to the version of the problem you solved,
|
@@ -85,6 +86,7 @@ class LuhnTest < Minitest::Test
|
|
85
86
|
#
|
86
87
|
# If you are curious, read more about constants on RubyDoc:
|
87
88
|
# http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/constants.html
|
89
|
+
|
88
90
|
def test_bookkeeping
|
89
91
|
skip
|
90
92
|
assert_equal 1, BookKeeping::VERSION
|
@@ -5,7 +5,6 @@ require_relative 'queen_attack'
|
|
5
5
|
|
6
6
|
# Common test data version: 8adde5f
|
7
7
|
class QueenAttackTest < Minitest::Test
|
8
|
-
|
9
8
|
def test_queen_with_a_valid_position
|
10
9
|
# skip
|
11
10
|
assert Queens.new(white: [2, 2])
|
@@ -97,6 +96,7 @@ class QueenAttackTest < Minitest::Test
|
|
97
96
|
#
|
98
97
|
# If you are curious, read more about constants on RubyDoc:
|
99
98
|
# http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/constants.html
|
99
|
+
|
100
100
|
def test_bookkeeping
|
101
101
|
skip
|
102
102
|
assert_equal 2, BookKeeping::VERSION
|
@@ -4,7 +4,7 @@ require 'minitest/autorun'
|
|
4
4
|
require_relative 'rna_transcription'
|
5
5
|
|
6
6
|
# Common test data version: 0b20fff
|
7
|
-
class
|
7
|
+
class RnaTranscriptionTest < Minitest::Test
|
8
8
|
def test_rna_complement_of_cytosine_is_guanine
|
9
9
|
# skip
|
10
10
|
assert_equal 'G', Complement.of_dna('C')
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Generator
|
2
|
+
module Files
|
3
|
+
module GeneratorCases
|
4
|
+
module_function
|
5
|
+
|
6
|
+
def available(track_path)
|
7
|
+
generator_glob = File.join(track_path, 'lib', '*_cases.rb')
|
8
|
+
Dir[generator_glob].sort.map { |filename| exercise_name(filename) }
|
9
|
+
end
|
10
|
+
|
11
|
+
def filename(exercise_name)
|
12
|
+
"#{exercise_name.tr('-', '_')}_cases"
|
13
|
+
end
|
14
|
+
|
15
|
+
def class_name(exercise_name)
|
16
|
+
filename(exercise_name)[0..-2].split('_').map(&:capitalize).join
|
17
|
+
end
|
18
|
+
|
19
|
+
def exercise_name(filename)
|
20
|
+
%r{([^/]*)_cases\.rb$}.match(filename).captures[0].tr('_', '-')
|
21
|
+
end
|
22
|
+
|
23
|
+
def load_filename(track_path, exercise_name)
|
24
|
+
path = File.join(track_path, 'lib')
|
25
|
+
"%s/%s.rb" % [ path, filename(exercise_name) ]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -2,32 +2,6 @@ require 'erb'
|
|
2
2
|
|
3
3
|
module Generator
|
4
4
|
module Files
|
5
|
-
module GeneratorCases
|
6
|
-
module_function
|
7
|
-
|
8
|
-
def available(track_path)
|
9
|
-
generator_glob = File.join(track_path, 'lib', '*_cases.rb')
|
10
|
-
Dir[generator_glob].sort.map { |filename| exercise_name(filename) }
|
11
|
-
end
|
12
|
-
|
13
|
-
def filename(exercise_name)
|
14
|
-
"#{exercise_name.tr('-', '_')}_cases"
|
15
|
-
end
|
16
|
-
|
17
|
-
def class_name(exercise_name)
|
18
|
-
filename(exercise_name)[0..-2].split('_').map(&:capitalize).join
|
19
|
-
end
|
20
|
-
|
21
|
-
def exercise_name(filename)
|
22
|
-
%r{([^/]*)_cases\.rb$}.match(filename).captures[0].tr('_', '-')
|
23
|
-
end
|
24
|
-
|
25
|
-
def load_filename(track_path, exercise_name)
|
26
|
-
path = File.join(track_path, 'lib')
|
27
|
-
"%s/%s.rb" % [ path, filename(exercise_name) ]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
5
|
module TrackFiles
|
32
6
|
include Exercise
|
33
7
|
|
@@ -44,7 +18,7 @@ module Generator
|
|
44
18
|
end
|
45
19
|
|
46
20
|
def tests_template
|
47
|
-
TestsTemplateFile.new(filename:
|
21
|
+
TestsTemplateFile.new(filename: tests_template_filename)
|
48
22
|
end
|
49
23
|
|
50
24
|
private
|
@@ -53,6 +27,16 @@ module Generator
|
|
53
27
|
File.join(paths.track, 'exercises', exercise_name)
|
54
28
|
end
|
55
29
|
|
30
|
+
# this method contains a LOT of magic text
|
31
|
+
def tests_template_filename
|
32
|
+
File.exist?(track_tests_template_filename) ? track_tests_template_filename :
|
33
|
+
File.join(paths.track, 'lib', 'generator', 'test_template.erb')
|
34
|
+
end
|
35
|
+
|
36
|
+
def track_tests_template_filename
|
37
|
+
File.join(exercise_path, 'example.tt')
|
38
|
+
end
|
39
|
+
|
56
40
|
def minitest_tests_filename
|
57
41
|
"#{exercise_name.gsub(/[ -]/, '_')}_test.rb"
|
58
42
|
end
|
@@ -1,17 +1,22 @@
|
|
1
1
|
module Generator
|
2
2
|
# Contains methods accessible to the ERB template
|
3
3
|
class TemplateValues
|
4
|
-
attr_reader :abbreviated_commit_hash, :version, :test_cases
|
4
|
+
attr_reader :abbreviated_commit_hash, :version, :exercise_name, :test_cases
|
5
5
|
|
6
|
-
def initialize(abbreviated_commit_hash:, version:, test_cases:)
|
6
|
+
def initialize(abbreviated_commit_hash:, version:, exercise_name:, test_cases:)
|
7
7
|
@abbreviated_commit_hash = abbreviated_commit_hash
|
8
8
|
@version = version
|
9
|
+
@exercise_name = exercise_name ? exercise_name.tr('-_', '_') : ''
|
9
10
|
@test_cases = test_cases
|
10
11
|
end
|
11
12
|
|
12
13
|
def get_binding
|
13
14
|
binding
|
14
15
|
end
|
16
|
+
|
17
|
+
def exercise_name_camel
|
18
|
+
exercise_name.split(/[-_]/).map(&:capitalize).join
|
19
|
+
end
|
15
20
|
end
|
16
21
|
|
17
22
|
module TemplateValuesFactory
|
@@ -19,6 +24,7 @@ module Generator
|
|
19
24
|
TemplateValues.new(
|
20
25
|
abbreviated_commit_hash: canonical_data.abbreviated_commit_hash,
|
21
26
|
version: version,
|
27
|
+
exercise_name: exercise_name,
|
22
28
|
test_cases: extract
|
23
29
|
)
|
24
30
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
gem 'minitest', '>= 5.0.0'
|
3
3
|
require 'minitest/autorun'
|
4
|
-
require_relative '
|
4
|
+
require_relative '<%= exercise_name %>'
|
5
5
|
|
6
6
|
# Common test data version: <%= abbreviated_commit_hash %>
|
7
|
-
class
|
7
|
+
class <%= exercise_name_camel %>Test < Minitest::Test
|
8
8
|
<% test_cases.each do |test_case| %>
|
9
9
|
def <%= test_case.name %>
|
10
10
|
<%= test_case.skipped %>
|