trackler 2.1.0.36 → 2.1.0.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/common/CONTRIBUTING.md +1 -1
  3. data/lib/trackler/version.rb +1 -1
  4. data/lib/trackler.rb +0 -5
  5. data/tracks/c/config.json +0 -5
  6. data/tracks/clojure/config.json +177 -59
  7. data/tracks/clojure/exercises/kindergarten-garden/src/example.clj +10 -8
  8. data/tracks/elisp/config.json +60 -24
  9. data/tracks/elixir/exercises/poker/poker_test.exs +1 -1
  10. data/tracks/fortran/config.json +6 -0
  11. data/tracks/fortran/exercises/pangram/example.f90 +33 -0
  12. data/tracks/fortran/exercises/pangram/pangram.fun +42 -0
  13. data/tracks/go/config.json +10 -4
  14. data/tracks/go/exercises/acronym/acronym.go +1 -1
  15. data/tracks/groovy/{SETUP.md → docs/EXERCISE_README_INSERT.md} +0 -0
  16. data/tracks/haskell/config.json +1 -1
  17. data/tracks/java/bin/journey-test.sh +3 -0
  18. data/tracks/java/config.json +14 -14
  19. data/tracks/java/exercises/binary-search/src/test/java/BinarySearchTest.java +20 -20
  20. data/tracks/java/exercises/binary-search-tree/src/test/java/BSTTest.java +32 -32
  21. data/tracks/java/exercises/build.gradle +57 -31
  22. data/tracks/java/exercises/hello-world/GETTING_STARTED.md +4 -0
  23. data/tracks/java/exercises/pythagorean-triplet/src/test/java/PythagoreanTripletTest.java +8 -8
  24. data/tracks/java/exercises/scrabble-score/src/example/java/Scrabble.java +1 -1
  25. data/tracks/java/exercises/scrabble-score/src/test/java/ScrabbleScoreTest.java +10 -5
  26. data/tracks/java/exercises/series/src/test/java/SeriesTest.java +20 -20
  27. data/tracks/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  28. data/tracks/java/gradle/wrapper/gradle-wrapper.properties +2 -2
  29. data/tracks/julia/runtests.jl +1 -6
  30. data/tracks/kotlin/.gitignore +0 -5
  31. data/tracks/kotlin/.travis.yml +21 -1
  32. data/tracks/kotlin/bin/build-jq.sh +11 -0
  33. data/tracks/kotlin/bin/fetch-configlet +1 -1
  34. data/tracks/kotlin/bin/journey-test.sh +34 -14
  35. data/tracks/kotlin/bin/unit-tests.sh +2 -2
  36. data/tracks/kotlin/config.json +230 -160
  37. data/tracks/kotlin/exercises/build.gradle +3 -0
  38. data/tracks/kotlin/exercises/collatz-conjecture/src/test/kotlin/CollatzCalculatorTest.kt +7 -1
  39. data/tracks/kotlin/exercises/gradle.properties +1 -0
  40. data/tracks/kotlin/exercises/list-ops/HINTS.md +5 -0
  41. data/tracks/kotlin/exercises/list-ops/build.gradle +28 -0
  42. data/tracks/kotlin/exercises/list-ops/src/example/kotlin/CustomListExtensions.kt +43 -0
  43. data/tracks/kotlin/exercises/list-ops/src/main/kotlin/.keep +0 -0
  44. data/tracks/kotlin/exercises/list-ops/src/test/kotlin/ListExtensionsTest.kt +157 -0
  45. data/tracks/kotlin/exercises/settings.gradle +13 -12
  46. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.jar +0 -0
  47. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.properties +6 -0
  48. data/tracks/kotlin/gradlew +172 -0
  49. data/tracks/kotlin/gradlew.bat +84 -0
  50. data/tracks/lfe/config.json +90 -30
  51. data/tracks/ocaml/.travis-ci.sh +1 -1
  52. data/tracks/ocaml/.travis.yml +1 -1
  53. data/tracks/ocaml/README.md +1 -1
  54. data/tracks/perl5/.travis.yml +3 -2
  55. data/tracks/perl6/bin/exercise-gen.pl6 +6 -3
  56. data/tracks/racket/config.json +63 -21
  57. data/tracks/ruby/exercises/bob/bob_test.rb +0 -1
  58. data/tracks/ruby/lib/generator/command_line.rb +7 -3
  59. data/tracks/ruby/lib/generator/exercise.rb +19 -0
  60. data/tracks/ruby/lib/generator/files/generator_cases.rb +0 -4
  61. data/tracks/ruby/lib/generator/files/metadata_files.rb +1 -1
  62. data/tracks/ruby/lib/generator/files/track_files.rb +3 -3
  63. data/tracks/ruby/lib/generator/implementation.rb +7 -11
  64. data/tracks/ruby/lib/generator/template_values.rb +5 -9
  65. data/tracks/ruby/lib/generator/underscore.rb +4 -0
  66. data/tracks/ruby/lib/generator.rb +2 -2
  67. data/tracks/ruby/test/fixtures/xruby/lib/generator/test_template.erb +3 -3
  68. data/tracks/ruby/test/generator/exercise_test.rb +20 -0
  69. data/tracks/ruby/test/generator/files/generate_cases_test.rb +0 -4
  70. data/tracks/ruby/test/generator/files/metadata_files_test.rb +2 -2
  71. data/tracks/ruby/test/generator/files/track_files_test.rb +4 -5
  72. data/tracks/ruby/test/generator/implementation_test.rb +12 -20
  73. data/tracks/ruby/test/generator/template_values_test.rb +2 -33
  74. data/tracks/ruby/test/generator/underscore_test.rb +4 -0
  75. data/tracks/ruby/test/generator_test.rb +2 -2
  76. data/tracks/rust/exercises/gigasecond/Cargo.lock +58 -13
  77. data/tracks/rust/exercises/gigasecond/Cargo.toml +1 -1
  78. data/tracks/scala/exercises/acronym/src/test/scala/AcronymTest.scala +32 -12
  79. data/tracks/scala/exercises/hamming/example.scala +1 -1
  80. data/tracks/scala/exercises/hamming/src/test/scala/HammingTest.scala +55 -19
  81. data/tracks/scala/exercises/phone-number/example.scala +10 -20
  82. data/tracks/scala/exercises/phone-number/src/test/scala/PhoneNumberTest.scala +28 -81
  83. data/tracks/scala/testgen/src/main/scala/AcronymTestGenerator.scala +16 -0
  84. data/tracks/scala/testgen/src/main/scala/HammingTestGenerator.scala +34 -0
  85. data/tracks/scala/testgen/src/main/scala/PhoneNumberTestGenerator.scala +34 -0
  86. data/tracks/scheme/config.json +43 -16
  87. metadata +21 -5
  88. data/lib/trackler/problem.rb +0 -7
  89. data/lib/trackler/problems.rb +0 -7
