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,20 +1,16 @@
1
1
  exercise: Bob
2
- version: 2
3
- plan: 28
2
+ version: 3
3
+ plan: 26
4
4
  methods: hey
5
5
  tests: |-
6
6
  # Go through the cases and check that Bob gives us the correct responses.
7
- is ::($exercise).?hey(.<input><heyBob>), |.<expected description> for @($c-data<cases>);
7
+ is Bob.?hey(.<input><heyBob>), |.<expected description> for @($c-data<cases>);
8
8
 
9
- exercise_comment: The name of this exercise.
10
- module_comment: The name of the module file to be loaded.
11
9
  version_comment: The version we will be matching against the exercise.
12
10
  lib_comment: Look for the module inside the same directory as this test file.
13
11
  plan_comment: This is how many tests we expect to run.
14
- use_test_comment: Check that the module can be use-d.
15
12
  version_test_comment: "If the exercise is updated, we want to make sure other people testing\nyour code don't think you've made a mistake if things have changed!"
16
13
  methods_comment: "Check that the class 'Bob' can use all of the methods\nneeded in the tests (only 'hey' for this one)."
17
- exercism_comment: "Don't worry about the stuff below here for your exercise.\nThis is for Exercism folks to check that everything is in order."
18
14
 
19
15
  unit: class
20
16
  unit_comment: |-
@@ -1,4 +1,4 @@
1
- unit class Clock:ver<1>;
1
+ unit class Clock:ver<2>;
2
2
 
3
3
  has $.hour;
4
4
  has $.minute;
@@ -1,4 +1,4 @@
1
- unit class Clock:ver<1>;
1
+ unit class Clock:ver<2>;
2
2
 
3
3
  has Int:D $.hour = 0;
4
4
  has Int:D $.minute = 0;
@@ -1,44 +1,39 @@
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 Clock;
7
+ plan 52;
6
8
 
7
- my Str:D $exercise := 'Clock';
8
- my Version:D $version = v1;
9
- my Str $module //= $exercise;
10
- plan 54;
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 Clock.^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
+ ~ "\nClock is {Clock.^ver.gist}. "
14
+ ~ "Test is {$version.gist}.\n";
20
15
  }
21
16
 
22
17
  subtest 'Class methods', {
23
- ok ::($exercise).can($_), $_ for <time add-minutes>;
18
+ ok Clock.can($_), $_ for <time add-minutes>;
24
19
  }
25
20
 
26
21
  my $c-data = from-json $=pod.pop.contents;
27
22
  for $c-data<cases>»<cases>».Array.flat -> %case {
28
23
  given %case<property> {
29
24
  when 'create' {
30
- is ::($exercise).?new( |%(.<hour minute>:p) ).?time, |.<expected description> given %case;
25
+ is Clock.?new( |%(.<hour minute>:p) ).?time, |.<expected description> given %case;
31
26
  }
32
27
  when 'add' {
33
28
  given %case {
34
- my $clock = ::($exercise).?new: |%(.<hour minute>:p);
29
+ my $clock = Clock.?new: |%(.<hour minute>:p);
35
30
  $clock.?add-minutes: .<add>;
36
31
  is $clock.?time, |.<expected description>;
37
32
  }
38
33
  }
39
34
  when 'equal' {
40
35
  is-deeply ([eq] gather {
41
- take ::($exercise).?new( |%(.<hour minute>:p) ).?time for %case<clock1 clock2>;
36
+ take Clock.?new( |%(.<hour minute>:p) ).?time for %case<clock1 clock2>;
42
37
  }), |%case<expected description>;
43
38
  }
44
39
  when %*ENV<EXERCISM>.so { bail-out "no case for property '%case<property>'" }
@@ -46,7 +41,7 @@ for $c-data<cases>»<cases>».Array.flat -> %case {
46
41
  }
47
42
 
48
43
  todo 'optional test' unless %*ENV<EXERCISM>;
49
- is ::($exercise).?new(:0hour,:0minute).?add-minutes(65).?time, '01:05', 'add-minutes method can be chained';
44
+ is Clock.?new(:0hour,:0minute).?add-minutes(65).?time, '01:05', 'add-minutes method can be chained';
50
45
 
51
46
  =head2 Canonical Data
52
47
  =begin code
@@ -542,18 +537,3 @@ is ::($exercise).?new(:0hour,:0minute).?add-minutes(65).?time, '01:05', 'add-min
542
537
  }
543
538
 
544
539
  =end code
545
-
546
- unless %*ENV<EXERCISM> {
547
- skip-rest 'exercism tests';
548
- exit;
549
- }
550
-
551
- subtest 'canonical-data' => {
552
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
553
- $dir.IO.resolve.basename
554
- }/canonical-data.json".IO.resolve) ~~ :f ??
555
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
556
- flunk 'problem-specifications file not found';
557
- }
558
-
559
- INIT { $module = 'Example' if %*ENV<EXERCISM> }
@@ -1,23 +1,23 @@
1
1
  exercise: Clock
