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.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/phone-number/canonical-data.json +28 -10
  3. data/common/exercises/phone-number/description.md +19 -13
  4. data/lib/trackler/version.rb +1 -1
  5. data/tracks/go/exercises/bob/.meta/gen.go +1 -3
  6. data/tracks/go/exercises/bob/bob.go +1 -1
  7. data/tracks/go/exercises/bob/bob_test.go +1 -1
  8. data/tracks/go/exercises/bob/cases_test.go +8 -12
  9. data/tracks/go/exercises/bob/example.go +1 -1
  10. data/tracks/go/exercises/largest-series-product/.meta/gen.go +1 -3
  11. data/tracks/go/exercises/largest-series-product/cases_test.go +3 -4
  12. data/tracks/go/exercises/largest-series-product/example.go +1 -1
  13. data/tracks/go/exercises/largest-series-product/largest_series_product_test.go +1 -1
  14. data/tracks/java/exercises/accumulate/src/test/java/AccumulateTest.java +4 -4
  15. data/tracks/java/exercises/acronym/src/test/java/AcronymTest.java +7 -7
  16. data/tracks/java/exercises/all-your-base/src/test/java/BaseConverterTest.java +19 -19
  17. data/tracks/java/exercises/allergies/src/test/java/AllergiesTest.java +18 -18
  18. data/tracks/java/exercises/anagram/src/test/java/AnagramTest.java +15 -15
  19. data/tracks/lisp/docs/INSTALLATION.md +7 -13
  20. data/tracks/python/exercises/bracket-push/bracket_push_test.py +4 -1
  21. data/tracks/python/exercises/isogram/isogram_test.py +5 -1
  22. data/tracks/ruby/README.md +14 -40
  23. data/tracks/ruby/exercises/binary/binary_test.rb +0 -1
  24. data/tracks/ruby/exercises/bracket-push/bracket_push_test.rb +1 -1
  25. data/tracks/ruby/exercises/grains/grains_test.rb +2 -0
  26. data/tracks/ruby/exercises/isogram/isogram_test.rb +0 -1
  27. data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +2 -1
  28. data/tracks/ruby/exercises/luhn/luhn_test.rb +2 -0
  29. data/tracks/ruby/exercises/pangram/pangram_test.rb +0 -1
  30. data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +1 -1
  31. data/tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb +1 -1
  32. data/tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb +0 -1
  33. data/tracks/ruby/exercises/say/say_test.rb +2 -0
  34. data/tracks/ruby/exercises/word-count/word_count_test.rb +1 -1
  35. data/tracks/ruby/exercises/wordy/wordy_test.rb +2 -0
  36. data/tracks/ruby/lib/acronym_cases.rb +1 -1
  37. data/tracks/ruby/lib/all_your_base_cases.rb +1 -1
  38. data/tracks/ruby/lib/alphametics_cases.rb +1 -1
  39. data/tracks/ruby/lib/anagram_cases.rb +1 -1
  40. data/tracks/ruby/lib/beer_song_cases.rb +1 -1
  41. data/tracks/ruby/lib/binary_cases.rb +1 -1
  42. data/tracks/ruby/lib/bowling_cases.rb +1 -1
  43. data/tracks/ruby/lib/bracket_push_cases.rb +1 -1
  44. data/tracks/ruby/lib/clock_cases.rb +1 -1
  45. data/tracks/ruby/lib/connect_cases.rb +1 -1
  46. data/tracks/ruby/lib/custom_set_cases.rb +1 -1
  47. data/tracks/ruby/lib/difference_of_squares_cases.rb +1 -1
  48. data/tracks/ruby/lib/dominoes_cases.rb +1 -1
  49. data/tracks/ruby/lib/generator/files/generator_cases.rb +29 -0
  50. data/tracks/ruby/lib/generator/files/track_files.rb +11 -27
  51. data/tracks/ruby/lib/generator/template_values.rb +8 -2
  52. data/tracks/ruby/{exercises/anagram/example.tt → lib/generator/test_template.erb} +2 -2
  53. data/tracks/ruby/lib/gigasecond_cases.rb +1 -0
  54. data/tracks/ruby/lib/grains_cases.rb +1 -1
  55. data/tracks/ruby/lib/hamming_cases.rb +2 -0
  56. data/tracks/ruby/lib/hello_world_cases.rb +1 -1
  57. data/tracks/ruby/lib/isogram_cases.rb +1 -1
  58. data/tracks/ruby/lib/largest_series_product_cases.rb +1 -1
  59. data/tracks/ruby/lib/leap_cases.rb +1 -1
  60. data/tracks/ruby/lib/luhn_cases.rb +2 -0
  61. data/tracks/ruby/lib/nth_prime_cases.rb +1 -1
  62. data/tracks/ruby/lib/ocr_numbers_cases.rb +2 -0
  63. data/tracks/ruby/lib/pangram_cases.rb +1 -1
  64. data/tracks/ruby/lib/pig_latin_cases.rb +2 -0
  65. data/tracks/ruby/lib/queen_attack_cases.rb +1 -1
  66. data/tracks/ruby/lib/raindrops_cases.rb +1 -1
  67. data/tracks/ruby/lib/rna_transcription_cases.rb +1 -1
  68. data/tracks/ruby/lib/roman_numerals_cases.rb +1 -1
  69. data/tracks/ruby/lib/run_length_encoding_cases.rb +8 -6
  70. data/tracks/ruby/lib/say_cases.rb +1 -1
  71. data/tracks/ruby/lib/sieve_cases.rb +10 -3
  72. data/tracks/ruby/lib/tournament_cases.rb +1 -1
  73. data/tracks/ruby/lib/transpose_cases.rb +1 -1
  74. data/tracks/ruby/lib/triangle_cases.rb +1 -1
  75. data/tracks/ruby/lib/two_bucket_cases.rb +1 -1
  76. data/tracks/ruby/lib/word_count_cases.rb +12 -1
  77. data/tracks/ruby/lib/wordy_cases.rb +1 -1
  78. data/tracks/ruby/test/fixtures/xruby/lib/beta_cases.rb +1 -1
  79. data/tracks/ruby/{exercises/acronym/example.tt → test/fixtures/xruby/lib/generator/test_template.erb} +0 -0
  80. data/tracks/ruby/test/generator/files/generate_cases_test.rb +33 -0
  81. data/tracks/ruby/test/generator/files/track_files_test.rb +14 -28
  82. data/tracks/ruby/test/generator/template_values_test.rb +22 -4
  83. data/tracks/rust/config.json +10 -0
  84. data/tracks/rust/exercises/run-length-encoding/Cargo.lock +4 -0
  85. data/tracks/rust/exercises/run-length-encoding/Cargo.toml +6 -0
  86. data/tracks/rust/exercises/run-length-encoding/example.rs +45 -0
  87. data/tracks/rust/exercises/run-length-encoding/tests/run-length-encoding.rs +86 -0
  88. metadata +11 -29
  89. data/tracks/ruby/exercises/binary/example.tt +0 -22
  90. data/tracks/ruby/exercises/bracket-push/example.tt +0 -21
  91. data/tracks/ruby/exercises/clock/example.tt +0 -21
  92. data/tracks/ruby/exercises/custom-set/example.tt +0 -21
  93. data/tracks/ruby/exercises/grains/example.tt +0 -19
  94. data/tracks/ruby/exercises/hamming/example.tt +0 -21
  95. data/tracks/ruby/exercises/isogram/example.tt +0 -22
  96. data/tracks/ruby/exercises/largest-series-product/example.tt +0 -20
  97. data/tracks/ruby/exercises/luhn/example.tt +0 -18
  98. data/tracks/ruby/exercises/nth-prime/example.tt +0 -21
  99. data/tracks/ruby/exercises/ocr-numbers/example.tt +0 -21
  100. data/tracks/ruby/exercises/pangram/example.tt +0 -22
  101. data/tracks/ruby/exercises/pig-latin/example.tt +0 -21
  102. data/tracks/ruby/exercises/queen-attack/example.tt +0 -21
  103. data/tracks/ruby/exercises/raindrops/example.tt +0 -21
  104. data/tracks/ruby/exercises/rna-transcription/example.tt +0 -21
  105. data/tracks/ruby/exercises/roman-numerals/example.tt +0 -21
  106. data/tracks/ruby/exercises/run-length-encoding/example.tt +0 -24
  107. data/tracks/ruby/exercises/say/example.tt +0 -19
  108. data/tracks/ruby/exercises/sieve/example.tt +0 -22
  109. data/tracks/ruby/exercises/triangle/example.tt +0 -21
  110. data/tracks/ruby/exercises/two-bucket/example.tt +0 -21
  111. data/tracks/ruby/exercises/word-count/example.tt +0 -23
  112. data/tracks/ruby/exercises/wordy/example.tt +0 -19
  113. data/tracks/ruby/lib/exercise_cases.rb +0 -2
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class RnaTranscriptionCase < ExerciseCase
4
4
 
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class RomanNumeralsCase < ExerciseCase
4
4
  def name
