trackler 2.1.0.2 → 2.1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 %>
|