2
- version: 1
2
+ version: 2
3
3
  methods: time add-minutes
4
- plan: 54
4
+ plan: 52
5
5
  tests: |-
6
6
  for $c-data<cases>»<cases>».Array.flat -> %case {
7
7
  given %case<property> {
8
8
  when 'create' {
9
- is ::($exercise).?new( |%(.<hour minute>:p) ).?time, |.<expected description> given %case;
9
+ is Clock.?new( |%(.<hour minute>:p) ).?time, |.<expected description> given %case;
10
10
  }
11
11
  when 'add' {
12
12
  given %case {
13
- my $clock = ::($exercise).?new: |%(.<hour minute>:p);
13
+ my $clock = Clock.?new: |%(.<hour minute>:p);
14
14
  $clock.?add-minutes: .<add>;
15
15
  is $clock.?time, |.<expected description>;
16
16
  }
17
17
  }
18
18
  when 'equal' {
19
19
  is-deeply ([eq] gather {
20
- take ::($exercise).?new( |%(.<hour minute>:p) ).?time for %case<clock1 clock2>;
20
+ take Clock.?new( |%(.<hour minute>:p) ).?time for %case<clock1 clock2>;
21
21
  }), |%case<expected description>;
22
22
  }
23
23
  when %*ENV<EXERCISM>.so { bail-out "no case for property '%case<property>'" }
@@ -25,7 +25,7 @@ tests: |-
25
25
  }
26
26
 
27
27
  todo 'optional test' unless %*ENV<EXERCISM>;
28
- is ::($exercise).?new(:0hour,:0minute).?add-minutes(65).?time, '01:05', 'add-minutes method can be chained';
28
+ is Clock.?new(:0hour,:0minute).?add-minutes(65).?time, '01:05', 'add-minutes method can be chained';
29
29
 
30
30
  unit: class
31
31
  example: |-
@@ -1,4 +1,4 @@
1
- unit module ETL:ver<1>;
1
+ unit module ETL:ver<2>;
2
2
 
3
3
  no precompilation;
4
4
 
@@ -1,4 +1,4 @@
1
- unit module ETL:ver<1>;
1
+ unit module ETL:ver<2>;
2
2
 
3
3
  no precompilation;
4
4
 
@@ -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 ETL;
7
+ plan 4;
6
8
 
7
- my Str:D $exercise := 'ETL';
8
- my Version:D $version = v1;
9
- my Str $module //= $exercise;
10
- plan 6;
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 ETL.^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
+ ~ "\nETL is {ETL.^ver.gist}. "
14
+ ~ "Test is {$version.gist}.\n";
20
15
  }
21
16
 
22
- require ::($module) <&transform>;
23
-
24
17
  my $c-data = from-json $=pod.pop.contents;
