Sha256: 2047d484acf8650a8aa90c37ff3c8a53394e0fe6c765a96384126bfae18f6be0

Contents?: true

Size: 1.33 KB

Versions: 46

Compression:

Stored size: 1.33 KB

Contents

#!/usr/bin/env perl6
use v6;
use Test;
use lib $?FILE.IO.dirname;

my Str:D $exercise := 'Robot';
my Version:D $version = v1;
my Str $module //= $exercise;
plan 8;

use-ok $module or bail-out;
require ::($module);

if ::($exercise).^ver !~~ $version {
  warn "\nExercise version mismatch. Further tests may fail!"
    ~ "\n$exercise is $(::($exercise).^ver.gist). "
    ~ "Test is $($version.gist).\n";
  bail-out 'Example version must match test version.' if %*ENV<EXERCISM>;
}

subtest 'Class methods', {
  ok ::($exercise).can($_), $_ for <name reset-name>;
}

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';
}

INIT { $module = 'Example' if %*ENV<EXERCISM> }

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
trackler-2.2.1.95 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.94 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.93 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.92 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.91 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.90 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.89 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.88 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.87 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.86 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.85 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.84 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.83 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.82 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.81 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.80 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.79 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.78 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.77 tracks/perl6/exercises/robot-name/robot-name.t
trackler-2.2.1.76 tracks/perl6/exercises/robot-name/robot-name.t