tracks/perl6/exercises/robot-name/example.yaml in trackler-2.2.1.53 vs tracks/perl6/exercises/robot-name/example.yaml in trackler-2.2.1.54
- old
+ new
@@ -1,44 +1,44 @@
exercise: Robot
version: 1
methods: name reset-name
plan: 8
-tests: |
+tests: |-
srand 1;
my $robot = ::($exercise).?new;
my Str $name = $robot.?name;
like $name, /^^<[A..Z]>**2 <[0..9]>**3$$/, 'Name matches schema';
-
+
srand 2;
is $robot.?name, $name, 'Name is persistent';
srand 1;
isnt ::($exercise).new.?name, $name, 'New Robot cannot claim previous Robot name';
-
+
srand 1;
$robot.?reset-name;
$robot.?reset_name; # Allows next test to still pass for older solutions
-
+
isnt $robot.?name, $name, "'reset-name' cannot use previous Robot name";
-
+
diag "\nCreating 100 robots...";
push my @names, ::($exercise).new.name for 1..100;
is @names, @names.unique, 'All names are unique';
subtest 'Randomness', {
plan 2;
isnt @names, @names.sort, 'Names not ordered';
isnt @names, @names.sort.reverse, 'Names not reverse ordered';
}
unit: class
-example: |
+example: |-
subset Name of Str where * ~~ /^<[A..Z]>**2 <[0..9]>**3$/;
has Name $.name = self.reset-name;
-
+
method reset-name {
state Promise:D $promise = start ('AA000'..'ZZ999').pick: *;
state Bool:D %record{Name:D};
state Int:D $i = 0;
-
+
if $promise.status ~~ 'Kept' {
($!name = $promise.result[$i++]) or die 'All names used.';
} else {
$!name = ('A'..'Z').roll(2).join ~ (^10).roll(3).join;
}