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,20 +1,16 @@
|
|
1
1
|
exercise: Bob
|
2
|
-
version:
|
3
|
-
plan:
|
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
|
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,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
|
8
|
-
my Version:D $version = v1;
|
9
|
-
my Str $module //= $exercise;
|
10
|
-
plan 54;
|
9
|
+
my Version:D $version = v2;
|
11
10
|
|
12
|
-
|
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
|
-
~ "\
|
18
|
-
~ "Test is $
|
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
|
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
|
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 =
|
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
|
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
|
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:
|
2
|
+
version: 2
|
3
3
|
methods: time add-minutes
|
4
|
-
plan:
|
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
|
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 =
|
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
|
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
|
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,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
|
8
|
-
my Version:D $version = v1;
|
9
|
-
my Str $module //= $exercise;
|
10
|
-
plan 6;
|
9
|
+
my Version:D $version = v2;
|
11
10
|
|
12
|
-
|
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
|
-
~ "\
|
18
|
-
~ "Test is $
|
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,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
|
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 FlattenArray.^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
|
+
~ "\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> }
|
@@ -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
|
7
|
-
my Version:D $version = v2;
|
8
|
-
my Str $module //= $exercise;
|
9
|
-
plan 19;
|
8
|
+
my Version:D $version = v3;
|
10
9
|
|
11
|
-
|
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
|
-
~ "\
|
17
|
-
~ "Test is $
|
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 +1 @@
|
|
1
|
-
unit module Grains:ver<
|
1
|
+
unit module Grains:ver<2>;
|
@@ -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
|
8
|
-
my Version:D $version = v1;
|
9
|
-
my Str $module //= $exercise;
|
10
|
-
plan 13;
|
9
|
+
my Version:D $version = v2;
|
11
10
|
|
12
|
-
|
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
|
-
~ "\
|
18
|
-
~ "Test is $
|
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> }
|