Sha256: d0228a3f49f78ddd089fae43e051d3364283e58b2ece89ad4619d9c2192bca07

Contents?: true

Size: 1.7 KB

Versions: 44

Compression:

Stored size: 1.7 KB

Contents

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

my $exercise = 'GradeSchool';
my $version = v1;
my $module = %*ENV<EXERCISM> ?? 'Example' !! $exercise;
plan 11;

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

my @classes;
BEGIN { @classes = <Roster> };
subtest 'Class(es)', {
  plan 1;
  eval-lives-ok "use $module; ::('$_').new or die 'Could not use .new method on class $_.\'", $_ for @classes;
} or bail-out 'All classes must be defined and exported.';
require ::($module) @classes.eager;

for @classes -> $class {
  subtest "$class class method(s)", {
    plan 3;
    ok ::($class).can($_), $_ for <add-student list-grade list-all>;
  }
}

my $roster = Roster.new;

ok $roster.?add-student(:name('Jim'), :2grade), 'Add Jim to grade 2';
is $roster.?list-grade(2), <Jim>, 'List grade 2';
ok $roster.?add-student(:name('Zoe'), :2grade), 'Add Zoe to grade 2';
ok $roster.?add-student(:name('Barb'), :1grade), 'Add Barb to grade 1';
is $roster.?list-grade(2), <Jim Zoe>, 'List grade 2';
is $roster.?list-grade(1), <Barb>, 'List grade 1';

subtest 'Additional students', {
  plan 6;
  ok $roster.?add-student(:name($_), :1grade), "Add $_ to grade 1" for <Charlie Anna>;
  ok $roster.?add-student(:name('Alex'), :2grade), 'Add Alex to grade 2';
  ok $roster.?add-student(:name($_), :3grade), "Add $_ to grade 3" for <Tom Dick Harry>;
}

is $roster.?list-all, ('Grade 1', <Anna Barb Charlie>, 'Grade 2', <Alex Jim Zoe>, 'Grade 3', <Dick Harry Tom>), 'List all';

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
trackler-2.1.0.9 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.1.0.8 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.1.0.7 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.1.0.6 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.1.0.5 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.1.0.4 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.1.0.3 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.1.0.2 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.1.0.1 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.1.0.0 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.55 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.54 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.53 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.52 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.51 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.50 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.49 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.48 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.47 tracks/perl6/exercises/grade-school/grade-school.t
trackler-2.0.8.46 tracks/perl6/exercises/grade-school/grade-school.t