trackler 2.2.1.48 → 2.2.1.49
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/grains/canonical-data.json +1 -1
- data/problem-specifications/exercises/isbn-verifier/description.md +1 -1
- data/tracks/dart/exercises/anagram/pubspec.lock +10 -10
- data/tracks/dart/exercises/bob/pubspec.lock +4 -4
- data/tracks/dart/exercises/difference-of-squares/pubspec.lock +4 -4
- data/tracks/dart/exercises/gigasecond/pubspec.lock +4 -4
- data/tracks/dart/exercises/hamming/pubspec.lock +4 -4
- data/tracks/dart/exercises/hello-world/pubspec.lock +4 -4
- data/tracks/dart/exercises/leap/pubspec.lock +4 -4
- data/tracks/dart/exercises/phone-number/pubspec.lock +4 -4
- data/tracks/dart/exercises/raindrops/pubspec.lock +17 -5
- data/tracks/dart/exercises/rna-transcription/pubspec.lock +4 -4
- data/tracks/dart/exercises/word-count/pubspec.lock +4 -4
- data/tracks/dart/pubspec.lock +3 -3
- data/tracks/fsharp/exercises/largest-series-product/Example.fs +18 -4
- data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProduct.fs +1 -1
- data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProductTest.fs +80 -36
- data/tracks/fsharp/generators/Exercise.fs +1 -1
- data/tracks/fsharp/generators/Generators.fs +10 -0
- data/tracks/gnu-apl/config.json +14 -0
- data/tracks/gnu-apl/exercises/difference-of-squares/README.md +19 -0
- data/tracks/gnu-apl/exercises/difference-of-squares/difference-of-squares-example.apl +13 -0
- data/tracks/gnu-apl/exercises/difference-of-squares/difference-of-squares.tc +38 -0
- data/tracks/gnu-apl/exercises/pangram/README.md +15 -0
- data/tracks/gnu-apl/exercises/pangram/pangram-example.apl +14 -0
- data/tracks/gnu-apl/exercises/pangram/pangram.tc +40 -0
- data/tracks/gnu-apl/exercises/raindrops/raindrops.tc +1 -1
- data/tracks/java/exercises/bracket-push/.meta/version +1 -0
- data/tracks/java/exercises/complex-numbers/.meta/version +1 -0
- data/tracks/java/exercises/ocr-numbers/.meta/version +1 -0
- data/tracks/java/exercises/queen-attack/.meta/version +1 -0
- data/tracks/java/exercises/rectangles/.meta/version +1 -0
- data/tracks/java/exercises/robot-simulator/.meta/version +1 -0
- data/tracks/java/exercises/secret-handshake/.meta/version +1 -0
- data/tracks/java/exercises/sublist/.meta/version +1 -0
- data/tracks/perl6/exercises/accumulate/accumulate.t +1 -6
- data/tracks/perl6/exercises/all-your-base/all-your-base.t +14 -19
- 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 +25 -29
- data/tracks/perl6/exercises/allergies/example.yaml +11 -10
- data/tracks/perl6/exercises/anagram/anagram.t +14 -19
- data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +14 -19
- data/tracks/perl6/exercises/bob/bob.t +16 -23
- data/tracks/perl6/exercises/bob/example.yaml +1 -3
- data/tracks/perl6/exercises/clock/clock.t +14 -19
- data/tracks/perl6/exercises/flatten-array/flatten-array.t +14 -19
- data/tracks/perl6/exercises/grade-school/grade-school.t +1 -6
- data/tracks/perl6/exercises/grains/grains.t +15 -20
- data/tracks/perl6/exercises/hello-world/example.yaml +1 -3
- data/tracks/perl6/exercises/hello-world/hello-world.t +16 -23
- data/tracks/perl6/exercises/leap/leap.t +14 -19
- data/tracks/perl6/exercises/linked-list/example.yaml +59 -59
- data/tracks/perl6/exercises/linked-list/linked-list.t +59 -64
- data/tracks/perl6/exercises/luhn/luhn.t +14 -19
- data/tracks/perl6/exercises/phone-number/phone-number.t +14 -19
- data/tracks/perl6/exercises/raindrops/raindrops.t +14 -19
- data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +14 -19
- data/tracks/perl6/exercises/robot-name/robot-name.t +1 -6
- data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +14 -19
- data/tracks/perl6/exercises/space-age/space-age.t +14 -19
- data/tracks/perl6/exercises/word-count/word-count.t +14 -19
- data/tracks/perl6/exercises/wordy/wordy.t +14 -19
- data/tracks/perl6/templates/test.mustache +19 -25
- data/tracks/purescript/config.json +12 -0
- data/tracks/purescript/exercises/sum-of-multiples/README.md +15 -0
- data/tracks/purescript/exercises/sum-of-multiples/bower.json +26 -0
- data/tracks/purescript/exercises/sum-of-multiples/examples/src/SumOfMultiples.purs +16 -0
- data/tracks/purescript/exercises/sum-of-multiples/src/SumOfMultiples.purs +3 -0
- data/tracks/purescript/exercises/sum-of-multiples/test/Main.purs +63 -0
- data/tracks/python/README.md +5 -1
- data/tracks/python/config.json +52 -9
- data/tracks/python/exercises/allergies/allergies_test.py +7 -7
- data/tracks/python/exercises/allergies/example.py +1 -1
- data/tracks/python/exercises/binary-search/binary_search_test.py +8 -5
- data/tracks/python/exercises/binary/binary_test.py +8 -4
- data/tracks/python/exercises/book-store/example.py +1 -1
- data/tracks/python/exercises/clock/clock.py +3 -0
- data/tracks/python/exercises/clock/clock_test.py +16 -16
- data/tracks/python/exercises/clock/example.py +1 -1
- data/tracks/python/exercises/list-ops/example.py +10 -29
- data/tracks/python/exercises/list-ops/list_ops.py +8 -12
- data/tracks/python/exercises/list-ops/list_ops_test.py +55 -86
- data/tracks/python/exercises/meetup/meetup_test.py +2 -2
- data/tracks/python/exercises/minesweeper/minesweeper_test.py +6 -3
- data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +11 -8
- data/tracks/python/exercises/pangram/pangram_test.py +25 -16
- data/tracks/python/exercises/point-mutations/point_mutations.py +1 -1
- data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet_test.py +2 -1
- data/tracks/python/exercises/saddle-points/saddle_points_test.py +2 -1
- data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +4 -2
- data/tracks/python/exercises/triangle/triangle_test.py +10 -5
- data/tracks/python/exercises/wordy/wordy_test.py +8 -5
- data/tracks/python/exercises/zipper/README.md +43 -0
- data/tracks/python/exercises/zipper/example.py +41 -0
- data/tracks/python/exercises/zipper/zipper.py +28 -0
- data/tracks/python/exercises/zipper/zipper_test.py +82 -0
- data/tracks/racket/.travis.yml +1 -1
- data/tracks/racket/config.json +14 -0
- data/tracks/racket/exercises/meetup/README.md +54 -0
- data/tracks/racket/exercises/meetup/example.rkt +45 -0
- data/tracks/racket/exercises/meetup/meetup-test.rkt +39 -0
- data/tracks/racket/exercises/meetup/meetup.rkt +3 -0
- metadata +29 -2
@@ -7,9 +7,7 @@ use JSON::Fast;
|
|
7
7
|
my Str:D $exercise := 'Luhn';
|
8
8
|
my Version:D $version = v1;
|
9
9
|
my Str $module //= $exercise;
|
10
|
-
|
11
|
-
plan 15;
|
12
|
-
}
|
10
|
+
plan 15;
|
13
11
|
|
14
12
|
use-ok $module or bail-out;
|
15
13
|
require ::($module);
|
@@ -26,7 +24,18 @@ require ::($module) <&is-luhn-valid>;
|
|
26
24
|
my $c-data;
|
27
25
|
is .<input>.&is-luhn-valid, |.<expected description> for @($c-data<cases>);
|
28
26
|
|
29
|
-
|
27
|
+
unless %*ENV<EXERCISM> {
|
28
|
+
skip-rest 'exercism tests';
|
29
|
+
exit;
|
30
|
+
}
|
31
|
+
|
32
|
+
subtest 'canonical-data' => {
|
33
|
+
(my $c-data-file = "$dir/../../problem-specifications/exercises/{
|
34
|
+
$dir.IO.resolve.basename
|
35
|
+
}/canonical-data.json".IO.resolve) ~~ :f ??
|
36
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
|
37
|
+
flunk 'problem-specifications file not found';
|
38
|
+
}
|
30
39
|
|
31
40
|
INIT {
|
32
41
|
$c-data := from-json q:to/END/;
|
@@ -118,19 +127,5 @@ $c-data := from-json q:to/END/;
|
|
118
127
|
|
119
128
|
END
|
120
129
|
|
121
|
-
if %*ENV<EXERCISM
|
122
|
-
$module = 'Example';
|
123
|
-
if (my $c-data-file =
|
124
|
-
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
125
|
-
.IO.resolve) ~~ :f
|
126
|
-
{
|
127
|
-
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
128
|
-
}
|
129
|
-
else {
|
130
|
-
flunk 'canonical-data';
|
131
|
-
}
|
132
|
-
}
|
133
|
-
else {
|
134
|
-
skip;
|
135
|
-
}
|
130
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
136
131
|
}
|
@@ -7,9 +7,7 @@ use JSON::Fast;
|
|
7
7
|
my Str:D $exercise := 'Phone';
|
8
8
|
my Version:D $version = v3;
|
9
9
|
my Str $module //= $exercise;
|
10
|
-
|
11
|
-
plan 14;
|
12
|
-
}
|
10
|
+
plan 14;
|
13
11
|
|
14
12
|
use-ok $module or bail-out;
|
15
13
|
require ::($module);
|
@@ -32,7 +30,18 @@ for @($c-data<cases>[0]<cases>) {
|
|
32
30
|
}
|
33
31
|
}
|
34
32
|
|
35
|
-
|
33
|
+
unless %*ENV<EXERCISM> {
|
34
|
+
skip-rest 'exercism tests';
|
35
|
+
exit;
|
36
|
+
}
|
37
|
+
|
38
|
+
subtest 'canonical-data' => {
|
39
|
+
(my $c-data-file = "$dir/../../problem-specifications/exercises/{
|
40
|
+
$dir.IO.resolve.basename
|
41
|
+
}/canonical-data.json".IO.resolve) ~~ :f ??
|
42
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
|
43
|
+
flunk 'problem-specifications file not found';
|
44
|
+
}
|
36
45
|
|
37
46
|
INIT {
|
38
47
|
$c-data := from-json q:to/END/;
|
@@ -128,19 +137,5 @@ $c-data := from-json q:to/END/;
|
|
128
137
|
|
129
138
|
END
|
130
139
|
|
131
|
-
if %*ENV<EXERCISM
|
132
|
-
$module = 'Example';
|
133
|
-
if (my $c-data-file =
|
134
|
-
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
135
|
-
.IO.resolve) ~~ :f
|
136
|
-
{
|
137
|
-
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
138
|
-
}
|
139
|
-
else {
|
140
|
-
flunk 'canonical-data';
|
141
|
-
}
|
142
|
-
}
|
143
|
-
else {
|
144
|
-
skip;
|
145
|
-
}
|
140
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
146
141
|
}
|
@@ -7,9 +7,7 @@ use JSON::Fast;
|
|
7
7
|
my Str:D $exercise := 'Raindrops';
|
8
8
|
my Version:D $version = v1;
|
9
9
|
my Str $module //= $exercise;
|
10
|
-
|
11
|
-
plan 20;
|
12
|
-
}
|
10
|
+
plan 20;
|
13
11
|
|
14
12
|
use-ok $module or bail-out;
|
15
13
|
require ::($module);
|
@@ -32,7 +30,18 @@ for @($c-data<cases>) {
|
|
32
30
|
}
|
33
31
|
}
|
34
32
|
|
35
|
-
|
33
|
+
unless %*ENV<EXERCISM> {
|
34
|
+
skip-rest 'exercism tests';
|
35
|
+
exit;
|
36
|
+
}
|
37
|
+
|
38
|
+
subtest 'canonical-data' => {
|
39
|
+
(my $c-data-file = "$dir/../../problem-specifications/exercises/{
|
40
|
+
$dir.IO.resolve.basename
|
41
|
+
}/canonical-data.json".IO.resolve) ~~ :f ??
|
42
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
|
43
|
+
flunk 'problem-specifications file not found';
|
44
|
+
}
|
36
45
|
|
37
46
|
INIT {
|
38
47
|
$c-data := from-json q:to/END/;
|
@@ -154,19 +163,5 @@ $c-data := from-json q:to/END/;
|
|
154
163
|
|
155
164
|
END
|
156
165
|
|
157
|
-
if %*ENV<EXERCISM
|
158
|
-
$module = 'Example';
|
159
|
-
if (my $c-data-file =
|
160
|
-
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
161
|
-
.IO.resolve) ~~ :f
|
162
|
-
{
|
163
|
-
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
164
|
-
}
|
165
|
-
else {
|
166
|
-
flunk 'canonical-data';
|
167
|
-
}
|
168
|
-
}
|
169
|
-
else {
|
170
|
-
skip;
|
171
|
-
}
|
166
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
172
167
|
}
|
@@ -7,9 +7,7 @@ use JSON::Fast;
|
|
7
7
|
my Str:D $exercise := 'RNA';
|
8
8
|
my Version:D $version = v1;
|
9
9
|
my Str $module //= $exercise;
|
10
|
-
|
11
|
-
plan 10;
|
12
|
-
}
|
10
|
+
plan 10;
|
13
11
|
|
14
12
|
use-ok $module or bail-out;
|
15
13
|
require ::($module);
|
@@ -32,7 +30,18 @@ for @($c-data<cases>) {
|
|
32
30
|
}
|
33
31
|
}
|
34
32
|
|
35
|
-
|
33
|
+
unless %*ENV<EXERCISM> {
|
34
|
+
skip-rest 'exercism tests';
|
35
|
+
exit;
|
36
|
+
}
|
37
|
+
|
38
|
+
subtest 'canonical-data' => {
|
39
|
+
(my $c-data-file = "$dir/../../problem-specifications/exercises/{
|
40
|
+
$dir.IO.resolve.basename
|
41
|
+
}/canonical-data.json".IO.resolve) ~~ :f ??
|
42
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
|
43
|
+
flunk 'problem-specifications file not found';
|
44
|
+
}
|
36
45
|
|
37
46
|
INIT {
|
38
47
|
$c-data := from-json q:to/END/;
|
@@ -106,19 +115,5 @@ $c-data := from-json q:to/END/;
|
|
106
115
|
|
107
116
|
END
|
108
117
|
|
109
|
-
if %*ENV<EXERCISM
|
110
|
-
$module = 'Example';
|
111
|
-
if (my $c-data-file =
|
112
|
-
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
113
|
-
.IO.resolve) ~~ :f
|
114
|
-
{
|
115
|
-
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
116
|
-
}
|
117
|
-
else {
|
118
|
-
flunk 'canonical-data';
|
119
|
-
}
|
120
|
-
}
|
121
|
-
else {
|
122
|
-
skip;
|
123
|
-
}
|
118
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
124
119
|
}
|
@@ -46,11 +46,6 @@ subtest 'Randomness', {
|
|
46
46
|
isnt @names, @names.sort, 'Names not ordered';
|
47
47
|
isnt @names, @names.sort.reverse, 'Names not reverse ordered';
|
48
48
|
}
|
49
|
-
|
50
|
-
done-testing;
|
51
|
-
|
52
49
|
INIT {
|
53
|
-
if %*ENV<EXERCISM
|
54
|
-
$module = 'Example';
|
55
|
-
}
|
50
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
56
51
|
}
|
@@ -7,9 +7,7 @@ use JSON::Fast;
|
|
7
7
|
my Str:D $exercise := 'Scrabble';
|
8
8
|
my Version:D $version = v1;
|
9
9
|
my Str $module //= $exercise;
|
10
|
-
|
11
|
-
plan 13;
|
12
|
-
}
|
10
|
+
plan 13;
|
13
11
|
|
14
12
|
use-ok $module or bail-out;
|
15
13
|
require ::($module);
|
@@ -26,7 +24,18 @@ require ::($module) <&score>;
|
|
26
24
|
my $c-data;
|
27
25
|
is .<input>.&score, |.<expected description> for @($c-data<cases>);
|
28
26
|
|
29
|
-
|
27
|
+
unless %*ENV<EXERCISM> {
|
28
|
+
skip-rest 'exercism tests';
|
29
|
+
exit;
|
30
|
+
}
|
31
|
+
|
32
|
+
subtest 'canonical-data' => {
|
33
|
+
(my $c-data-file = "$dir/../../problem-specifications/exercises/{
|
34
|
+
$dir.IO.resolve.basename
|
35
|
+
}/canonical-data.json".IO.resolve) ~~ :f ??
|
36
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
|
37
|
+
flunk 'problem-specifications file not found';
|
38
|
+
}
|
30
39
|
|
31
40
|
INIT {
|
32
41
|
$c-data := from-json q:to/END/;
|
@@ -106,19 +115,5 @@ $c-data := from-json q:to/END/;
|
|
106
115
|
|
107
116
|
END
|
108
117
|
|
109
|
-
if %*ENV<EXERCISM
|
110
|
-
$module = 'Example';
|
111
|
-
if (my $c-data-file =
|
112
|
-
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
113
|
-
.IO.resolve) ~~ :f
|
114
|
-
{
|
115
|
-
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
116
|
-
}
|
117
|
-
else {
|
118
|
-
flunk 'canonical-data';
|
119
|
-
}
|
120
|
-
}
|
121
|
-
else {
|
122
|
-
skip;
|
123
|
-
}
|
118
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
124
119
|
}
|
@@ -7,9 +7,7 @@ use JSON::Fast;
|
|
7
7
|
my Str:D $exercise := 'SpaceAge';
|
8
8
|
my Version:D $version = v1;
|
9
9
|
my Str $module //= $exercise;
|
10
|
-
|
11
|
-
plan 10;
|
12
|
-
}
|
10
|
+
plan 10;
|
13
11
|
|
14
12
|
use-ok $module or bail-out;
|
15
13
|
require ::($module);
|
@@ -26,7 +24,18 @@ require ::($module) <Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune>;
|
|
26
24
|
my $c-data;
|
27
25
|
is (age-on ::(.<planet>): .<seconds>), |.<expected description> for @($c-data<cases>);
|
28
26
|
|
29
|
-
|
27
|
+
unless %*ENV<EXERCISM> {
|
28
|
+
skip-rest 'exercism tests';
|
29
|
+
exit;
|
30
|
+
}
|
31
|
+
|
32
|
+
subtest 'canonical-data' => {
|
33
|
+
(my $c-data-file = "$dir/../../problem-specifications/exercises/{
|
34
|
+
$dir.IO.resolve.basename
|
35
|
+
}/canonical-data.json".IO.resolve) ~~ :f ??
|
36
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
|
37
|
+
flunk 'problem-specifications file not found';
|
38
|
+
}
|
30
39
|
|
31
40
|
INIT {
|
32
41
|
$c-data := from-json q:to/END/;
|
@@ -96,19 +105,5 @@ $c-data := from-json q:to/END/;
|
|
96
105
|
|
97
106
|
END
|
98
107
|
|
99
|
-
if %*ENV<EXERCISM
|
100
|
-
$module = 'Example';
|
101
|
-
if (my $c-data-file =
|
102
|
-
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
103
|
-
.IO.resolve) ~~ :f
|
104
|
-
{
|
105
|
-
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
106
|
-
}
|
107
|
-
else {
|
108
|
-
flunk 'canonical-data';
|
109
|
-
}
|
110
|
-
}
|
111
|
-
else {
|
112
|
-
skip;
|
113
|
-
}
|
108
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
114
109
|
}
|
@@ -7,9 +7,7 @@ use JSON::Fast;
|
|
7
7
|
my Str:D $exercise := 'WordCount';
|
8
8
|
my Version:D $version = v1;
|
9
9
|
my Str $module //= $exercise;
|
10
|
-
|
11
|
-
plan 12;
|
12
|
-
}
|
10
|
+
plan 12;
|
13
11
|
|
14
12
|
use-ok $module or bail-out;
|
15
13
|
require ::($module);
|
@@ -26,7 +24,18 @@ require ::($module) <&count-words>;
|
|
26
24
|
my $c-data;
|
27
25
|
is-deeply (% = .<input>.&count-words), |.<expected description> for @($c-data<cases>);
|
28
26
|
|
29
|
-
|
27
|
+
unless %*ENV<EXERCISM> {
|
28
|
+
skip-rest 'exercism tests';
|
29
|
+
exit;
|
30
|
+
}
|
31
|
+
|
32
|
+
subtest 'canonical-data' => {
|
33
|
+
(my $c-data-file = "$dir/../../problem-specifications/exercises/{
|
34
|
+
$dir.IO.resolve.basename
|
35
|
+
}/canonical-data.json".IO.resolve) ~~ :f ??
|
36
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
|
37
|
+
flunk 'problem-specifications file not found';
|
38
|
+
}
|
30
39
|
|
31
40
|
INIT {
|
32
41
|
$c-data := from-json q:to/END/;
|
@@ -150,19 +159,5 @@ $c-data := from-json q:to/END/;
|
|
150
159
|
|
151
160
|
END
|
152
161
|
|
153
|
-
if %*ENV<EXERCISM
|
154
|
-
$module = 'Example';
|
155
|
-
if (my $c-data-file =
|
156
|
-
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
157
|
-
.IO.resolve) ~~ :f
|
158
|
-
{
|
159
|
-
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
160
|
-
}
|
161
|
-
else {
|
162
|
-
flunk 'canonical-data';
|
163
|
-
}
|
164
|
-
}
|
165
|
-
else {
|
166
|
-
skip;
|
167
|
-
}
|
162
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
168
163
|
}
|
@@ -7,9 +7,7 @@ use JSON::Fast;
|
|
7
7
|
my Str:D $exercise := 'Wordy';
|
8
8
|
my Version:D $version = v1;
|
9
9
|
my Str $module //= $exercise;
|
10
|
-
|
11
|
-
plan 18;
|
12
|
-
}
|
10
|
+
plan 18;
|
13
11
|
|
14
12
|
use-ok $module or bail-out;
|
15
13
|
require ::($module);
|
@@ -32,7 +30,18 @@ for @($c-data<cases>) {
|
|
32
30
|
}
|
33
31
|
}
|
34
32
|
|
35
|
-
|
33
|
+
unless %*ENV<EXERCISM> {
|
34
|
+
skip-rest 'exercism tests';
|
35
|
+
exit;
|
36
|
+
}
|
37
|
+
|
38
|
+
subtest 'canonical-data' => {
|
39
|
+
(my $c-data-file = "$dir/../../problem-specifications/exercises/{
|
40
|
+
$dir.IO.resolve.basename
|
41
|
+
}/canonical-data.json".IO.resolve) ~~ :f ??
|
42
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
|
43
|
+
flunk 'problem-specifications file not found';
|
44
|
+
}
|
36
45
|
|
37
46
|
INIT {
|
38
47
|
$c-data := from-json q:to/END/;
|
@@ -147,19 +156,5 @@ $c-data := from-json q:to/END/;
|
|
147
156
|
|
148
157
|
END
|
149
158
|
|
150
|
-
if %*ENV<EXERCISM
|
151
|
-
$module = 'Example';
|
152
|
-
if (my $c-data-file =
|
153
|
-
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
154
|
-
.IO.resolve) ~~ :f
|
155
|
-
{
|
156
|
-
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
157
|
-
}
|
158
|
-
else {
|
159
|
-
flunk 'canonical-data';
|
160
|
-
}
|
161
|
-
}
|
162
|
-
else {
|
163
|
-
skip;
|
164
|
-
}
|
159
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
165
160
|
}
|
@@ -8,9 +8,7 @@ use #`{{&use}};#`{{/modules}}
|
|
8
8
|
my Str:D $exercise#`{{#exercise}} := '#`{{&exercise}}'#`{{/exercise}};#`{{#exercise_comment}} #`[#`{{&exercise_comment}}]#`{{/exercise_comment}}
|
9
9
|
my Version:D $version#`{{#version}} = v#`{{&version}}#`{{/version}};#`{{#version_comment}} #`[#`{{&version_comment}}]#`{{/version_comment}}
|
10
10
|
my Str $module //= $exercise;#`{{#module_comment}} #`[#`{{&module_comment}}]#`{{/module_comment}}#`{{#plan}}
|
11
|
-
#`{{#
|
12
|
-
#`{{/cdata}}plan #`{{&plan}};#`{{#plan_comment}} #`[#`{{&plan_comment}}]#`{{/plan_comment}}#`{{#cdata}}
|
13
|
-
}#`{{/cdata}}#`{{/plan}}
|
11
|
+
plan #`{{&plan}};#`{{#plan_comment}} #`[#`{{&plan_comment}}]#`{{/plan_comment}}#`{{/plan}}
|
14
12
|
#`{{#use_test_comment}}
|
15
13
|
|
16
14
|
#`[#`{{&use_test_comment}}]#`{{/use_test_comment}}
|
@@ -36,33 +34,29 @@ subtest 'Class methods', {
|
|
36
34
|
#`{{/methods}}#`{{#cdata}}
|
37
35
|
my $c-data;#`{{/cdata}}
|
38
36
|
#`{{&tests}}
|
37
|
+
#`{{#exercism_comment}}
|
39
38
|
|
40
|
-
|
39
|
+
#`[#`{{&exercism_comment}}]#`{{/exercism_comment}}#`{{#cdata}}
|
40
|
+
unless %*ENV<EXERCISM> {
|
41
|
+
skip-rest 'exercism tests';
|
42
|
+
exit;
|
43
|
+
}
|
41
44
|
|
42
|
-
|
43
|
-
|
45
|
+
subtest 'canonical-data' => {
|
46
|
+
(my $c-data-file = "$dir/../../problem-specifications/exercises/{
|
47
|
+
$dir.IO.resolve.basename
|
48
|
+
}/canonical-data.json".IO.resolve) ~~ :f ??
|
49
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'match problem-specifications' !!
|
50
|
+
flunk 'problem-specifications file not found';
|
51
|
+
}
|
44
52
|
|
45
|
-
#`
|
46
|
-
INIT {
|
47
|
-
|
53
|
+
#`{{/cdata}}
|
54
|
+
INIT {#`{{#cdata}}
|
55
|
+
$c-data := from-json q:to/END/;
|
48
56
|
|
49
57
|
#`{{&json}}
|
50
58
|
END
|
59
|
+
#`{{/cdata}}
|
51
60
|
|
52
|
-
|
53
|
-
#`[#`{{&exercism_comment}}]#`{{/exercism_comment}}
|
54
|
-
$module = 'Example';#`{{#cdata}}
|
55
|
-
if (my $c-data-file =
|
56
|
-
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
57
|
-
.IO.resolve) ~~ :f
|
58
|
-
{
|
59
|
-
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
60
|
-
}
|
61
|
-
else {
|
62
|
-
flunk 'canonical-data';
|
63
|
-
}
|
64
|
-
}
|
65
|
-
else {
|
66
|
-
skip;#`{{/cdata}}
|
67
|
-
}
|
61
|
+
$module = 'Example' if %*ENV<EXERCISM>;
|
68
62
|
}
|