BEGIN { print "1..4\n"; }
END { print "not ok\n" unless $loaded }
use Math::NoCarry;
$loaded = 1;
print "ok\n";
my @triads = (
[qw(123 456 579)],
[qw(890 135 925)],
[qw(456 879 225)],
);
eval {
foreach my $triad ( @triads )
{
my( $n, $m, $expected ) = @$triad;
my $sum1 = Math::NoCarry::add( $n, $m );
my $sum2 = Math::NoCarry::add( $m, $n );
die "Different results for different orders!\n" .
"[$n + $m] gave [$sum1]\n[$m + $n] gave [$sum2]\n"
if $sum1 != $sum2;
die "[$n + $m] gave [$sum1], but I expected [$expected]\n"
unless $sum1 == $expected;
}
};
print STDERR $@ if $@;
print $@ ? 'not ' : '', "ok\n";
eval {
foreach my $triad ( @triads )
{
foreach my $n ( @$triad )
{
my $sum = Math::NoCarry::add( $n );
die "[$n] gave [$sum], but I expected [$n]\n"
unless $sum == $n;
}
}
};
print STDERR $@ if $@;
print $@ ? 'not ' : '', "ok\n";
eval {
my $sum = Math::NoCarry::add();
die "[NULL] gave [$sum], but I expected [FALSE]\n"
if $sum;
};
print STDERR $@ if $@;
print $@ ? 'not ' : '', "ok\n";