@@ -1,14 +1,16 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class RunLengthEncodingCase < ExerciseCase
4
4
 
5
- def assign_input
6
- "input = '#{input}'"
5
+ def workload
6
+ indent_lines([
7
+ "input = '#{input}'",
8
+ "output = '#{expected}'",
9
+ assertion
10
+ ], 4)
7
11
  end
8
12
 
9
- def assign_output
10
- "output = '#{expected}'"
11
- end
13
+ private
12
14
 
13
15
  def assertion
14
16
  if property == 'consistency'
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class SayCase < ExerciseCase
4
4
 
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class SieveCase < ExerciseCase
4
4
  OPEN_ARRAY = "[\n\s\s\s\s\s\s".freeze
@@ -6,6 +6,15 @@ class SieveCase < ExerciseCase
6
6
  NEW_ARRAY_ROW = ",\n\s\s\s\s\s\s".freeze
7
7
  ARRAY_ELEMENTS_PER_ROW = 17.freeze
8
8
 
9
+ def workload
10
+ indent_lines([
11
+ "expected = #{expected_string}",
12
+ "assert_equal expected, Sieve.new(#{limit}).primes"
13
+ ], 4)
14
+ end
15
+
16
+ private
17
+
9
18
  def expected_string
10
19
  return expected unless needs_indentation?