@@ -1,117 +1,64 @@
1
- import org.scalatest._
1
+ import org.scalatest.{Matchers, FunSuite}
2
2
 
3
- class PhoneNumberTest extends FlatSpec with Matchers {
4
- behavior of "number"
3
+ /** @version 1.2.0 */
4
+ class PhoneNumberTest extends FunSuite with Matchers {
5
5
 
6
- it should "clean the number" in {
7
- val number = new PhoneNumber("(123) 456-7890").number
8
- number should be (Some("1234567890"))
6
+ test("cleans the number") {
7
+ PhoneNumber.clean("(223) 456-7890") should be (Some("2234567890"))
9
8
  }
10
9
 
11
- it should "clean numbers with dots" in {
10
+ test("cleans numbers with dots") {
12
11
  pending
13
- val number = new PhoneNumber("123.456.7890").number
14
- number should be (Some("1234567890"))
12
+ PhoneNumber.clean("223.456.7890") should be (Some("2234567890"))
15
13
  }
16
14
 
17
- it should "be valid when 11 digits and first is 1" in {
15
+ test("cleans numbers with multiple spaces") {
18
16
  pending
19
- val number = new PhoneNumber("11234567890").number
20
- number should be (Some("1234567890"))
17
+ PhoneNumber.clean("223 456 7890 ") should be (Some("2234567890"))
21
18
  }
22
19
 
23
- it should "be invalid when 11 digits" in {
20
+ test("invalid when 9 digits") {
24
21
  pending
25
- val number = new PhoneNumber("21234567890").number
26
- number should be (None)
22
+ PhoneNumber.clean("123456789") should be (None)
27
23
  }
28
24
 
29
- it should "be invalid when 9 digits" in {
25
+ test("invalid when 11 digits does not start with a 1") {
30
26
  pending
31
- val number = new PhoneNumber("123456789").number
32
- number should be (None)
27
+ PhoneNumber.clean("22234567890") should be (None)
33
28
  }
34
29
 
35
- it should "be invalid when 12 digits" in {
30
+ test("valid when 11 digits and starting with 1") {
36
31
  pending
37
- val number = new PhoneNumber("123456789012").number
38
- number should be (None)
32
+ PhoneNumber.clean("12234567890") should be (Some("2234567890"))
39
33
  }
40
34
 
41
- it should "be invalid when no digits present" in {
35
+ test("valid when 11 digits and starting with 1 even with punctuation") {
42
36
  pending
43
- val number = new PhoneNumber(" (-) ").number
44
- number should be (None)
37
+ PhoneNumber.clean("+1 (223) 456-7890") should be (Some("2234567890"))
45
38
  }
46
39
 
47
- it should "be valid with leading characters" in {
40
+ test("invalid when more than 11 digits") {
48
41
  pending
49
- val number = new PhoneNumber("my number is 235 813 2134").number
50
- number should be (Some("2358132134"))
42
+ PhoneNumber.clean("321234567890") should be (None)
51
43
  }
52
44
 
53
- it should "be valid with trailing characters" in {
45
+ test("invalid with letters") {
54
46
  pending
55
- val number = new PhoneNumber("987 654 3210 - bob").number
56
- number should be (Some("9876543210"))
47
+ PhoneNumber.clean("123-abc-7890") should be (None)
57
48
  }
58
49
 
59
- it should "be valid amidst text and punctuation" in {
50
+ test("invalid with punctuations") {
60
51
  pending
61
- val number = new PhoneNumber("Here it is: 415-888-0000. Thanks!").number
62
- number should be (Some("4158880000"))
52
+ PhoneNumber.clean("123-@:!-7890") should be (None)
63
53
  }
64
54
 
65
- behavior of "areaCode"
66
-
67
- it should "give the area code" in {
68
- pending
69
- val number = new PhoneNumber("1234567890")
70
- number.areaCode should be(Some("123"))
71
- }
72
-
73
- it should "give the area code with parentheses" in {
55
+ test("invalid if area code does not start with 2-9") {
74
56
  pending
75
- val number = new PhoneNumber("(612) 555-1212")
76
- number.areaCode should be(Some("612"))
57
+ PhoneNumber.clean("(123) 456-7890") should be (None)
77
58
  }
78
59
 
79
- it should "give the area code with leading characters" in {
80
- pending
81
- val number = new PhoneNumber("my number is 235 813 2134")
82
- number.areaCode should be(Some("235"))
83
- }
84
-
85
- it should "be invalid when no digits present" in {
86
- pending
87
- val number = new PhoneNumber(" (-) ")
88
- number.areaCode should be (None)
89
- }
90
-
91
- behavior of "prettyPrint"
92
-
93
- it should "format the number" in {
60
+ test("invalid if exchange code does not start with 2-9") {
94
61
  pending
95
- val number = new PhoneNumber("1234567890")
96
- number.prettyPrint should be (Some("(123) 456-7890"))
62
+ PhoneNumber.clean("(223) 056-7890") should be (None)
97
63
  }
98
-
99
- it should "format full US phone numbers" in {
100
- pending
101
- val number = new PhoneNumber("11234567890")
102
- number.prettyPrint should be (Some("(123) 456-7890"))
103
- }
104
-
105
- it should "format the number amidst text and punctuation" in {
106
- pending
107
- val number = new PhoneNumber("Here it is: 415-888-0000. Thanks!")
108
- number.prettyPrint should be (Some("(415) 888-0000"))
109
- }
110
-
111
- it should "be invalid for invalid numbers" in {
112
- pending
113
- val number = new PhoneNumber("I am invalid!")
114
- number.prettyPrint should be (None)
115
- }
116
- }
117
-
64
+ }
@@ -0,0 +1,16 @@
1
+ import testgen._
2
+ import TestSuiteBuilder._
3
+ import java.io.File
4
+
5
+ object AcronymTestGenerator {
6
+ def main(args: Array[String]): Unit = {
7
+ val file = new File("src/main/resources/acronym.json")
8
+
9
+ val code = TestSuiteBuilder.build(file, fromLabeledTest("phrase"))
10
+ println(s"-------------")
11
+ println(code)
12
+ println(s"-------------")
13
+
14
+ TestSuiteBuilder.writeToFile(code, new File("AcronymTest.scala"))
15
+ }
16
+ }
@@ -0,0 +1,34 @@
1
+ import java.io.File
2
+
3
+ import testgen.TestSuiteBuilder.{toString, _}
4
+ import testgen._
5
+
6
+ object HammingTestGenerator {
7
+ def main(args: Array[String]): Unit = {
8
+ val file = new File("src/main/resources/hamming.json")
9
+
10
+ def toString(expected: CanonicalDataParser.Expected): String = {
11
+ expected match {
12
+ case Left(_) => "None"
13
+ case Right(-1) => "None"
14
+ case Right(n) => s"Some($n)"
15
+ }
16
+ }
17
+
18
+ def fromLabeledTest(argNames: String*): ToTestCaseData =
19
+ withLabeledTest { sut =>
20
+ labeledTest =>
21
+ val args = sutArgs(labeledTest.result, argNames: _*)
22
+ val property = labeledTest.property
23
+ val sutCall =
24
+ s"""Hamming.$property($args)"""
25
+ val expected = toString(labeledTest.expected)
26
+ TestCaseData(labeledTest.description, sutCall, expected)
27
+ }
28
+
29
+ val code = TestSuiteBuilder.build(file, fromLabeledTest("strand1", "strand2"))
30
+ println(s"-------------")
31
+ println(code)
32
+ println(s"-------------")
33
+ }
34
+ }
@@ -0,0 +1,34 @@
1
+ import java.io.File
2
+
3
+ import testgen.TestSuiteBuilder._
4
+ import testgen._
5
+
6
+ object PhoneNumberTestGenerator {
7
+ def fromLabeledTest(argNames: String*): ToTestCaseData =
8
+ withLabeledTest { sut =>
9
+ labeledTest =>
10
+ val args = sutArgs(labeledTest.result, argNames: _*)
11
+ val property = labeledTest.property
12
+ val sutCall =
13
+ s"""PhoneNumber.$property($args)"""
14
+ val expected = toString(labeledTest.expected)
15
+ TestCaseData(labeledTest.description, sutCall, expected)
16
+ }
17
+
18
+ def toString(expected: CanonicalDataParser.Expected): String = {
19
+ expected match {
20
+ case Left(_) => "None"
21
+ case Right(null) => "None"
22
+ case Right(str) => s"""Some("$str")"""
23
+ }
24
+ }
25
+
26
+ def main(args: Array[String]): Unit = {
27
+ val file = new File("src/main/resources/phone-number.json")
28
+
29
+ val code = TestSuiteBuilder.build(file, fromLabeledTest("phrase"))
30
+ println(s"-------------")
31
+ println(code)
32
+ println(s"-------------")
33
+ }
34
+ }
@@ -3,78 +3,105 @@
3
3
  "language": "Scheme",
4
4
  "repository": "https://github.com/exercism/xscheme",
5
5
  "active": true,
6
- "exercises" : [
6
+ "exercises": [
7
7
  {
8
8
  "slug": "hello-world",
9
9
  "difficulty": 1,
10
- "topics": []
10
+ "topics": [
11
+
12
+ ]
11
13
  },
12
14
  {
13
15
  "slug": "hamming",
14
16
  "difficulty": 1,
15
- "topics": []
17
+ "topics": [
18
+
19
+ ]
16
20
  },
17
21
  {
18
22
  "slug": "leap",
19
23
  "difficulty": 1,
20
- "topics": []
24
+ "topics": [
25
+
26
+ ]
21
27
  },
22
28
  {
23
29
  "slug": "grains",
24
30
  "difficulty": 1,
25
- "topics": []
31
+ "topics": [
32
+
33
+ ]
26
34
  },
27
35
  {
28
36
  "slug": "bob",
29
37
  "difficulty": 1,
30
- "topics": []
38
+ "topics": [
39
+
40
+ ]
31
41
  },
32
42
  {
33
43
  "slug": "raindrops",
34
44
  "difficulty": 1,
35
- "topics": []
45
+ "topics": [
46
+
47
+ ]
36
48
  },
37
49
  {
38
50
  "slug": "rna-transcription",
39
51
  "difficulty": 1,
40
- "topics": []
52
+ "topics": [
53
+
54
+ ]
41
55
  },
42
56
  {
43
57
  "slug": "robot-name",
44
58
  "difficulty": 1,
45
- "topics": []
59
+ "topics": [
60
+
61
+ ]
46
62
  },
47
63
  {
48
64
  "slug": "phone-number",
49
65
  "difficulty": 1,
50
- "topics": []
66
+ "topics": [
67
+
68
+ ]
51
69
  },
52
70
  {
53
71
  "slug": "anagram",
54
72
  "difficulty": 1,
55
- "topics": []
73
+ "topics": [
74
+
75
+ ]
56
76
  },
57
77
  {
58
78
  "slug": "nucleotide-count",
59
79
  "difficulty": 1,
60
- "topics": []
80
+ "topics": [
81
+
82
+ ]
61
83
  },
62
84
  {
63
85
  "slug": "difference-of-squares",
64
86
  "difficulty": 1,
65
- "topics": []
87
+ "topics": [
88
+
89
+ ]
66
90
  },
67
91
  {
68
92
  "slug": "list-ops",
69
93
  "difficulty": 1,
70
- "topics": []
94
+ "topics": [
95
+
96
+ ]
71
97
  },
72
98
  {
73
99
  "slug": "scrabble-score",
74
100
  "difficulty": 1,
75
- "topics": []
76
- }
101
+ "topics": [
77
102
 
103
+ ]
104
+ }
78
105
  ],
79
106
  "deprecated": [
80
107
 
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.36
4
+ version: 2.1.0.37
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-06-12 00:00:00.000000000 Z
11
+ date: 2017-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -538,8 +538,6 @@ files:
538
538
  - lib/trackler/metadata.rb
539
539
  - lib/trackler/null_track.rb
540
540
  - lib/trackler/path.rb
541
- - lib/trackler/problem.rb
542
- - lib/trackler/problems.rb
543
541
  - lib/trackler/specification.rb
544
542
  - lib/trackler/specifications.rb
545
543
  - lib/trackler/track.rb
@@ -3194,6 +3192,8 @@ files:
3194
3192
  - tracks/fortran/exercises/hamming/hamming.fun
3195
3193
  - tracks/fortran/exercises/hello-world/example.f90
3196
3194
  - tracks/fortran/exercises/hello-world/hello_world.fun
3195
+ - tracks/fortran/exercises/pangram/example.f90
3196
+ - tracks/fortran/exercises/pangram/pangram.fun
3197
3197
  - tracks/fortran/exercises/raindrops/example.f90
3198
3198
  - tracks/fortran/exercises/raindrops/raindrops.fun
3199
3199
  - tracks/fortran/exercises/rna-transcription/example.f90
@@ -3757,10 +3757,10 @@ files:
3757
3757
  - tracks/groovy/.travis.yml
3758
3758
  - tracks/groovy/LICENSE
3759
3759
  - tracks/groovy/README.md
3760
- - tracks/groovy/SETUP.md
3761
3760
  - tracks/groovy/bin/fetch-configlet
3762
3761
  - tracks/groovy/config.json
3763
3762
  - tracks/groovy/docs/ABOUT.md
3763
+ - tracks/groovy/docs/EXERCISE_README_INSERT.md
3764
3764
  - tracks/groovy/docs/INSTALLATION.md
3765
3765
  - tracks/groovy/docs/LEARNING.md
3766
3766
  - tracks/groovy/docs/RESOURCES.md
@@ -5052,6 +5052,7 @@ files:
5052
5052
  - tracks/kotlin/_template/src/example/kotlin/.keep
5053
5053
  - tracks/kotlin/_template/src/main/kotlin/.keep
5054
5054
  - tracks/kotlin/_template/src/test/kotlin/.keep
5055
+ - tracks/kotlin/bin/build-jq.sh
5055
5056
  - tracks/kotlin/bin/fetch-configlet
5056
5057
  - tracks/kotlin/bin/journey-test.sh
5057
5058
  - tracks/kotlin/bin/unit-tests.sh
@@ -5153,6 +5154,7 @@ files:
5153
5154
  - tracks/kotlin/exercises/grade-school/src/example/kotlin/School.kt
5154
5155
  - tracks/kotlin/exercises/grade-school/src/main/kotlin/.keep
5155
5156
  - tracks/kotlin/exercises/grade-school/src/test/kotlin/SchoolTest.kt
5157
+ - tracks/kotlin/exercises/gradle.properties
5156
5158
  - tracks/kotlin/exercises/hamming/build.gradle
5157
5159
  - tracks/kotlin/exercises/hamming/src/example/kotlin/Hamming.kt
5158
5160
  - tracks/kotlin/exercises/hamming/src/main/kotlin/.keep
@@ -5184,6 +5186,11 @@ files:
5184
5186
  - tracks/kotlin/exercises/linked-list/src/example/kotlin/Deque.kt
5185
5187
  - tracks/kotlin/exercises/linked-list/src/main/kotlin/.keep
5186
5188
  - tracks/kotlin/exercises/linked-list/src/test/kotlin/DequeTest.kt
5189
+ - tracks/kotlin/exercises/list-ops/HINTS.md
5190
+ - tracks/kotlin/exercises/list-ops/build.gradle
5191
+ - tracks/kotlin/exercises/list-ops/src/example/kotlin/CustomListExtensions.kt
5192
+ - tracks/kotlin/exercises/list-ops/src/main/kotlin/.keep
5193
+ - tracks/kotlin/exercises/list-ops/src/test/kotlin/ListExtensionsTest.kt
5187
5194
  - tracks/kotlin/exercises/luhn/build.gradle
5188
5195
  - tracks/kotlin/exercises/luhn/src/example/kotlin/Luhn.kt
5189
5196
  - tracks/kotlin/exercises/luhn/src/main/kotlin/.keep
@@ -5276,6 +5283,10 @@ files:
5276
5283
  - tracks/kotlin/exercises/word-count/src/example/kotlin/WordCount.kt
5277
5284
  - tracks/kotlin/exercises/word-count/src/main/kotlin/.keep
5278
5285
  - tracks/kotlin/exercises/word-count/src/test/kotlin/WordCountTest.kt
5286
+ - tracks/kotlin/gradle/wrapper/gradle-wrapper.jar
5287
+ - tracks/kotlin/gradle/wrapper/gradle-wrapper.properties
5288
+ - tracks/kotlin/gradlew
5289
+ - tracks/kotlin/gradlew.bat
5279
5290
  - tracks/kotlin/img/icon.png
5280
5291
  - tracks/lfe/.git
5281
5292
  - tracks/lfe/.gitignore
@@ -7719,6 +7730,7 @@ files:
7719
7730
  - tracks/ruby/lib/generator/case_values.rb
7720
7731
  - tracks/ruby/lib/generator/command_line.rb
7721
7732
  - tracks/ruby/lib/generator/command_line/generator_optparser.rb
7733
+ - tracks/ruby/lib/generator/exercise.rb
7722
7734
  - tracks/ruby/lib/generator/exercise_case.rb
7723
7735
  - tracks/ruby/lib/generator/exercise_case/assertion.rb
7724
7736
  - tracks/ruby/lib/generator/exercise_case/case_helpers.rb
@@ -7751,6 +7763,7 @@ files:
7751
7763
  - tracks/ruby/test/generator/exercise_case/assertion_test.rb
7752
7764
  - tracks/ruby/test/generator/exercise_case/case_helpers_test.rb
7753
7765
  - tracks/ruby/test/generator/exercise_case_test.rb
7766
+ - tracks/ruby/test/generator/exercise_test.rb
7754
7767
  - tracks/ruby/test/generator/files/generate_cases_test.rb
7755
7768
  - tracks/ruby/test/generator/files/metadata_files_test.rb
7756
7769
  - tracks/ruby/test/generator/files/track_files_test.rb
@@ -8501,6 +8514,7 @@ files:
8501
8514
  - tracks/scala/testgen/build.sbt
8502
8515
  - tracks/scala/testgen/project/build.properties
8503
8516
  - tracks/scala/testgen/project/plugins.sbt
8517
+ - tracks/scala/testgen/src/main/scala/AcronymTestGenerator.scala
8504
8518
  - tracks/scala/testgen/src/main/scala/AllYourBaseTestGenerator.scala
8505
8519
  - tracks/scala/testgen/src/main/scala/BeerSongTestGenerator.scala
8506
8520
  - tracks/scala/testgen/src/main/scala/BinarySearchTestGenerator.scala
@@ -8511,12 +8525,14 @@ files:
8511
8525
  - tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala
8512
8526
  - tracks/scala/testgen/src/main/scala/DifferenceOfSquaresTestGenerator.scala
8513
8527
  - tracks/scala/testgen/src/main/scala/FoodChainTestGenerator.scala
8528
+ - tracks/scala/testgen/src/main/scala/HammingTestGenerator.scala
8514
8529
  - tracks/scala/testgen/src/main/scala/HelloWorldTestGenerator.scala
8515
8530
  - tracks/scala/testgen/src/main/scala/IsogramTestGenerator.scala
8516
8531
  - tracks/scala/testgen/src/main/scala/LeapTestGenerator.scala
8517
8532
  - tracks/scala/testgen/src/main/scala/NucleotideCountTestGenerator.scala
8518
8533
  - tracks/scala/testgen/src/main/scala/PangramsTestGenerator.scala
8519
8534
  - tracks/scala/testgen/src/main/scala/PerfectNumbersTestGenerator.scala
8535
+ - tracks/scala/testgen/src/main/scala/PhoneNumberTestGenerator.scala
8520
8536
  - tracks/scala/testgen/src/main/scala/RailFenceCipherTestGenerator.scala
8521
8537
  - tracks/scala/testgen/src/main/scala/RaindropsTestGenerator.scala
8522
8538
  - tracks/scala/testgen/src/main/scala/SumOfMultiplesTestGenerator.scala
@@ -1,7 +0,0 @@
1
- require_relative 'specification'
2
-
3
- module Trackler
4
- # Problem is a language-independent definition of an exercise.
5
- class Problem < Trackler::Specification
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- require_relative 'specifications'
2
-
3
- module Trackler
4
- # Problems is the collection of problems that we have metadata for.
5
- class Problems < Trackler::Specifications
6
- end
7
- end