Sha256: c3d848bede80b12fdc89d7e100566cf3b8aa43c49d80edbfcf5577140e5c1a02

Contents?: true

Size: 1.7 KB

Versions: 73

Compression:

Stored size: 1.7 KB

Contents

#!/usr/bin/env perl
use strict;
use warnings;

my $module = 'Prime';

use Test::More;
use JSON::PP qw(decode_json);
use FindBin;
my $dir;
BEGIN { $dir = $FindBin::Bin . '/' };
use lib $dir;

my $cases;
{
    local $/ = undef;
    $cases = decode_json scalar <DATA>;
}

#plan tests => 3 + @$cases;
#diag explain $cases;

ok -e "${dir}${module}.pm", "missing $module.pm"
    or BAIL_OUT("You need to create a class called $module.pm with a constructor called factors.");

eval "use $module";
ok !$@, "Cannot load $module.pm"
    or BAIL_OUT("Does $module.pm compile?  Does it end with 1; ? ($@)");

can_ok($module, 'factors') or BAIL_OUT("Missing package $module; or missing sub factors()");

my $sub = $module . '::factors';

foreach my $c (@$cases) {
    no strict 'refs';
    is_deeply $sub->($c->{input}), $c->{expected}, $c->{name}
}


done_testing();

__DATA__
[
  {
     "input" : 1,
     "expected" : [],
     "name" : "test_1"
  },
  {
     "input" : 2,
     "expected" : [2],
     "name" : "test_2"
  },
  {
     "input" : 3,
     "expected" : [3],
     "name" : "test_3"
  },
  {
    "input" : 4,
    "expected" : [2, 2],
    "name" : "test_4"
  },
  {
    "input" : 6,
    "expected" : [2, 3],
    "name" : "test_6"
  },
  {
    "input" : 8,
    "expected" : [2, 2, 2],
    "name" : "test_8"
  },
  {
    "input" : 9,
    "expected" : [3, 3],
    "name" : "test_9"
  },
  {
    "input" : 27,
    "expected" : [3, 3, 3],
    "name" : "test_27"
  },
  {
    "input" : 625,
    "expected" : [5, 5, 5, 5],
    "name" : "test_625"
  },
  {
    "input" : 901255,
    "expected" : [5, 17, 23, 461],
    "name" : "test_901255"
  },
  {
    "input" : 93819012551,
    "expected" : [11, 9539, 894119],
    "name" : "test_93819012551"
  }
]

Version data entries

73 entries across 73 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.179 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.178 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.177 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.176 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.175 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.174 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.173 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.172 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.171 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.170 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.169 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.167 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.166 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.165 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.164 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.163 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.162 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.161 tracks/perl5/exercises/prime-factors/prime.t
trackler-2.2.1.160 tracks/perl5/exercises/prime-factors/prime.t