25
18
  =head2 Notes
26
19
  =begin para
@@ -122,18 +115,3 @@ for $c-data<cases>.values -> %case-set {
122
115
  }
123
116
 
124
117
  =end code
125
-
126
- unless %*ENV<EXERCISM> {
127
- skip-rest 'exercism tests';
128
- exit;
129
- }
130
-
131
- subtest 'canonical-data' => {
132
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
133
- $dir.IO.resolve.basename
134
- }/canonical-data.json".IO.resolve) ~~ :f ??
135
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
136
- flunk 'problem-specifications file not found';
137
- }
138
-
139
- INIT { $module = 'Example' if %*ENV<EXERCISM> }
@@ -1,7 +1,6 @@
1
1
  exercise: ETL
2
- version: 1
3
- plan: 6
4
- imports: '&transform'
2
+ version: 2
3
+ plan: 4
5
4
  tests: |-
6
5
  =head2 Notes
7
6
  =begin para
@@ -1,4 +1,4 @@
1
- unit module FlattenArray:ver<1>;
1
+ unit module FlattenArray:ver<2>;
2
2
 
3
3
  sub flatten-array(@input --> Array) is export {
4
4
  @input.&denest;
@@ -1,4 +1,4 @@
1
- unit module FlattenArray:ver<1>;
1
+ unit module FlattenArray:ver<2>;
2
2
 
3
3
  sub flatten-array(@input) is export {
4
4
  }
@@ -1,7 +1,6 @@
1
1
  exercise: FlattenArray
2
- version: 1
3
- plan: 8
4
- imports: '&flatten-array'
2
+ version: 2
3
+ plan: 6
5
4
  tests: |-
6
5
  is-deeply flatten-array(.<input><array>), |.<expected description> for @($c-data<cases>);
7
6
 
@@ -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 FlattenArray;
7
+ plan 6;
6
8
 
7
- my Str:D $exercise := 'FlattenArray';
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 FlattenArray.^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
+ ~ "\nFlattenArray is {FlattenArray.^ver.gist}. "
14
+ ~ "Test is {$version.gist}.\n";
20
15
  }
21
16
 
22
- require ::($module) <&flatten-array>;
23
-
24
17
  my $c-data = from-json $=pod.pop.contents;
25
18
  is-deeply flatten-array(.<input><array>), |.<expected description> for @($c-data<cases>);
26
19
 
@@ -83,18 +76,3 @@ is-deeply flatten-array(.<input><array>), |.<expected description> for @($c-data
83
76
  }
84
77
 
85
78
  =end code
86
-
87
- unless %*ENV<EXERCISM> {
88
- skip-rest 'exercism tests';
89
- exit;
90
- }
91
-
92
- subtest 'canonical-data' => {
93
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
94
- $dir.IO.resolve.basename
95
- }/canonical-data.json".IO.resolve) ~~ :f ??
96
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
97
- flunk 'problem-specifications file not found';
98
- }
99
-
100
- INIT { $module = 'Example' if %*ENV<EXERCISM> }
@@ -1,4 +1,4 @@
1
- unit module GradeSchool:ver<2>;
1
+ unit module GradeSchool:ver<3>;
2
2
 
