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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/two-bucket/canonical-data.json +31 -31
- data/tracks/csharp/docs/ABOUT.md +21 -3
- data/tracks/dart/.travis.yml +1 -2
- data/tracks/dart/README.md +2 -2
- data/tracks/dart/{tool/create-exercise → bin/create_exercise.dart} +14 -10
- data/tracks/dart/test/create_exercise_test.dart +132 -0
- data/tracks/dart/test/exercises_test.dart +1 -1
- data/tracks/fsharp/exercises/list-ops/Example.fs +5 -5
- data/tracks/fsharp/exercises/list-ops/ListOps.fs +1 -1
- data/tracks/fsharp/exercises/list-ops/ListOpsTest.fs +41 -62
- data/tracks/fsharp/generators/Common.fs +3 -0
- data/tracks/fsharp/generators/Formatting.fs +3 -1
- data/tracks/fsharp/generators/Generators.fs +21 -0
- data/tracks/go/config.json +14 -0
- data/tracks/go/exercises/grep/.meta/gen.go +76 -0
- data/tracks/go/exercises/grep/.meta/hints.md +13 -0
- data/tracks/go/exercises/grep/README.md +104 -0
- data/tracks/go/exercises/grep/cases_test.go +202 -0
- data/tracks/go/exercises/grep/example.go +102 -0
- data/tracks/go/exercises/grep/grep_test.go +84 -0
- data/tracks/java/exercises/anagram/.meta/version +1 -1
- data/tracks/java/exercises/anagram/src/test/java/AnagramTest.java +0 -32
- data/tracks/java/exercises/space-age/.meta/src/reference/java/SpaceAge.java +0 -4
- data/tracks/java/exercises/space-age/.meta/version +1 -0
- data/tracks/java/exercises/space-age/src/test/java/SpaceAgeTest.java +0 -16
- data/tracks/julia/.gitignore +1 -0
- data/tracks/julia/exercises/complex-numbers/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/julia/exercises/custom-set/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/julia/exercises/robot-name/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/julia/exercises/rotational-cipher/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/julia/runtests.jl +24 -25
- data/tracks/perl6/.travis.yml +7 -3
- data/tracks/perl6/Dockerfile +4 -0
- data/tracks/perl6/exercises/accumulate/Accumulate.pm6 +1 -1
- data/tracks/perl6/exercises/accumulate/Example.pm6 +1 -1
- data/tracks/perl6/exercises/accumulate/accumulate.t +6 -15
- data/tracks/perl6/exercises/accumulate/example.yaml +2 -3
- data/tracks/perl6/exercises/acronym/Acronym.pm6 +1 -1
- data/tracks/perl6/exercises/acronym/Example.pm6 +1 -1
- data/tracks/perl6/exercises/acronym/acronym.t +7 -29
- data/tracks/perl6/exercises/acronym/example.yaml +2 -3
- data/tracks/perl6/exercises/all-your-base/AllYourBase.pm6 +1 -1
- data/tracks/perl6/exercises/all-your-base/Example.pm6 +1 -1
- data/tracks/perl6/exercises/all-your-base/all-your-base.t +7 -29
- data/tracks/perl6/exercises/all-your-base/example.yaml +2 -3
- data/tracks/perl6/exercises/allergies/Allergies.pm6 +1 -1
- data/tracks/perl6/exercises/allergies/Example.pm6 +1 -1
- data/tracks/perl6/exercises/allergies/allergies.t +7 -29
- data/tracks/perl6/exercises/allergies/example.yaml +2 -3
- data/tracks/perl6/exercises/anagram/Anagram.pm6 +1 -1
- data/tracks/perl6/exercises/anagram/Example.pm6 +1 -1
- data/tracks/perl6/exercises/anagram/anagram.t +7 -29
- data/tracks/perl6/exercises/anagram/example.yaml +2 -3
- data/tracks/perl6/exercises/atbash-cipher/AtbashCipher.pm6 +1 -1
- data/tracks/perl6/exercises/atbash-cipher/Example.pm6 +1 -1
- data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +7 -29
- data/tracks/perl6/exercises/atbash-cipher/example.yaml +2 -3
- data/tracks/{julia/exercises/.keep → perl6/exercises/binary/Binary.pm6} +0 -0
- data/tracks/perl6/exercises/binary/binary.t +3 -5
- data/tracks/perl6/exercises/bob/Bob.pm6 +1 -1
- data/tracks/perl6/exercises/bob/Example.pm6 +1 -1
- data/tracks/perl6/exercises/bob/bob.t +9 -32
- data/tracks/perl6/exercises/bob/example.yaml +3 -7
- data/tracks/perl6/exercises/clock/Clock.pm6 +1 -1
- data/tracks/perl6/exercises/clock/Example.pm6 +1 -1
- data/tracks/perl6/exercises/clock/clock.t +12 -32
- data/tracks/perl6/exercises/clock/example.yaml +6 -6
- data/tracks/perl6/exercises/etl/ETL.pm6 +1 -1
- data/tracks/perl6/exercises/etl/Example.pm6 +1 -1
- data/tracks/perl6/exercises/etl/etl.t +7 -29
- data/tracks/perl6/exercises/etl/example.yaml +2 -3
- data/tracks/perl6/exercises/flatten-array/Example.pm6 +1 -1
- data/tracks/perl6/exercises/flatten-array/FlattenArray.pm6 +1 -1
- data/tracks/perl6/exercises/flatten-array/example.yaml +2 -3
- data/tracks/perl6/exercises/flatten-array/flatten-array.t +7 -29
- data/tracks/perl6/exercises/grade-school/Example.pm6 +1 -1
- data/tracks/perl6/exercises/grade-school/GradeSchool.pm6 +1 -1
- data/tracks/perl6/exercises/grade-school/example.yaml +2 -3
- data/tracks/perl6/exercises/grade-school/grade-school.t +6 -15
- data/tracks/perl6/exercises/grains/Example.pm6 +1 -1
- data/tracks/perl6/exercises/grains/Grains.pm6 +1 -1
- data/tracks/perl6/exercises/grains/example.yaml +2 -3
- data/tracks/perl6/exercises/grains/grains.t +7 -29
- data/tracks/perl6/exercises/hamming/Example.pm6 +1 -1
- data/tracks/perl6/exercises/hamming/Hamming.pm6 +1 -1
- data/tracks/perl6/exercises/hamming/example.yaml +2 -3
- data/tracks/perl6/exercises/hamming/hamming.t +7 -29
- data/tracks/perl6/exercises/hello-world/Example.pm6 +1 -1
- data/tracks/perl6/exercises/hello-world/HelloWorld.pm6 +1 -1
- data/tracks/perl6/exercises/hello-world/example.yaml +2 -8
- data/tracks/perl6/exercises/hello-world/hello-world.t +7 -33
- data/tracks/perl6/exercises/leap/Example.pm6 +1 -1
- data/tracks/perl6/exercises/leap/Leap.pm6 +1 -1
- data/tracks/perl6/exercises/leap/example.yaml +2 -3
- data/tracks/perl6/exercises/leap/leap.t +7 -29
- data/tracks/perl6/exercises/linked-list/Example.pm6 +1 -1
- data/tracks/perl6/exercises/linked-list/LinkedList.pm6 +1 -1
- data/tracks/perl6/exercises/linked-list/example.yaml +3 -3
- data/tracks/perl6/exercises/linked-list/linked-list.t +9 -16
- data/tracks/perl6/exercises/luhn/Example.pm6 +1 -1
- data/tracks/perl6/exercises/luhn/Luhn.pm6 +1 -1
- data/tracks/perl6/exercises/luhn/example.yaml +2 -3
- data/tracks/perl6/exercises/luhn/luhn.t +7 -29
- data/tracks/perl6/exercises/meetup/Example.pm6 +1 -1
- data/tracks/perl6/exercises/meetup/Meetup.pm6 +1 -1
- data/tracks/perl6/exercises/meetup/example.yaml +2 -3
- data/tracks/perl6/exercises/meetup/meetup.t +7 -29
- data/tracks/perl6/exercises/nucleotide-count/Example.pm6 +1 -1
- data/tracks/perl6/exercises/nucleotide-count/NucleotideCount.pm6 +1 -1
- data/tracks/perl6/exercises/nucleotide-count/example.yaml +2 -3
- data/tracks/perl6/exercises/nucleotide-count/nucleotide-count.t +7 -29
- data/tracks/perl6/exercises/pangram/Example.pm6 +1 -1
- data/tracks/perl6/exercises/pangram/Pangram.pm6 +1 -1
- data/tracks/perl6/exercises/pangram/example.yaml +2 -3
- data/tracks/perl6/exercises/pangram/pangram.t +7 -29
- data/tracks/perl6/exercises/phone-number/Example.pm6 +1 -1
- data/tracks/perl6/exercises/phone-number/Phone.pm6 +1 -1
- data/tracks/perl6/exercises/phone-number/example.yaml +2 -3
- data/tracks/perl6/exercises/phone-number/phone-number.t +7 -29
- data/tracks/perl6/exercises/raindrops/Example.pm6 +1 -1
- data/tracks/perl6/exercises/raindrops/Raindrops.pm6 +1 -1
- data/tracks/perl6/exercises/raindrops/example.yaml +2 -3
- data/tracks/perl6/exercises/raindrops/raindrops.t +7 -29
- data/tracks/perl6/exercises/rna-transcription/Example.pm6 +1 -1
- data/tracks/perl6/exercises/rna-transcription/RNA.pm6 +1 -1
- data/tracks/perl6/exercises/rna-transcription/example.yaml +2 -3
- data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +7 -29
- data/tracks/perl6/exercises/robot-name/Example.pm6 +1 -1
- data/tracks/perl6/exercises/robot-name/Robot.pm6 +1 -1
- data/tracks/perl6/exercises/robot-name/example.yaml +5 -5
- data/tracks/perl6/exercises/robot-name/robot-name.t +10 -17
- data/tracks/perl6/exercises/roman-numerals/Example.pm6 +1 -1
- data/tracks/perl6/exercises/roman-numerals/RomanNumerals.pm6 +1 -1
- data/tracks/perl6/exercises/roman-numerals/example.yaml +2 -3
- data/tracks/perl6/exercises/roman-numerals/roman-numerals.t +7 -29
- data/tracks/perl6/exercises/scrabble-score/Example.pm6 +1 -1
- data/tracks/perl6/exercises/scrabble-score/Scrabble.pm6 +1 -1
- data/tracks/perl6/exercises/scrabble-score/example.yaml +2 -3
- data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +7 -29
- data/tracks/perl6/exercises/space-age/Example.pm6 +1 -1
- data/tracks/perl6/exercises/space-age/SpaceAge.pm6 +1 -1
- data/tracks/perl6/exercises/space-age/example.yaml +2 -3
- data/tracks/perl6/exercises/space-age/space-age.t +7 -29
- data/tracks/perl6/exercises/trinary/Trinary.pm6 +0 -0
- data/tracks/perl6/exercises/trinary/trinary.t +2 -5
- data/tracks/perl6/exercises/two-fer/Example.pm6 +1 -1
- data/tracks/perl6/exercises/two-fer/TwoFer.pm6 +1 -1
- data/tracks/perl6/exercises/two-fer/example.yaml +2 -8
- data/tracks/perl6/exercises/two-fer/two-fer.t +7 -33
- data/tracks/perl6/exercises/word-count/Example.pm6 +1 -1
- data/tracks/perl6/exercises/word-count/WordCount.pm6 +1 -1
- data/tracks/perl6/exercises/word-count/example.yaml +2 -3
- data/tracks/perl6/exercises/word-count/word-count.t +7 -29
- data/tracks/perl6/exercises/wordy/Example.pm6 +1 -1
- data/tracks/perl6/exercises/wordy/Wordy.pm6 +1 -1
- data/tracks/perl6/exercises/wordy/example.yaml +2 -3
- data/tracks/perl6/exercises/wordy/wordy.t +7 -29
- data/tracks/perl6/templates/test.mustache +10 -39
- data/tracks/python/config.json +10 -0
- data/tracks/python/exercises/all-your-base/all_your_base_test.py +2 -2
- data/tracks/python/exercises/binary-search/binary_search_test.py +2 -2
- data/tracks/python/exercises/binary/binary_test.py +2 -2
- data/tracks/python/exercises/bob/bob_test.py +4 -2
- data/tracks/python/exercises/bob/example.py +5 -2
- data/tracks/python/exercises/circular-buffer/circular_buffer_test.py +2 -2
- data/tracks/python/exercises/custom-set/README.md +20 -0
- data/tracks/python/exercises/custom-set/custom_set.py +30 -0
- data/tracks/python/exercises/custom-set/custom_set_test.py +212 -0
- data/tracks/python/exercises/custom-set/example.py +45 -0
- data/tracks/python/exercises/dot-dsl/dot_dsl_test.py +20 -10
- data/tracks/python/exercises/error-handling/error_handling_test.py +2 -2
- data/tracks/python/exercises/forth/forth_test.py +18 -18
- data/tracks/python/exercises/grains/grains_test.py +2 -2
- data/tracks/python/exercises/hamming/hamming_test.py +2 -2
- data/tracks/python/exercises/hexadecimal/hexadecimal_test.py +2 -2
- data/tracks/python/exercises/largest-series-product/largest_series_product_test.py +2 -2
- data/tracks/python/exercises/meetup/meetup_test.py +2 -2
- data/tracks/python/exercises/minesweeper/minesweeper_test.py +2 -2
- data/tracks/python/exercises/nth-prime/nth_prime_test.py +2 -2
- data/tracks/python/exercises/nucleotide-count/nucleotide_count_test.py +2 -2
- data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +2 -2
- data/tracks/python/exercises/octal/octal_test.py +2 -2
- data/tracks/python/exercises/perfect-numbers/perfect_numbers_test.py +2 -2
- data/tracks/python/exercises/phone-number/phone_number_test.py +2 -2
- data/tracks/python/exercises/pov/pov_test.py +2 -2
- data/tracks/python/exercises/protein-translation/protein_translation_test.py +2 -2
- data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet_test.py +2 -2
- data/tracks/python/exercises/queen-attack/queen_attack_test.py +2 -2
- data/tracks/python/exercises/rna-transcription/rna_transcription_test.py +2 -2
- data/tracks/python/exercises/saddle-points/saddle_points_test.py +2 -2
- data/tracks/python/exercises/say/say_test.py +2 -2
- data/tracks/python/exercises/scale-generator/scale_generator_test.py +2 -2
- data/tracks/python/exercises/series/series_test.py +2 -2
- data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +2 -2
- data/tracks/python/exercises/simple-linked-list/simple_linked_list_test.py +2 -2
- data/tracks/python/exercises/tree-building/tree_building_test.py +2 -2
- data/tracks/python/exercises/triangle/example.py +14 -24
- data/tracks/python/exercises/triangle/triangle.py +6 -6
- data/tracks/python/exercises/triangle/triangle_test.py +42 -44
- data/tracks/python/exercises/variable-length-quantity/variable_length_quantity_test.py +2 -2
- data/tracks/python/exercises/wordy/wordy_test.py +2 -2
- data/tracks/python/test/check-exercises.py +2 -1
- metadata +22 -8
@@ -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
|
8
|
-
my Version:D $version = v1;
|
9
|
-
my Str $module //= $exercise;
|
10
|
-
plan 8;
|
9
|
+
my Version:D $version = v2;
|
11
10
|
|
12
|
-
|
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
|
-
~ "\
|
18
|
-
~ "Test is $
|
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,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
|
8
|
-
my Version:D $version = v3;
|
9
|
-
my Str $module //= $exercise;
|
10
|
-
plan 23;
|
9
|
+
my Version:D $version = v4;
|
11
10
|
|
12
|
-
|
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
|
-
~ "\
|
18
|
-
~ "Test is $
|
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 +1 @@
|
|
1
|
-
unit module Allergies:ver<
|
1
|
+
unit module Allergies:ver<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 Allergies;
|
7
|
+
plan 2;
|
6
8
|
|
7
|
-
my
|
8
|
-
my Version:D $version = v3;
|
9
|
-
my Str $module //= $exercise;
|
10
|
-
plan 4;
|
9
|
+
my Version:D $version = v4;
|
11
10
|
|
12
|
-
|
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
|
-
~ "\
|
18
|
-
~ "Test is $
|
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,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
|
8
|
-
my Version:D $version = v2;
|
9
|
-
my Str $module //= $exercise;
|
10
|
-
plan 18;
|
9
|
+
my Version:D $version = v3;
|
11
10
|
|
12
|
-
|
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
|
-
~ "\
|
18
|
-
~ "Test is $
|
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,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
|
8
|
-
my Version:D $version = v1;
|
9
|
-
my Str $module //= $exercise;
|
10
|
-
plan 14;
|
9
|
+
my Version:D $version = v2;
|
11
10
|
|
12
|
-
|
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
|
-
~ "\
|
18
|
-
~ "Test is $
|
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> }
|
File without changes
|
@@ -1,12 +1,10 @@
|
|
1
1
|
#!/usr/bin/env perl6
|
2
2
|
use v6;
|
3
3
|
use Test;
|
4
|
-
use lib
|
4
|
+
use lib $?FILE.IO.dirname;
|
5
|
+
use Binary;
|
5
6
|
|
6
|
-
plan
|
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
|
|
@@ -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
|
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
|
13
|
+
if Bob.^ver !~~ $version {
|
19
14
|
warn "\nExercise version mismatch. Further tests may fail!"
|
20
|
-
~ "\
|
21
|
-
~ "Test is $
|
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
|
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
|
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> }
|