trackler 2.2.1.95 → 2.2.1.96

Sign up to get free protection for your applications and to get access to all the features.
Files changed (205) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/two-bucket/canonical-data.json +31 -31
  4. data/tracks/csharp/docs/ABOUT.md +21 -3
  5. data/tracks/dart/.travis.yml +1 -2
  6. data/tracks/dart/README.md +2 -2
  7. data/tracks/dart/{tool/create-exercise → bin/create_exercise.dart} +14 -10
  8. data/tracks/dart/test/create_exercise_test.dart +132 -0
  9. data/tracks/dart/test/exercises_test.dart +1 -1
  10. data/tracks/fsharp/exercises/list-ops/Example.fs +5 -5
  11. data/tracks/fsharp/exercises/list-ops/ListOps.fs +1 -1
  12. data/tracks/fsharp/exercises/list-ops/ListOpsTest.fs +41 -62
  13. data/tracks/fsharp/generators/Common.fs +3 -0
  14. data/tracks/fsharp/generators/Formatting.fs +3 -1
  15. data/tracks/fsharp/generators/Generators.fs +21 -0
  16. data/tracks/go/config.json +14 -0
  17. data/tracks/go/exercises/grep/.meta/gen.go +76 -0
  18. data/tracks/go/exercises/grep/.meta/hints.md +13 -0
  19. data/tracks/go/exercises/grep/README.md +104 -0
  20. data/tracks/go/exercises/grep/cases_test.go +202 -0
  21. data/tracks/go/exercises/grep/example.go +102 -0
  22. data/tracks/go/exercises/grep/grep_test.go +84 -0
  23. data/tracks/java/exercises/anagram/.meta/version +1 -1
  24. data/tracks/java/exercises/anagram/src/test/java/AnagramTest.java +0 -32
  25. data/tracks/java/exercises/space-age/.meta/src/reference/java/SpaceAge.java +0 -4
  26. data/tracks/java/exercises/space-age/.meta/version +1 -0
  27. data/tracks/java/exercises/space-age/src/test/java/SpaceAgeTest.java +0 -16
  28. data/tracks/julia/.gitignore +1 -0
  29. data/tracks/julia/exercises/complex-numbers/{HINTS.md → .meta/hints.md} +0 -0
  30. data/tracks/julia/exercises/custom-set/{HINTS.md → .meta/hints.md} +0 -0
  31. data/tracks/julia/exercises/robot-name/{HINTS.md → .meta/hints.md} +0 -0
  32. data/tracks/julia/exercises/rotational-cipher/{HINTS.md → .meta/hints.md} +0 -0
  33. data/tracks/julia/runtests.jl +24 -25
  34. data/tracks/perl6/.travis.yml +7 -3
  35. data/tracks/perl6/Dockerfile +4 -0
  36. data/tracks/perl6/exercises/accumulate/Accumulate.pm6 +1 -1
  37. data/tracks/perl6/exercises/accumulate/Example.pm6 +1 -1
  38. data/tracks/perl6/exercises/accumulate/accumulate.t +6 -15
  39. data/tracks/perl6/exercises/accumulate/example.yaml +2 -3
  40. data/tracks/perl6/exercises/acronym/Acronym.pm6 +1 -1
  41. data/tracks/perl6/exercises/acronym/Example.pm6 +1 -1
  42. data/tracks/perl6/exercises/acronym/acronym.t +7 -29
  43. data/tracks/perl6/exercises/acronym/example.yaml +2 -3
  44. data/tracks/perl6/exercises/all-your-base/AllYourBase.pm6 +1 -1
  45. data/tracks/perl6/exercises/all-your-base/Example.pm6 +1 -1
  46. data/tracks/perl6/exercises/all-your-base/all-your-base.t +7 -29
  47. data/tracks/perl6/exercises/all-your-base/example.yaml +2 -3
  48. data/tracks/perl6/exercises/allergies/Allergies.pm6 +1 -1
  49. data/tracks/perl6/exercises/allergies/Example.pm6 +1 -1
  50. data/tracks/perl6/exercises/allergies/allergies.t +7 -29
  51. data/tracks/perl6/exercises/allergies/example.yaml +2 -3
  52. data/tracks/perl6/exercises/anagram/Anagram.pm6 +1 -1
  53. data/tracks/perl6/exercises/anagram/Example.pm6 +1 -1
  54. data/tracks/perl6/exercises/anagram/anagram.t +7 -29
  55. data/tracks/perl6/exercises/anagram/example.yaml +2 -3
  56. data/tracks/perl6/exercises/atbash-cipher/AtbashCipher.pm6 +1 -1
  57. data/tracks/perl6/exercises/atbash-cipher/Example.pm6 +1 -1
  58. data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +7 -29
  59. data/tracks/perl6/exercises/atbash-cipher/example.yaml +2 -3
  60. data/tracks/{julia/exercises/.keep → perl6/exercises/binary/Binary.pm6} +0 -0
  61. data/tracks/perl6/exercises/binary/binary.t +3 -5
  62. data/tracks/perl6/exercises/bob/Bob.pm6 +1 -1
  63. data/tracks/perl6/exercises/bob/Example.pm6 +1 -1
  64. data/tracks/perl6/exercises/bob/bob.t +9 -32
  65. data/tracks/perl6/exercises/bob/example.yaml +3 -7
  66. data/tracks/perl6/exercises/clock/Clock.pm6 +1 -1
  67. data/tracks/perl6/exercises/clock/Example.pm6 +1 -1
  68. data/tracks/perl6/exercises/clock/clock.t +12 -32
  69. data/tracks/perl6/exercises/clock/example.yaml +6 -6
  70. data/tracks/perl6/exercises/etl/ETL.pm6 +1 -1
  71. data/tracks/perl6/exercises/etl/Example.pm6 +1 -1
  72. data/tracks/perl6/exercises/etl/etl.t +7 -29
  73. data/tracks/perl6/exercises/etl/example.yaml +2 -3
  74. data/tracks/perl6/exercises/flatten-array/Example.pm6 +1 -1
  75. data/tracks/perl6/exercises/flatten-array/FlattenArray.pm6 +1 -1
  76. data/tracks/perl6/exercises/flatten-array/example.yaml +2 -3
  77. data/tracks/perl6/exercises/flatten-array/flatten-array.t +7 -29
  78. data/tracks/perl6/exercises/grade-school/Example.pm6 +1 -1
  79. data/tracks/perl6/exercises/grade-school/GradeSchool.pm6 +1 -1
  80. data/tracks/perl6/exercises/grade-school/example.yaml +2 -3
  81. data/tracks/perl6/exercises/grade-school/grade-school.t +6 -15
  82. data/tracks/perl6/exercises/grains/Example.pm6 +1 -1
  83. data/tracks/perl6/exercises/grains/Grains.pm6 +1 -1
  84. data/tracks/perl6/exercises/grains/example.yaml +2 -3
  85. data/tracks/perl6/exercises/grains/grains.t +7 -29
  86. data/tracks/perl6/exercises/hamming/Example.pm6 +1 -1
  87. data/tracks/perl6/exercises/hamming/Hamming.pm6 +1 -1
  88. data/tracks/perl6/exercises/hamming/example.yaml +2 -3
  89. data/tracks/perl6/exercises/hamming/hamming.t +7 -29
  90. data/tracks/perl6/exercises/hello-world/Example.pm6 +1 -1
  91. data/tracks/perl6/exercises/hello-world/HelloWorld.pm6 +1 -1
  92. data/tracks/perl6/exercises/hello-world/example.yaml +2 -8
  93. data/tracks/perl6/exercises/hello-world/hello-world.t +7 -33
  94. data/tracks/perl6/exercises/leap/Example.pm6 +1 -1
  95. data/tracks/perl6/exercises/leap/Leap.pm6 +1 -1
  96. data/tracks/perl6/exercises/leap/example.yaml +2 -3
  97. data/tracks/perl6/exercises/leap/leap.t +7 -29
  98. data/tracks/perl6/exercises/linked-list/Example.pm6 +1 -1
  99. data/tracks/perl6/exercises/linked-list/LinkedList.pm6 +1 -1
  100. data/tracks/perl6/exercises/linked-list/example.yaml +3 -3
  101. data/tracks/perl6/exercises/linked-list/linked-list.t +9 -16
  102. data/tracks/perl6/exercises/luhn/Example.pm6 +1 -1
  103. data/tracks/perl6/exercises/luhn/Luhn.pm6 +1 -1
  104. data/tracks/perl6/exercises/luhn/example.yaml +2 -3
  105. data/tracks/perl6/exercises/luhn/luhn.t +7 -29
  106. data/tracks/perl6/exercises/meetup/Example.pm6 +1 -1
  107. data/tracks/perl6/exercises/meetup/Meetup.pm6 +1 -1
  108. data/tracks/perl6/exercises/meetup/example.yaml +2 -3
  109. data/tracks/perl6/exercises/meetup/meetup.t +7 -29
  110. data/tracks/perl6/exercises/nucleotide-count/Example.pm6 +1 -1
  111. data/tracks/perl6/exercises/nucleotide-count/NucleotideCount.pm6 +1 -1
  112. data/tracks/perl6/exercises/nucleotide-count/example.yaml +2 -3
  113. data/tracks/perl6/exercises/nucleotide-count/nucleotide-count.t +7 -29
  114. data/tracks/perl6/exercises/pangram/Example.pm6 +1 -1
  115. data/tracks/perl6/exercises/pangram/Pangram.pm6 +1 -1
  116. data/tracks/perl6/exercises/pangram/example.yaml +2 -3
  117. data/tracks/perl6/exercises/pangram/pangram.t +7 -29
  118. data/tracks/perl6/exercises/phone-number/Example.pm6 +1 -1
  119. data/tracks/perl6/exercises/phone-number/Phone.pm6 +1 -1
  120. data/tracks/perl6/exercises/phone-number/example.yaml +2 -3
  121. data/tracks/perl6/exercises/phone-number/phone-number.t +7 -29
  122. data/tracks/perl6/exercises/raindrops/Example.pm6 +1 -1
  123. data/tracks/perl6/exercises/raindrops/Raindrops.pm6 +1 -1
  124. data/tracks/perl6/exercises/raindrops/example.yaml +2 -3
  125. data/tracks/perl6/exercises/raindrops/raindrops.t +7 -29
  126. data/tracks/perl6/exercises/rna-transcription/Example.pm6 +1 -1
  127. data/tracks/perl6/exercises/rna-transcription/RNA.pm6 +1 -1
  128. data/tracks/perl6/exercises/rna-transcription/example.yaml +2 -3
  129. data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +7 -29
  130. data/tracks/perl6/exercises/robot-name/Example.pm6 +1 -1
  131. data/tracks/perl6/exercises/robot-name/Robot.pm6 +1 -1
  132. data/tracks/perl6/exercises/robot-name/example.yaml +5 -5
  133. data/tracks/perl6/exercises/robot-name/robot-name.t +10 -17
  134. data/tracks/perl6/exercises/roman-numerals/Example.pm6 +1 -1
  135. data/tracks/perl6/exercises/roman-numerals/RomanNumerals.pm6 +1 -1
  136. data/tracks/perl6/exercises/roman-numerals/example.yaml +2 -3
  137. data/tracks/perl6/exercises/roman-numerals/roman-numerals.t +7 -29
  138. data/tracks/perl6/exercises/scrabble-score/Example.pm6 +1 -1
  139. data/tracks/perl6/exercises/scrabble-score/Scrabble.pm6 +1 -1
  140. data/tracks/perl6/exercises/scrabble-score/example.yaml +2 -3
  141. data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +7 -29
  142. data/tracks/perl6/exercises/space-age/Example.pm6 +1 -1
  143. data/tracks/perl6/exercises/space-age/SpaceAge.pm6 +1 -1
  144. data/tracks/perl6/exercises/space-age/example.yaml +2 -3
  145. data/tracks/perl6/exercises/space-age/space-age.t +7 -29
  146. data/tracks/perl6/exercises/trinary/Trinary.pm6 +0 -0
  147. data/tracks/perl6/exercises/trinary/trinary.t +2 -5
  148. data/tracks/perl6/exercises/two-fer/Example.pm6 +1 -1
  149. data/tracks/perl6/exercises/two-fer/TwoFer.pm6 +1 -1
  150. data/tracks/perl6/exercises/two-fer/example.yaml +2 -8
  151. data/tracks/perl6/exercises/two-fer/two-fer.t +7 -33
  152. data/tracks/perl6/exercises/word-count/Example.pm6 +1 -1
  153. data/tracks/perl6/exercises/word-count/WordCount.pm6 +1 -1
  154. data/tracks/perl6/exercises/word-count/example.yaml +2 -3
  155. data/tracks/perl6/exercises/word-count/word-count.t +7 -29
  156. data/tracks/perl6/exercises/wordy/Example.pm6 +1 -1
  157. data/tracks/perl6/exercises/wordy/Wordy.pm6 +1 -1
  158. data/tracks/perl6/exercises/wordy/example.yaml +2 -3
  159. data/tracks/perl6/exercises/wordy/wordy.t +7 -29
  160. data/tracks/perl6/templates/test.mustache +10 -39
  161. data/tracks/python/config.json +10 -0
  162. data/tracks/python/exercises/all-your-base/all_your_base_test.py +2 -2
  163. data/tracks/python/exercises/binary-search/binary_search_test.py +2 -2
  164. data/tracks/python/exercises/binary/binary_test.py +2 -2
  165. data/tracks/python/exercises/bob/bob_test.py +4 -2
  166. data/tracks/python/exercises/bob/example.py +5 -2
  167. data/tracks/python/exercises/circular-buffer/circular_buffer_test.py +2 -2
  168. data/tracks/python/exercises/custom-set/README.md +20 -0
  169. data/tracks/python/exercises/custom-set/custom_set.py +30 -0
  170. data/tracks/python/exercises/custom-set/custom_set_test.py +212 -0
  171. data/tracks/python/exercises/custom-set/example.py +45 -0
  172. data/tracks/python/exercises/dot-dsl/dot_dsl_test.py +20 -10
  173. data/tracks/python/exercises/error-handling/error_handling_test.py +2 -2
  174. data/tracks/python/exercises/forth/forth_test.py +18 -18
  175. data/tracks/python/exercises/grains/grains_test.py +2 -2
  176. data/tracks/python/exercises/hamming/hamming_test.py +2 -2
  177. data/tracks/python/exercises/hexadecimal/hexadecimal_test.py +2 -2
  178. data/tracks/python/exercises/largest-series-product/largest_series_product_test.py +2 -2
  179. data/tracks/python/exercises/meetup/meetup_test.py +2 -2
  180. data/tracks/python/exercises/minesweeper/minesweeper_test.py +2 -2
  181. data/tracks/python/exercises/nth-prime/nth_prime_test.py +2 -2
  182. data/tracks/python/exercises/nucleotide-count/nucleotide_count_test.py +2 -2
  183. data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +2 -2
  184. data/tracks/python/exercises/octal/octal_test.py +2 -2
  185. data/tracks/python/exercises/perfect-numbers/perfect_numbers_test.py +2 -2
  186. data/tracks/python/exercises/phone-number/phone_number_test.py +2 -2
  187. data/tracks/python/exercises/pov/pov_test.py +2 -2
  188. data/tracks/python/exercises/protein-translation/protein_translation_test.py +2 -2
  189. data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet_test.py +2 -2
  190. data/tracks/python/exercises/queen-attack/queen_attack_test.py +2 -2
  191. data/tracks/python/exercises/rna-transcription/rna_transcription_test.py +2 -2
  192. data/tracks/python/exercises/saddle-points/saddle_points_test.py +2 -2
  193. data/tracks/python/exercises/say/say_test.py +2 -2
  194. data/tracks/python/exercises/scale-generator/scale_generator_test.py +2 -2
  195. data/tracks/python/exercises/series/series_test.py +2 -2
  196. data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +2 -2
  197. data/tracks/python/exercises/simple-linked-list/simple_linked_list_test.py +2 -2
  198. data/tracks/python/exercises/tree-building/tree_building_test.py +2 -2
  199. data/tracks/python/exercises/triangle/example.py +14 -24
  200. data/tracks/python/exercises/triangle/triangle.py +6 -6
  201. data/tracks/python/exercises/triangle/triangle_test.py +42 -44
  202. data/tracks/python/exercises/variable-length-quantity/variable_length_quantity_test.py +2 -2
  203. data/tracks/python/exercises/wordy/wordy_test.py +2 -2
  204. data/tracks/python/test/check-exercises.py +2 -1
  205. metadata +22 -8
