calling.t revision 7c478bd95313f5f23a4c958a745db2134aa03244
# test calling conventions, and :constant overloading
use strict;
use Test;
{
$| = 1;
# to locate the testing files
{
# testing with the core distribution
}
else
{
}
if (-d 't')
{
chdir 't';
}
else
{
}
print "# INC = @INC\n";
my $tests = 160;
if ($] < 5.006)
{
exit;
}
}
use overload;
use overload;
my ($x,$y,$z,$u);
###############################################################################
# check whether op's accept normal strings, even when inherited by subclasses
# do one positive and one negative test to avoid false positives by "accident"
while (<DATA>)
{
next if /^#/; # skip comments
if (s/^&//)
{
$func = $_;
}
else
{
{
$try = '' if $args[0] eq ''; # undef, no argument
$try = "$class\->$func($try);";
$rc = eval $try;
}
}
}
#$try = "use $class ($version.'1');";
#eval $try;
#ok_undef ( $x ); # should result in error!
# test whether fallback to calc works
$try .= "$class\->config()->{lib};";
$ans = eval $try;
ok ( $ans, "Math::BigInt::Calc");
# test whether constant works or not, also test for qw($version)
# bgcd() is present in subclass, too
$ans = eval $try;
ok ( $ans, "1427247692705959881058285969449495136382746624");
# test wether Math::BigInt::Scalar via use works (w/ dff. spellings of calc)
$try .= ' $x = 2**10; $x = "$x";';
$ans = eval $try; ok ( $ans, "1024");
$try .= ' $x = 2**10; $x = "$x";';
$ans = eval $try; ok ( $ans, "1024");
# all done
###############################################################################
# Perl 5.005 does not like ok ($x,undef)
sub ok_undef
{
my $x = shift;
ok (1,1) and return if !defined $x;
}
__END__
&is_zero
1:0
0:1
&is_one
1:1
0:0
&is_positive
1:1
-1:0
&is_negative
1:0
-1:1
&is_nan
abc:1
1:0
&is_inf
inf:1
0:0
&bstr
5:5
10:10
-10:-10
abc:NaN
&bsstr
1:1e+0
0:0e+1
2:2e+0
200:2e+2
-5:-5e+0
-100:-1e+2
abc:NaN
&babs
-1:1
1:1
&bnot
-2:1
1:-2
&bzero
:0
&bnan
:NaN
abc:NaN
&bone
:1
'+':1
'-':-1
&binf
:inf
'+':inf
'-':-inf