11
20
 
@@ -13,8 +22,6 @@ class SieveCase < ExerciseCase
13
22
  "#{OPEN_ARRAY}#{array_rows.join(NEW_ARRAY_ROW)}#{CLOSE_ARRAY}"
14
23
  end
15
24
 
16
- private
17
-
18
25
  def needs_indentation?
19
26
  expected.size > ARRAY_ELEMENTS_PER_ROW
20
27
  end
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class TournamentCase < ExerciseCase
4
4
 
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class TransposeCase < ExerciseCase
4
4
 
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class TriangleCase < ExerciseCase
4
4
  def name
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class TwoBucketCase < ExerciseCase
4
4
  def name
@@ -1,7 +1,18 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class WordCountCase < ExerciseCase
4
4
 
5
+ def workload
6
+ indent_lines([
7
+ "phrase = #{object_under_test}",
8
+ "counts = #{expected}",
9
+ "assert_equal counts, phrase.word_count"
10
+ ], 4)
11
+
12
+ end
13
+
14
+ private
15
+
5
16
  def object_under_test
6
17
  %Q(Phrase.new(#{input.inspect}))
7
18
  end
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class WordyCase < ExerciseCase
4
4
 
@@ -1,4 +1,4 @@
1
- require 'exercise_cases'
1
+ require 'generator/exercise_cases'
2
2
 
3
3
  class BetaCase < ExerciseCase
4
4
  def workload
@@ -0,0 +1,33 @@
1
+ require_relative '../../test_helper.rb'
2
+
3
+ module Generator
4
+ module Files
5
+ class GeneratorCasesTest < Minitest::Test
6
+ def test_no_cases_found
7
+ track_path = 'test/fixtures/nonexistant'
8
+ assert_equal [], GeneratorCases.available(track_path)
9
+ end
10
+
11
+ def test_cases_found
12
+ track_path = 'test/fixtures/xruby'
13
+ assert_equal %w(alpha beta), GeneratorCases.available(track_path).sort
14
+ end
15
+
16
+ def test_available_returns_exercise_names
17
+ track_path = 'test/fixtures/xruby'
18
+ Dir.stub :[], %w(/alpha_cases.rb hy_phen_ated_cases.rb) do
19
+ assert_equal %w(alpha hy-phen-ated), GeneratorCases.available(track_path)
20
+ end
21
+ end
22
+
23
+ def test_filename
24
+ exercise_name = 'two-parter'
25
+ assert_equal 'two_parter_cases', GeneratorCases.filename(exercise_name)
26
+ end
27
+
28
+ def test_class_name
29
+ assert_equal 'TwoParterCase', GeneratorCases.class_name('two-parter')
30
+ end
31
+ end
32
+ end
33
+ end
@@ -2,34 +2,6 @@ require_relative '../../test_helper.rb'
2
2
 
3
3
  module Generator
4
4
  module Files
5
- class GeneratorCasesTest < Minitest::Test
6
- def test_no_cases_found
7
- track_path = 'test/fixtures/nonexistant'
8
- assert_equal [], GeneratorCases.available(track_path)
9
- end
10
-
11
- def test_cases_found
12
- track_path = 'test/fixtures/xruby'
13
- assert_equal %w(alpha beta), GeneratorCases.available(track_path).sort
14
- end
15
-
16
- def test_available_returns_exercise_names
17
- track_path = 'test/fixtures/xruby'
18
- Dir.stub :[], %w(/alpha_cases.rb hy_phen_ated_cases.rb) do
19
- assert_equal %w(alpha hy-phen-ated), GeneratorCases.available(track_path)
20
- end
21
- end
22
-
23
- def test_filename
24
- exercise_name = 'two-parter'
25
- assert_equal 'two_parter_cases', GeneratorCases.filename(exercise_name)
26
- end
27
-
28
- def test_class_name
29
- assert_equal 'TwoParterCase', GeneratorCases.class_name('two-parter')
30
- end
31
- end
32
-
33
5
  class TrackFilesTest < Minitest::Test
34
6
  FixturePaths = Paths.new(
35
7
  metadata: 'test/fixtures/metadata',
@@ -64,6 +36,20 @@ module Generator
64
36
  subject = TestTrackFiles.new
65
37
  assert_instance_of TestsTemplateFile, subject.tests_template
66
38
  end
39
+
40
+ class TestTrackFilesUseDefault
41
+ def initialize
42
+ @paths = FixturePaths
43
+ @exercise_name = 'notemplate'
44
+ end
45
+ attr_reader :paths, :exercise_name
46
+ include TrackFiles
47
+ end
48
+
49
+ def test_default_tests_template
50
+ subject = TestTrackFiles.new
51
+ assert_instance_of TestsTemplateFile, subject.tests_template
52
+ end
67
53
  end
68
54
 
69
55
  class TestsVersionFileTest < Minitest::Test
@@ -2,26 +2,44 @@ require_relative '../test_helper'
2
2
 
3
3
  module Generator
4
4
  class TestCasesValuesTest < Minitest::Test
5
+ def setup
6
+ @arguments = {
7
+ abbreviated_commit_hash: nil, version: nil, exercise_name: nil, test_cases: nil
8
+ }
9
+ end
10
+
5
11
  def test_abbreviated_commit_hash
6
12
  expected_abbreviated_commit_hash = '1234567'
7
- subject = TemplateValues.new(abbreviated_commit_hash: expected_abbreviated_commit_hash, version: nil, test_cases: nil)
13
+ subject = TemplateValues.new(@arguments.merge(abbreviated_commit_hash: expected_abbreviated_commit_hash))
8
14
  assert_equal expected_abbreviated_commit_hash, subject.abbreviated_commit_hash
9
15
  end
10
16
 
11
17
  def test_version
12
18
  expected_version = '1234567'
13
- subject = TemplateValues.new(version: expected_version, abbreviated_commit_hash: nil, test_cases: nil)
19
+ subject = TemplateValues.new(@arguments.merge(version: expected_version))
14
20
  assert_equal expected_version, subject.version
15
21
  end
16
22
 
23
+ def test_exercise_name
24
+ expected_exercise_name = 'alpha_beta'
25
+ subject = TemplateValues.new(@arguments.merge(exercise_name: 'alpha-beta'))
26
+ assert_equal expected_exercise_name, subject.exercise_name
27
+ end
28
+
29
+ def test_exercise_name_camel
30
+ expected_exercise_name_camel = 'AlphaBeta'
31
+ subject = TemplateValues.new(@arguments.merge(exercise_name: 'alpha-beta'))
32
+ assert_equal expected_exercise_name_camel, subject.exercise_name_camel
33
+ end
34
+
17
35
  def test_test_cases
18
36
  expected_test_cases = 'should be TemplateValues class'
19
- subject = TemplateValues.new(test_cases: expected_test_cases, abbreviated_commit_hash: nil, version: nil)
37
+ subject = TemplateValues.new(@arguments.merge(test_cases: expected_test_cases))
20
38
  assert_equal expected_test_cases, subject.test_cases
21
39
  end
22
40
 
23
41
  def test_get_binding
24
- subject = TemplateValues.new(abbreviated_commit_hash: nil, version: nil, test_cases: nil)
42
+ subject = TemplateValues.new(@arguments)
25
43
  assert_instance_of Binding, subject.get_binding
26
44
  end
27
45
  end
@@ -78,6 +78,16 @@
78
78
  "panic"
79
79
  ]
80
80
  },
81
+ {
82
+ "slug": "run-length-encoding",
83
+ "difficulty": 4,
84
+ "topics": [
85
+ "string concatenation",
86
+ "conversion between string and int",
87
+ "use of primitive char",
88
+ "loop"
89
+ ]
90
+ },
81
91
  {
82
92
  "slug": "hamming",
83
93
  "difficulty": 4,
@@ -0,0 +1,4 @@
1
+ [root]
2
+ name = "run-length-encoding"
3
+ version = "0.1.0"
4
+
@@ -0,0 +1,6 @@
1
+ [package]
2
+ name = "run-length-encoding"
3
+ version = "0.1.0"
4
+ authors = ["zombiefungus <divmermarlav@gmail.com>"]
5
+
6
+ [dependencies]
@@ -0,0 +1,45 @@
1
+ use std::cmp;
2
+
3
+ pub fn encode(input: &str) -> String {
4
+ input
5
+ .chars()
6
+ .fold((String::new(), ' ', 0, 1), |(mut acc, last, last_n, pos), c| {
7
+ // acc = where answer is accumulated
8
+ // last = last character read
9
+ // last_n = accum count for last
10
+ if c == last {
11
+ if pos == input.len() { // end of string
12
+ acc += (last_n + 1).to_string().as_str();
13
+ acc.push(c);
14
+ }
15
+ (acc, last, last_n + 1, pos + 1)
16
+ }
17
+ else {
18
+ if last_n > 1 {
19
+ acc += last_n.to_string().as_str();
20
+ }
21
+ if last_n > 0 { // ignore initial last (single whitespace)
22
+ acc.push(last);
23
+ }
24
+ if pos == input.len() { // end of string
25
+ acc.push(c);
26
+ }
27
+ (acc, c, 1, pos + 1)
28
+ }
29
+ }).0
30
+ }
31
+
32
+ pub fn decode(input: &str) -> String {
33
+ input
34
+ .chars()
35
+ .fold((String::new(), 0), |(mut acc, last_n), c| {
36
+ if let Some(d) = c.to_digit(10) {
37
+ (acc, 10*last_n + d)
38
+ }
39
+ else {
40
+ acc += c.to_string()
41
+ .repeat(cmp::max(last_n, 1) as usize).as_str();
42
+ (acc, 0)
43
+ }
44
+ }).0
45
+ }
@@ -0,0 +1,86 @@
1
+ extern crate run_length_encoding as rle;
2
+
3
+ // encoding tests
4
+
5
+ #[test]
6
+ fn test_encode_empty_string() {
7
+ assert_eq!("", rle::encode(""));
8
+ }
9
+
10
+ #[test]
11
+ #[ignore]
12
+ fn test_encode_single_characters() {
13
+ assert_eq!("XYZ", rle::encode("XYZ"));
14
+ }
15
+
16
+ #[test]
17
+ #[ignore]
18
+ fn test_encode_string_with_no_single_characters() {
19
+ assert_eq!("2A3B4C", rle::encode("AABBBCCCC"));
20
+ }
21
+
22
+ #[test]
23
+ #[ignore]
24
+ fn test_encode_single_characters_mixed_with_repeated_characters() {
25
+ assert_eq!("12WB12W3B24WB", rle::encode(
26
+ "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB"));
27
+ }
28
+
29
+ #[test]
30
+ #[ignore]
31
+ fn test_encode_multiple_whitespace_mixed_in_string() {
32
+ assert_eq!("2 hs2q q2w2 ", rle::encode(" hsqq qww "));
33
+ }
34
+
35
+ #[test]
36
+ #[ignore]
37
+ fn test_encode_lowercase_characters() {
38
+ assert_eq!("2a3b4c", rle::encode("aabbbcccc"));
39
+ }
40
+
41
+ // decoding tests
42
+
43
+ #[test]
44
+ #[ignore]
45
+ fn test_decode_empty_string() {
46
+ assert_eq!("", rle::decode(""));
47
+ }
48
+
49
+ #[test]
50
+ #[ignore]
51
+ fn test_decode_single_characters_only() {
52
+ assert_eq!("XYZ", rle::decode("XYZ"));
53
+ }
54
+
55
+ #[test]
56
+ #[ignore]
57
+ fn test_decode_string_with_no_single_characters() {
58
+ assert_eq!("AABBBCCCC", rle::decode("2A3B4C"));
59
+ }
60
+
61
+ #[test]
62
+ #[ignore]
63
+ fn test_decode_single_characters_with_repeated_characters() {
64
+ assert_eq!("WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB",
65
+ rle::decode("12WB12W3B24WB"));
66
+ }
67
+
68
+ #[test]
69
+ #[ignore]
70
+ fn test_decode_multiple_whitespace_mixed_in_string() {
71
+ assert_eq!(" hsqq qww ", rle::decode("2 hs2q q2w2 "));
72
+ }
73
+
74
+ #[test]
75
+ #[ignore]
76
+ fn test_decode_lower_case_string() {
77
+ assert_eq!("aabbbcccc", rle::decode("2a3b4c"));
78
+ }
79
+
80
+ // consistency test
81
+
82
+ #[test]
83
+ #[ignore]
84
+ fn test_consistency() {
85
+ assert_eq!("zzz ZZ zZ", rle::decode(rle::encode("zzz ZZ zZ").as_str()));
86
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.2
4
+ version: 2.1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-27 00:00:00.000000000 Z
11
+ date: 2017-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -7168,7 +7168,6 @@ files:
7168
7168
  - tracks/ruby/exercises/acronym/.meta/.version
7169
7169
  - tracks/ruby/exercises/acronym/acronym_test.rb
7170
7170
  - tracks/ruby/exercises/acronym/example.rb
7171
- - tracks/ruby/exercises/acronym/example.tt
7172
7171
  - tracks/ruby/exercises/all-your-base/.meta/.version
7173
7172
  - tracks/ruby/exercises/all-your-base/all_your_base_test.rb
7174
7173
  - tracks/ruby/exercises/all-your-base/example.rb
@@ -7182,7 +7181,6 @@ files:
7182
7181
  - tracks/ruby/exercises/anagram/.meta/.version
7183
7182
  - tracks/ruby/exercises/anagram/anagram_test.rb
7184
7183
  - tracks/ruby/exercises/anagram/example.rb
7185
- - tracks/ruby/exercises/anagram/example.tt
7186
7184
  - tracks/ruby/exercises/atbash-cipher/atbash_cipher_test.rb
7187
7185
  - tracks/ruby/exercises/atbash-cipher/example.rb
7188
7186
  - tracks/ruby/exercises/beer-song/.meta/.version
@@ -7196,7 +7194,6 @@ files:
7196
7194
  - tracks/ruby/exercises/binary/.meta/.version
7197
7195
  - tracks/ruby/exercises/binary/binary_test.rb
7198
7196
  - tracks/ruby/exercises/binary/example.rb
7199
- - tracks/ruby/exercises/binary/example.tt
7200
7197
  - tracks/ruby/exercises/bob/bob_test.rb
7201
7198
  - tracks/ruby/exercises/bob/example.rb
7202
7199
  - tracks/ruby/exercises/bowling/.meta/.version
@@ -7206,13 +7203,11 @@ files:
7206
7203
  - tracks/ruby/exercises/bracket-push/.meta/.version
7207
7204
  - tracks/ruby/exercises/bracket-push/bracket_push_test.rb
7208
7205
  - tracks/ruby/exercises/bracket-push/example.rb
7209
- - tracks/ruby/exercises/bracket-push/example.tt
7210
7206
  - tracks/ruby/exercises/circular-buffer/circular_buffer_test.rb
7211
7207
  - tracks/ruby/exercises/circular-buffer/example.rb
7212
7208
  - tracks/ruby/exercises/clock/.meta/.version
7213
7209
  - tracks/ruby/exercises/clock/clock_test.rb
7214
7210
  - tracks/ruby/exercises/clock/example.rb
7215
- - tracks/ruby/exercises/clock/example.tt
7216
7211
  - tracks/ruby/exercises/connect/.meta/.version
7217
7212
  - tracks/ruby/exercises/connect/connect_test.rb
7218
7213
  - tracks/ruby/exercises/connect/example.rb
@@ -7222,7 +7217,6 @@ files:
7222
7217
  - tracks/ruby/exercises/custom-set/.meta/.version
7223
7218
  - tracks/ruby/exercises/custom-set/custom_set_test.rb
7224
7219
  - tracks/ruby/exercises/custom-set/example.rb
7225
- - tracks/ruby/exercises/custom-set/example.tt
7226
7220
  - tracks/ruby/exercises/diamond/diamond_test.rb
7227
7221
  - tracks/ruby/exercises/diamond/example.rb
7228
7222
  - tracks/ruby/exercises/difference-of-squares/.meta/.version
@@ -7248,11 +7242,9 @@ files:
7248
7242
  - tracks/ruby/exercises/grade-school/grade_school_test.rb
7249
7243
  - tracks/ruby/exercises/grains/.meta/.version
7250
7244
  - tracks/ruby/exercises/grains/example.rb
7251
- - tracks/ruby/exercises/grains/example.tt
7252
7245
  - tracks/ruby/exercises/grains/grains_test.rb
7253
7246
  - tracks/ruby/exercises/hamming/.meta/.version
7254
7247
  - tracks/ruby/exercises/hamming/example.rb
7255
- - tracks/ruby/exercises/hamming/example.tt
7256
7248
  - tracks/ruby/exercises/hamming/hamming_test.rb
7257
7249
  - tracks/ruby/exercises/hello-world/.meta/.version
7258
7250
  - tracks/ruby/exercises/hello-world/GETTING_STARTED.md
@@ -7265,13 +7257,11 @@ files:
7265
7257
  - tracks/ruby/exercises/house/house_test.rb
7266
7258
  - tracks/ruby/exercises/isogram/.meta/.version
7267
7259
  - tracks/ruby/exercises/isogram/example.rb
7268
- - tracks/ruby/exercises/isogram/example.tt
7269
7260
  - tracks/ruby/exercises/isogram/isogram_test.rb
7270
7261
  - tracks/ruby/exercises/kindergarten-garden/example.rb
7271
7262
  - tracks/ruby/exercises/kindergarten-garden/kindergarten_garden_test.rb
7272
7263
  - tracks/ruby/exercises/largest-series-product/.meta/.version
7273
7264
  - tracks/ruby/exercises/largest-series-product/example.rb
7274
- - tracks/ruby/exercises/largest-series-product/example.tt
7275
7265
  - tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb
7276
7266
  - tracks/ruby/exercises/leap/.meta/.version
7277
7267
  - tracks/ruby/exercises/leap/example.rb
@@ -7283,7 +7273,6 @@ files:
7283
7273
  - tracks/ruby/exercises/list-ops/list_ops_test.rb
7284
7274
  - tracks/ruby/exercises/luhn/.meta/.version
7285
7275
  - tracks/ruby/exercises/luhn/example.rb
7286
- - tracks/ruby/exercises/luhn/example.tt
7287
7276
  - tracks/ruby/exercises/luhn/luhn_test.rb
7288
7277
  - tracks/ruby/exercises/matrix/example.rb
7289
7278
  - tracks/ruby/exercises/matrix/matrix_test.rb
@@ -7293,13 +7282,11 @@ files:
7293
7282
  - tracks/ruby/exercises/minesweeper/minesweeper_test.rb
7294
7283
  - tracks/ruby/exercises/nth-prime/.meta/.version
7295
7284
  - tracks/ruby/exercises/nth-prime/example.rb
7296
- - tracks/ruby/exercises/nth-prime/example.tt
7297
7285
  - tracks/ruby/exercises/nth-prime/nth_prime_test.rb
7298
7286
  - tracks/ruby/exercises/nucleotide-count/example.rb
7299
7287
  - tracks/ruby/exercises/nucleotide-count/nucleotide_count_test.rb
7300
7288
  - tracks/ruby/exercises/ocr-numbers/.meta/.version
7301
7289
  - tracks/ruby/exercises/ocr-numbers/example.rb
7302
- - tracks/ruby/exercises/ocr-numbers/example.tt
7303
7290
  - tracks/ruby/exercises/ocr-numbers/ocr_numbers_test.rb
7304
7291
  - tracks/ruby/exercises/octal/example.rb
7305
7292
  - tracks/ruby/exercises/octal/octal_test.rb
@@ -7307,7 +7294,6 @@ files:
7307
7294
  - tracks/ruby/exercises/palindrome-products/palindrome_products_test.rb
7308
7295
  - tracks/ruby/exercises/pangram/.meta/.version
7309
7296
  - tracks/ruby/exercises/pangram/example.rb
7310
- - tracks/ruby/exercises/pangram/example.tt
7311
7297
  - tracks/ruby/exercises/pangram/pangram_test.rb
7312
7298
  - tracks/ruby/exercises/pascals-triangle/example.rb
7313
7299
  - tracks/ruby/exercises/pascals-triangle/pascals_triangle_test.rb
@@ -7317,7 +7303,6 @@ files:
7317
7303
  - tracks/ruby/exercises/phone-number/phone_number_test.rb
7318
7304
  - tracks/ruby/exercises/pig-latin/.meta/.version
7319
7305
  - tracks/ruby/exercises/pig-latin/example.rb
7320
- - tracks/ruby/exercises/pig-latin/example.tt
7321
7306
  - tracks/ruby/exercises/pig-latin/pig_latin_test.rb
7322
7307
  - tracks/ruby/exercises/point-mutations/example.rb
7323
7308
  - tracks/ruby/exercises/point-mutations/point_mutations_test.rb
@@ -7333,17 +7318,14 @@ files:
7333
7318
  - tracks/ruby/exercises/pythagorean-triplet/pythagorean_triplet_test.rb
7334
7319
  - tracks/ruby/exercises/queen-attack/.meta/.version
7335
7320
  - tracks/ruby/exercises/queen-attack/example.rb
7336
- - tracks/ruby/exercises/queen-attack/example.tt
7337
7321
  - tracks/ruby/exercises/queen-attack/queen_attack_test.rb
7338
7322
  - tracks/ruby/exercises/rail-fence-cipher/example.rb
7339
7323
  - tracks/ruby/exercises/rail-fence-cipher/rail_fence_cipher_test.rb
7340
7324
  - tracks/ruby/exercises/raindrops/.meta/.version
7341
7325
  - tracks/ruby/exercises/raindrops/example.rb
7342
- - tracks/ruby/exercises/raindrops/example.tt
7343
7326
  - tracks/ruby/exercises/raindrops/raindrops_test.rb
7344
7327
  - tracks/ruby/exercises/rna-transcription/.meta/.version
7345
7328
  - tracks/ruby/exercises/rna-transcription/example.rb
7346
- - tracks/ruby/exercises/rna-transcription/example.tt
7347
7329
  - tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb
7348
7330
  - tracks/ruby/exercises/robot-name/example.rb
7349
7331
  - tracks/ruby/exercises/robot-name/robot_name_test.rb
@@ -7351,17 +7333,14 @@ files:
7351
7333
  - tracks/ruby/exercises/robot-simulator/robot_simulator_test.rb
7352
7334
  - tracks/ruby/exercises/roman-numerals/.meta/.version
7353
7335
  - tracks/ruby/exercises/roman-numerals/example.rb
7354
- - tracks/ruby/exercises/roman-numerals/example.tt
7355
7336
  - tracks/ruby/exercises/roman-numerals/roman_numerals_test.rb
7356
7337
  - tracks/ruby/exercises/run-length-encoding/.meta/.version
7357
7338
  - tracks/ruby/exercises/run-length-encoding/example.rb
7358
- - tracks/ruby/exercises/run-length-encoding/example.tt
7359
7339
  - tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb
7360
7340
  - tracks/ruby/exercises/saddle-points/example.rb
7361
7341
  - tracks/ruby/exercises/saddle-points/saddle_points_test.rb
7362
7342
  - tracks/ruby/exercises/say/.meta/.version
7363
7343
  - tracks/ruby/exercises/say/example.rb
7364
- - tracks/ruby/exercises/say/example.tt
7365
7344
  - tracks/ruby/exercises/say/say_test.rb
7366
7345
  - tracks/ruby/exercises/scale-generator/example.rb
7367
7346
  - tracks/ruby/exercises/scale-generator/scale_generator_test.rb
@@ -7373,7 +7352,6 @@ files:
7373
7352
  - tracks/ruby/exercises/series/series_test.rb
7374
7353
  - tracks/ruby/exercises/sieve/.meta/.version
7375
7354
  - tracks/ruby/exercises/sieve/example.rb
7376
- - tracks/ruby/exercises/sieve/example.tt
7377
7355
  - tracks/ruby/exercises/sieve/sieve_test.rb
7378
7356
  - tracks/ruby/exercises/simple-cipher/example.rb
7379
7357
  - tracks/ruby/exercises/simple-cipher/simple_cipher_test.rb
@@ -7396,7 +7374,6 @@ files:
7396
7374
  - tracks/ruby/exercises/transpose/transpose_test.rb
7397
7375
  - tracks/ruby/exercises/triangle/.meta/.version
7398
7376
  - tracks/ruby/exercises/triangle/example.rb
7399
- - tracks/ruby/exercises/triangle/example.tt
7400
7377
  - tracks/ruby/exercises/triangle/triangle_test.rb
7401
7378
  - tracks/ruby/exercises/trinary/example.rb
7402
7379
  - tracks/ruby/exercises/trinary/trinary_test.rb
@@ -7405,15 +7382,12 @@ files:
7405
7382
  - tracks/ruby/exercises/twelve-days/twelve_days_test.rb
7406
7383
  - tracks/ruby/exercises/two-bucket/.meta/.version
7407
7384
  - tracks/ruby/exercises/two-bucket/example.rb
7408
- - tracks/ruby/exercises/two-bucket/example.tt
7409
7385
  - tracks/ruby/exercises/two-bucket/two_bucket_test.rb
7410
7386
  - tracks/ruby/exercises/word-count/.meta/.version
7411
7387
  - tracks/ruby/exercises/word-count/example.rb
7412
- - tracks/ruby/exercises/word-count/example.tt
7413
7388
  - tracks/ruby/exercises/word-count/word_count_test.rb
7414
7389
  - tracks/ruby/exercises/wordy/.meta/.version
7415
7390
  - tracks/ruby/exercises/wordy/example.rb
7416
- - tracks/ruby/exercises/wordy/example.tt
7417
7391
  - tracks/ruby/exercises/wordy/wordy_test.rb
7418
7392
  - tracks/ruby/img/icon.png
7419
7393
  - tracks/ruby/lib/acronym_cases.rb
@@ -7431,17 +7405,18 @@ files:
7431
7405
  - tracks/ruby/lib/difference_of_squares_cases.rb
7432
7406
  - tracks/ruby/lib/disable_skip.rb
7433
7407
  - tracks/ruby/lib/dominoes_cases.rb
7434
- - tracks/ruby/lib/exercise_cases.rb
7435
7408
  - tracks/ruby/lib/generator.rb
7436
7409
  - tracks/ruby/lib/generator/case_values.rb
7437
7410
  - tracks/ruby/lib/generator/command_line.rb
7438
7411
  - tracks/ruby/lib/generator/exercise_cases.rb
7439
7412
  - tracks/ruby/lib/generator/files.rb
7413
+ - tracks/ruby/lib/generator/files/generator_cases.rb
7440
7414
  - tracks/ruby/lib/generator/files/metadata_files.rb
7441
7415
  - tracks/ruby/lib/generator/files/track_files.rb
7442
7416
  - tracks/ruby/lib/generator/git_command.rb
7443
7417
  - tracks/ruby/lib/generator/repository.rb
7444
7418
  - tracks/ruby/lib/generator/template_values.rb
7419
+ - tracks/ruby/lib/generator/test_template.erb
7445
7420
  - tracks/ruby/lib/generator/underscore.rb
7446
7421
  - tracks/ruby/lib/gigasecond_cases.rb
7447
7422
  - tracks/ruby/lib/grains_cases.rb
@@ -7479,8 +7454,10 @@ files:
7479
7454
  - tracks/ruby/test/fixtures/xruby/exercises/alpha/example.tt
7480
7455
  - tracks/ruby/test/fixtures/xruby/lib/alpha_cases.rb
7481
7456
  - tracks/ruby/test/fixtures/xruby/lib/beta_cases.rb
7457
+ - tracks/ruby/test/fixtures/xruby/lib/generator/test_template.erb
7482
7458
  - tracks/ruby/test/generator/case_values_test.rb
7483
7459
  - tracks/ruby/test/generator/command_line_test.rb
7460
+ - tracks/ruby/test/generator/files/generate_cases_test.rb
7484
7461
  - tracks/ruby/test/generator/files/metadata_files_test.rb
7485
7462
  - tracks/ruby/test/generator/files/track_files_test.rb
7486
7463
  - tracks/ruby/test/generator/files_test.rb
@@ -7781,6 +7758,11 @@ files:
7781
7758
  - tracks/rust/exercises/rotational-cipher/example.rs
7782
7759
  - tracks/rust/exercises/rotational-cipher/src/lib.rs
7783
7760
  - tracks/rust/exercises/rotational-cipher/tests/rotational-cipher.rs
7761
+ - tracks/rust/exercises/run-length-encoding/Cargo.lock
7762
+ - tracks/rust/exercises/run-length-encoding/Cargo.toml
7763
+ - tracks/rust/exercises/run-length-encoding/example.rs
7764
+ - tracks/rust/exercises/run-length-encoding/src/lib.rs
7765
+ - tracks/rust/exercises/run-length-encoding/tests/run-length-encoding.rs
7784
7766
  - tracks/rust/exercises/scrabble-score/.gitignore
7785
7767
  - tracks/rust/exercises/scrabble-score/Cargo.lock
7786
7768
  - tracks/rust/exercises/scrabble-score/Cargo.toml