@@ -1,7 +1,6 @@
1
1
  exercise: Accumulate
2
- version: 1
3
- plan: 7
4
- imports: '&accumulate'
2
+ version: 2
3
+ plan: 6
5
4
  tests: |-
6
5
  is-deeply accumulate([ ], sub {}),
7
6
  [ ],
@@ -1,4 +1,4 @@
1
- unit module Acronym:ver<1>;
1
+ unit module Acronym:ver<2>;
2
2
 
3
3
  sub abbreviate ($phrase) is export {
4
4
  }
@@ -1,4 +1,4 @@
1
- unit module Acronym:ver<1>;
1
+ unit module Acronym:ver<2>;
2
2
 
3
3
  sub abbreviate ($phrase) is export {
4
4
  [~] $phrase.uc.comb(/\w+/).map: *.substr(0, 1);
@@ -1,26 +1,19 @@
1
1
  #!/usr/bin/env perl6
2
2
  use v6;
3
3
  use Test;
4
- use lib my $dir = $?FILE.IO.dirname;
5
4
  use JSON::Fast;
5
+ use lib $?FILE.IO.dirname;
6
+ use Acronym;
7
+ plan 6;
6
8
 
7
- my Str:D $exercise := 'Acronym';
8
- my Version:D $version = v1;
9
- my Str $module //= $exercise;
10
- plan 8;
9
+ my Version:D $version = v2;
11
10
 
12
- use-ok $module or bail-out;
13
- require ::($module);
14
-
15
- if ::($exercise).^ver !~~ $version {
11
+ if Acronym.^ver !~~ $version {
16
12
  warn "\nExercise version mismatch. Further tests may fail!"
17
- ~ "\n$exercise is $(::($exercise).^ver.gist). "
18
- ~ "Test is $($version.gist).\n";
19
- bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
13
+ ~ "\nAcronym is {Acronym.^ver.gist}. "
14
+ ~ "Test is {$version.gist}.\n";
20
15
  }
21
16
 
22
- require ::($module) <&abbreviate>;
23
-
24
17
  my $c-data = from-json $=pod.pop.contents;
25
18
 
26
19
  for $c-data<cases>»<cases>».Array.flat {
@@ -91,18 +84,3 @@ for $c-data<cases>»<cases>».Array.flat {
91
84
  }
92
85
 
93
86
  =end code
94
-
95
- unless %*ENV<EXERCISM> {
96
- skip-rest 'exercism tests';
97
- exit;
98
- }
99
-
100
- subtest 'canonical-data' => {
101
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
102
- $dir.IO.resolve.basename
103
- }/canonical-data.json".IO.resolve) ~~ :f ??
104
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
105
- flunk 'problem-specifications file not found';
106
- }
107
-
108
- INIT { $module = 'Example' if %*ENV<EXERCISM> }
@@ -1,7 +1,6 @@
1
1
  exercise: Acronym
2
- version: 1
3
- plan: 8
4
- imports: '&abbreviate'
2
+ version: 2
3
+ plan: 6
5
4
  tests: |-
6
5
 
7
6
  for $c-data<cases>»<cases>».Array.flat {
@@ -1,4 +1,4 @@
1
- unit module AllYourBase:ver<3>;
1
+ unit module AllYourBase:ver<4>;
2
2
 
3
3
  sub convert-base (:%bases!, :@digits!) is export {
4
4
  }
@@ -1,4 +1,4 @@
1
- unit module AllYourBase:ver<3>;
1
+ unit module AllYourBase:ver<4>;
2
2
 
3
3
  sub convert-base (
4
4
  :%bases! where all(.keys ~~ <from to>.Set, .values.all > 1),
@@ -1,26 +1,19 @@
1
1
  #!/usr/bin/env perl6
2
2
  use v6;
3
3
  use Test;
4
- use lib my $dir = $?FILE.IO.dirname;
5
4
  use JSON::Fast;
5
+ use lib $?FILE.IO.dirname;
6
+ use AllYourBase;
7
+ plan 21;
6
8
 
7
- my Str:D $exercise := 'AllYourBase';
8
- my Version:D $version = v3;
9
- my Str $module //= $exercise;
10
- plan 23;
9
+ my Version:D $version = v4;
11
10
 
12
- use-ok $module or bail-out;
13
- require ::($module);
14
-
15
- if ::($exercise).^ver !~~ $version {
11
+ if AllYourBase.^ver !~~ $version {
16
12
  warn "\nExercise version mismatch. Further tests may fail!"
17
- ~ "\n$exercise is $(::($exercise).^ver.gist). "
18
- ~ "Test is $($version.gist).\n";
19
- bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
13
+ ~ "\nAllYourBase is {AllYourBase.^ver.gist}. "
14
+ ~ "Test is {$version.gist}.\n";
20
15
  }
21
16
 
22
- require ::($module) <&convert-base>;
23
-
24
17
  my $c-data = from-json $=pod.pop.contents;
25
18
  for $c-data<cases>.values -> $case {
26
19
  sub call-convert-base {
@@ -272,18 +265,3 @@ for $c-data<cases>.values -> $case {
272
265
  }
273
266
 
274
267
  =end code
275
-
276
- unless %*ENV<EXERCISM> {
277
- skip-rest 'exercism tests';
278
- exit;
279
- }
280
-
281
- subtest 'canonical-data' => {
282
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
283
- $dir.IO.resolve.basename
284
- }/canonical-data.json".IO.resolve) ~~ :f ??
285
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
286
- flunk 'problem-specifications file not found';
287
- }
288
-
289
- INIT { $module = 'Example' if %*ENV<EXERCISM> }
@@ -1,7 +1,6 @@
1
1
  exercise: AllYourBase
2
- version: 3
3
- plan: 23
4
- imports: '&convert-base'
2
+ version: 4
3
+ plan: 21
5
4
  tests: |-
6
5
  for $c-data<cases>.values -> $case {
7
6
  sub call-convert-base {
@@ -1 +1 @@
1
- unit module Allergies:ver<3>;
1
+ unit module Allergies:ver<4>;
@@ -1,4 +1,4 @@
1
- unit module Allergies:ver<3>;
1
+ unit module Allergies:ver<4>;
2
2
 
3
3
  our @allergens = <
4
4
  eggs
@@ -1,26 +1,19 @@
1
1
  #!/usr/bin/env perl6
2
2
  use v6;
3
3
  use Test;
4
- use lib my $dir = $?FILE.IO.dirname;
5
4
  use JSON::Fast;
5
+ use lib $?FILE.IO.dirname;
6
+ use Allergies;
7
+ plan 2;
6
8
 
7
- my Str:D $exercise := 'Allergies';
8
- my Version:D $version = v3;
9
- my Str $module //= $exercise;
10
- plan 4;
9
+ my Version:D $version = v4;
11
10
 
12
- use-ok $module or bail-out;
13
- require ::($module);
14
-
15
- if ::($exercise).^ver !~~ $version {
11
+ if Allergies.^ver !~~ $version {
16
12
  warn "\nExercise version mismatch. Further tests may fail!"
17
- ~ "\n$exercise is $(::($exercise).^ver.gist). "
18
- ~ "Test is $($version.gist).\n";
19
- bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
13
+ ~ "\nAllergies is {Allergies.^ver.gist}. "
14
+ ~ "Test is {$version.gist}.\n";
20
15
  }
21
16
 
22
- require ::($module) <&allergic-to &list-allergies>;
23
-
24
17
  my $c-data = from-json $=pod.pop.contents;
25
18
  for $c-data<cases>.values -> %case-set {
26
19
 
@@ -226,18 +219,3 @@ for $c-data<cases>.values -> %case-set {
226
219
  }
227
220
 
228
221
  =end code
229
-
230
- unless %*ENV<EXERCISM> {
231
- skip-rest 'exercism tests';
232
- exit;
233
- }
234
-
235
- subtest 'canonical-data' => {
236
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
237
- $dir.IO.resolve.basename
238
- }/canonical-data.json".IO.resolve) ~~ :f ??
239
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
240
- flunk 'problem-specifications file not found';
241
- }
242
-
243
- INIT { $module = 'Example' if %*ENV<EXERCISM> }
@@ -1,7 +1,6 @@
1
1
  exercise: Allergies
2
- version: 3
3
- plan: 4
4
- imports: '&allergic-to &list-allergies'
2
+ version: 4
3
+ plan: 2
5
4
  tests: |-
6
5
  for $c-data<cases>.values -> %case-set {
7
6
 
@@ -1,4 +1,4 @@
1
- unit module Anagram:ver<2>;
1
+ unit module Anagram:ver<3>;
2
2
 
3
3
  sub match-anagrams (:$subject!, :@candidates!) is export {
4
4
  }
@@ -1,4 +1,4 @@
1
- unit module Anagram:ver<2>;
1
+ unit module Anagram:ver<3>;
2
2
 
3
3
  sub match-anagrams ( :$subject!, :@candidates! ) is export {
4
4
  given $subject.uc -> $ucs {
@@ -1,26 +1,19 @@
1
1
  #!/usr/bin/env perl6
2
2
  use v6;
3
3
  use Test;
4
- use lib my $dir = $?FILE.IO.dirname;
5
4
  use JSON::Fast;
5
+ use lib $?FILE.IO.dirname;
6
+ use Anagram;
7
+ plan 16;
6
8
 
7
- my Str:D $exercise := 'Anagram';
8
- my Version:D $version = v2;
9
- my Str $module //= $exercise;
10
- plan 18;
9
+ my Version:D $version = v3;
11
10
 
12
- use-ok $module or bail-out;
13
- require ::($module);
14
-
15
- if ::($exercise).^ver !~~ $version {
11
+ if Anagram.^ver !~~ $version {
16
12
  warn "\nExercise version mismatch. Further tests may fail!"
17
- ~ "\n$exercise is $(::($exercise).^ver.gist). "
18
- ~ "Test is $($version.gist).\n";
19
- bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
13
+ ~ "\nAnagram is {Anagram.^ver.gist}. "
14
+ ~ "Test is {$version.gist}.\n";
20
15
  }
21
16
 
22
- require ::($module) <&match-anagrams>;
23
-
24
17
  my $c-data = from-json $=pod.pop.contents;
25
18
  cmp-ok match-anagrams( |%(.<input><subject candidates>:p) ), '~~', .<expected>.Set, .<description> for $c-data<cases>.values;
26
19
 
@@ -192,18 +185,3 @@ cmp-ok match-anagrams( |%(.<input><subject candidates>:p) ), '~~', .<expected>.S
192
185
  }
193
186
 
194
187
  =end code
195
-
196
- unless %*ENV<EXERCISM> {
197
- skip-rest 'exercism tests';
198
- exit;
199
- }
200
-
201
- subtest 'canonical-data' => {
202
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
203
- $dir.IO.resolve.basename
204
- }/canonical-data.json".IO.resolve) ~~ :f ??
205
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
206
- flunk 'problem-specifications file not found';
207
- }
208
-
209
- INIT { $module = 'Example' if %*ENV<EXERCISM> }
@@ -1,7 +1,6 @@
1
1
  exercise: Anagram
2
- version: 2
3
- plan: 18
4
- imports: '&match-anagrams'
2
+ version: 3
3
+ plan: 16
5
4
  tests: |-
6
5
  cmp-ok match-anagrams( |%(.<input><subject candidates>:p) ), '~~', .<expected>.Set, .<description> for $c-data<cases>.values;
7
6
 
@@ -1,4 +1,4 @@
1
- unit module AtbashCipher:ver<1>;
1
+ unit module AtbashCipher:ver<2>;
2
2
 
3
3
  sub encode ($phrase) is export {
4
4
  }
@@ -1,4 +1,4 @@
1
- unit module AtbashCipher:ver<1>;
1
+ unit module AtbashCipher:ver<2>;
2
2
 
3
3
  sub encode($input) is export {
4
4
  decode($input.lc.trans( ['a'..'z', 0..9] => '', :complement ) )
@@ -1,26 +1,19 @@
1
1
  #!/usr/bin/env perl6
2
2
  use v6;
3
3
  use Test;
4
- use lib my $dir = $?FILE.IO.dirname;
5
4
  use JSON::Fast;
5
+ use lib $?FILE.IO.dirname;
6
+ use AtbashCipher;
7
+ plan 12;
6
8
 
7
- my Str:D $exercise := 'AtbashCipher';
8
- my Version:D $version = v1;
9
- my Str $module //= $exercise;
10
- plan 14;
9
+ my Version:D $version = v2;
11
10
 
12
- use-ok $module or bail-out;
13
- require ::($module);
14
-
15
- if ::($exercise).^ver !~~ $version {
11
+ if AtbashCipher.^ver !~~ $version {
16
12
  warn "\nExercise version mismatch. Further tests may fail!"
17
- ~ "\n$exercise is $(::($exercise).^ver.gist). "
18
- ~ "Test is $($version.gist).\n";
19
- bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
13
+ ~ "\nAtbashCipher is {AtbashCipher.^ver.gist}. "
14
+ ~ "Test is {$version.gist}.\n";
20
15
  }
21
16
 
22
- require ::($module) <&encode &decode>;
23
-
24
17
  my $c-data = from-json $=pod.pop.contents;
25
18
  is .<input><phrase>.&::(.<property>), |.<expected description> for $c-data<cases>»<cases>».Array.flat;
26
19
 
@@ -147,18 +140,3 @@ is .<input><phrase>.&::(.<property>), |.<expected description> for $c-data<cases
147
140
  ]
148
141
  }
149
142
  =end code
150
-
151
- unless %*ENV<EXERCISM> {
152
- skip-rest 'exercism tests';
153
- exit;
154
- }
155
-
156
- subtest 'canonical-data' => {
157
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
158
- $dir.IO.resolve.basename
159
- }/canonical-data.json".IO.resolve) ~~ :f ??
160
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
161
- flunk 'problem-specifications file not found';
162
- }
163
-
164
- INIT { $module = 'Example' if %*ENV<EXERCISM> }
@@ -1,7 +1,6 @@
1
1
  exercise: AtbashCipher
2
- version: 1
3
- plan: 14
4
- imports: '&encode &decode'
2
+ version: 2
3
+ plan: 12
5
4
  tests: |-
6
5
  is .<input><phrase>.&::(.<property>), |.<expected description> for $c-data<cases>»<cases>».Array.flat;
7
6
 
@@ -1,12 +1,10 @@
1
1
  #!/usr/bin/env perl6
2
2
  use v6;
3
3
  use Test;
4
- use lib IO::Path.new($?FILE).parent.path;
4
+ use lib $?FILE.IO.dirname;
5
+ use Binary;
5
6
 
6
- plan 10;
7
- my $module = %*ENV<EXERCISM> ?? 'Example' !! 'Binary';
8
- use-ok $module;
9
- require ::($module) <Binary>;
7
+ plan 9;
10
8
 
11
9
  ok Binary.can('to_decimal'), 'Class Binary has to_decimal method';
12
10
 
@@ -2,7 +2,7 @@
2
2
  Declare class 'Bob' with version and unit-scope the class
3
3
  i.e. everything in this file is part of 'Bob'.
4
4
  ]
5
- unit class Bob:ver<2>;
5
+ unit class Bob:ver<3>;
6
6
 
7
7
  method hey ($msg) {
8
8
  #`[
@@ -2,7 +2,7 @@
2
2
  Declare class 'Bob' with version and unit-scope the class
3
3
  i.e. everything in this file is part of 'Bob'.
4
4
  ]
5
- unit class Bob:ver<2>;
5
+ unit class Bob:ver<3>;
6
6
 
7
7
  method hey ( Str:D $_ --> Str:D ) {
8
8
  my \shouting = /<:L>/ ^ /<:Ll>/;
@@ -1,36 +1,30 @@
1
1
  #!/usr/bin/env perl6
2
2
  use v6;
3
3
  use Test;
4
- use lib my $dir = $?FILE.IO.dirname; #`[Look for the module inside the same directory as this test file.]
5
4
  use JSON::Fast;
5
+ use lib $?FILE.IO.dirname; #`[Look for the module inside the same directory as this test file.]
6
+ use Bob;
7
+ plan 26; #`[This is how many tests we expect to run.]
6
8
 
7
- my Str:D $exercise := 'Bob'; #`[The name of this exercise.]
8
- my Version:D $version = v2; #`[The version we will be matching against the exercise.]
9
- my Str $module //= $exercise; #`[The name of the module file to be loaded.]
10
- plan 28; #`[This is how many tests we expect to run.]
11
-
12
- #`[Check that the module can be use-d.]
13
- use-ok $module or bail-out;
14
- require ::($module);
9
+ my Version:D $version = v3; #`[The version we will be matching against the exercise.]
15
10
 
16
11
  #`[If the exercise is updated, we want to make sure other people testing
17
12
  your code don't think you've made a mistake if things have changed!]
18
- if ::($exercise).^ver !~~ $version {
13
+ if Bob.^ver !~~ $version {
19
14
  warn "\nExercise version mismatch. Further tests may fail!"
20
- ~ "\n$exercise is $(::($exercise).^ver.gist). "
21
- ~ "Test is $($version.gist).\n";
22
- bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
15
+ ~ "\nBob is {Bob.^ver.gist}. "
16
+ ~ "Test is {$version.gist}.\n";
23
17
  }
24
18
 
25
19
  #`[Check that the class 'Bob' can use all of the methods
26
20
  needed in the tests (only 'hey' for this one).]
27
21
  subtest 'Class methods', {
28
- ok ::($exercise).can($_), $_ for <hey>;
22
+ ok Bob.can($_), $_ for <hey>;
29
23
  }
30
24
 
31
25
  my $c-data = from-json $=pod.pop.contents;
32
26
  # Go through the cases and check that Bob gives us the correct responses.
33
- is ::($exercise).?hey(.<input><heyBob>), |.<expected description> for @($c-data<cases>);
27
+ is Bob.?hey(.<input><heyBob>), |.<expected description> for @($c-data<cases>);
34
28
 
35
29
  =head2 Canonical Data
36
30
  =begin code
@@ -243,20 +237,3 @@ is ::($exercise).?hey(.<input><heyBob>), |.<expected description> for @($c-data<
243
237
  }
244
238
 
245
239
  =end code
246
-
247
- #`[Don't worry about the stuff below here for your exercise.
248
- This is for Exercism folks to check that everything is in order.]
249
- unless %*ENV<EXERCISM> {
250
- skip-rest 'exercism tests';
251
- exit;
252
- }
253
-
254
- subtest 'canonical-data' => {
255
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
256
- $dir.IO.resolve.basename
257
- }/canonical-data.json".IO.resolve) ~~ :f ??
258
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
259
- flunk 'problem-specifications file not found';
260
- }
261
-
262
- INIT { $module = 'Example' if %*ENV<EXERCISM> }