3
3
  class Roster is export {
4
4
  has %!roster;
@@ -1,4 +1,4 @@
1
- unit module GradeSchool:ver<2>;
1
+ unit module GradeSchool:ver<3>;
2
2
 
3
3
  class Roster is export {
4
4
  }
@@ -1,7 +1,6 @@
1
1
  exercise: GradeSchool
2
- version: 2
3
- plan: 19
4
- imports: Roster
2
+ version: 3
3
+ plan: 18
5
4
  tests: |-
6
5
  subtest "Roster class methods", {
7
6
  plan 3;
@@ -2,24 +2,17 @@
2
2
  use v6;
3
3
  use Test;
4
4
  use lib $?FILE.IO.dirname;
5
+ use GradeSchool;
6
+ plan 18;
5
7
 
6
- my Str:D $exercise := 'GradeSchool';
7
- my Version:D $version = v2;
8
- my Str $module //= $exercise;
9
- plan 19;
8
+ my Version:D $version = v3;
10
9
 
11
- use-ok $module or bail-out;
12
- require ::($module);
13
-
14
- if ::($exercise).^ver !~~ $version {
10
+ if GradeSchool.^ver !~~ $version {
15
11
  warn "\nExercise version mismatch. Further tests may fail!"
16
- ~ "\n$exercise is $(::($exercise).^ver.gist). "
17
- ~ "Test is $($version.gist).\n";
18
- bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
12
+ ~ "\nGradeSchool is {GradeSchool.^ver.gist}. "
13
+ ~ "Test is {$version.gist}.\n";
19
14
  }
20
15
 
21
- require ::($module) <Roster>;
22
-
23
16
  subtest "Roster class methods", {
24
17
  plan 3;
25
18
  ok ::('Roster').can($_), $_ for <add-student list-grade list-all>;
@@ -45,5 +38,3 @@ cmp-ok $roster.?list-grade(1), '~~', <Anna Barb Charlie>, 'List grade 1';
45
38
  cmp-ok $roster.?list-grade(2), '~~', <Alex Jim Zoe>, 'List grade 2';
46
39
  cmp-ok $roster.?list-grade(3), '~~', <Dick Harry Tom>, 'List grade 3';
47
40
  cmp-ok $roster.?list-all, '~~', ('Grade 1', <Anna Barb Charlie>, 'Grade 2', <Alex Jim Zoe>, 'Grade 3', <Dick Harry Tom>), 'List all';
48
-
49
- INIT { $module = 'Example' if %*ENV<EXERCISM> }
@@ -1,4 +1,4 @@
1
- unit module Grains:ver<1>;
1
+ unit module Grains:ver<2>;
2
2
 
3
3
  sub grains-on-square ($number) is export {
4
4
  die if $number < 1 or $number > 64;
@@ -1 +1 @@
1
- unit module Grains:ver<1>;
1
+ unit module Grains:ver<2>;
@@ -1,7 +1,6 @@
1
1
  exercise: Grains
2
- version: 1
3
- plan: 13
4
- imports: '&grains-on-square &total-grains'
2
+ version: 2
3
+ plan: 11
5
4
  tests: |-
6
5
  for @($c-data<cases>[0]<cases>) {
7
6
  if .<expected> == -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 Grains;
7
+ plan 11;
6
8
 
7
- my Str:D $exercise := 'Grains';
8
- my Version:D $version = v1;
9
- my Str $module //= $exercise;
10
- plan 13;
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 Grains.^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
+ ~ "\nGrains is {Grains.^ver.gist}. "
14
+ ~ "Test is {$version.gist}.\n";
20
15
  }
21
16
 
22
- require ::($module) <&grains-on-square &total-grains>;
23
-
24
17
  my $c-data = from-json $=pod.pop.contents;
25
18
  for @($c-data<cases>[0]<cases>) {
26
19
  if .<expected> == -1 {
@@ -117,18 +110,3 @@ is total-grains, |$c-data<cases>[1]<expected description>;
117
110
  }
118
111
 
119
112
  =end code
120
-
121
- unless %*ENV<EXERCISM> {
122
- skip-rest 'exercism tests';
123
- exit;
124
- }
125
-
126
- subtest 'canonical-data' => {
127
- (my $c-data-file = "$dir/../../problem-specifications/exercises/{
128
- $dir.IO.resolve.basename
129
- }/canonical-data.json".IO.resolve) ~~ :f ??
130
- is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
131
- flunk 'problem-specifications file not found';
132
- }
133
-
134
- INIT { $module = 'Example' if %*ENV<EXERCISM> }