#!/usr/bin/perl -w
BEGIN
{
$| = 1;
chdir
't'
if
-d
't'
;
unshift
@INC
, (
'../lib'
,
'../blib/arch'
);
plan
tests
=> 20;
}
my
$destroyed
= 0;
sub
DESTROY {
$destroyed
++; }
for
my
$method
(
qw(_zero _one _two _ten)
)
{
$destroyed
= 0;
{
my
$num
= Math::BigInt::FastCalc::LeakCheck->
$method
();
bless
$num
,
"Math::BigInt::FastCalc::LeakCheck"
;
}
is (
$destroyed
, 1,
"$method does not leak memory"
);
}
my
$num
= Math::BigInt::FastCalc->_zero();
for
my
$method
(
qw(_is_zero _is_one _is_two _is_ten _num)
)
{
$destroyed
= 0;
{
my
$rc
= Math::BigInt::FastCalc->
$method
(
$num
);
bless
\
$rc
,
"Math::BigInt::FastCalc::LeakCheck"
;
}
is (
$destroyed
, 1,
"$method does not leak memory"
);
}
my
$num_10
= Math::BigInt::FastCalc->_ten();
my
$num_2
= Math::BigInt::FastCalc->_two();
my
$num_long
= Math::BigInt::FastCalc->_new(
"1234567890"
);
my
$num_long_2
= Math::BigInt::FastCalc->_new(
"12345678900987654321"
);
_test_acmp(
$num
,
$num
);
_test_acmp(
$num_10
,
$num_10
);
_test_acmp(
$num
,
$num_10
);
_test_acmp(
$num_10
,
$num
);
_test_acmp(
$num
,
$num_2
);
_test_acmp(
$num_2
,
$num
);
_test_acmp(
$num_long
,
$num
);
_test_acmp(
$num
,
$num_long
);
_test_acmp(
$num_long
,
$num_long
);
_test_acmp(
$num_long
,
$num_long_2
);
_test_acmp(
$num_long_2
,
$num_long
);
sub
_test_acmp
{
my
(
$n1
,
$n2
) =
@_
;
$destroyed
= 0;
{
my
$rc
= Math::BigInt::FastCalc->_acmp(
$n1
,
$n2
);
bless
\
$rc
,
"Math::BigInt::FastCalc::LeakCheck"
;
}
my
$n_1
= Math::BigInt::FastCalc->_str(
$n1
);
my
$n_2
= Math::BigInt::FastCalc->_str(
$n2
);
is (
$destroyed
, 1,
"_acmp($n_1,$n_2) does not leak memory"
);
}