die "reason";
# versus just
die;
####
{
package Maths;
sub factorial { my $n = int(pop); return $n if $n<2; $n * factorial($n - 1) }
}
use Test::More;
my @expected = qw/ 0 1 2 6 24 100 720 /;
plan tests => scalar @expected;
is(Maths::factorial($_), $expected[$_], "Factorial of $_") for 0 .. $#expected;
####
{
package Maths;
sub factorial {
my $n = int(shift);
die "does not compute" if $n<0;
return $n if $n<2;
$n * factorial($n - 1);
}
}
use Test::More;
use Test::Exception;
my @results = qw/ 0 1 2 6 24 120 720 /;
for (0 .. $#results)
{
lives_and { is Maths::factorial($_), $results[$_] } "Factorial of $_";
}
dies_ok { Maths::factorial(-2) } "Factorial of negative number";
done_testing;