BEGIN { use_ok
"Data::Integer"
,
qw(
natint_bits
min_nint max_nint min_natint max_natint
min_sint max_sint min_signed_natint max_signed_natint
min_uint max_uint min_unsigned_natint max_unsigned_natint
)
; }
sub
nint_is($$) {
my
(
$tval
,
$cval
) =
@_
;
my
$tval0
=
$tval
;
ok
defined
(
$tval
) &&
ref
(\
$tval
) eq
"SCALAR"
&&
int
(
$tval0
) ==
$tval0
&&
"$tval"
eq
"$cval"
&&
((
my
$tval1
=
$tval
) <=> 0) == ((
my
$cval1
=
$cval
) <=> 0) &&
do
{
use
integer;
$tval
==
$cval
},
"$tval match $cval"
;
}
ok
int
(natint_bits) == natint_bits;
ok natint_bits >= 16;
my
$min_sint
= -1;
for
(
my
$i
= natint_bits-1;
$i
--; ) {
$min_sint
+=
$min_sint
; }
ok
$min_sint
< 0;
nint_is min_sint,
$min_sint
;
nint_is min_signed_natint,
$min_sint
;
nint_is min_nint,
$min_sint
;
nint_is min_natint,
$min_sint
;
nint_is min_sint + max_sint, -1;
nint_is min_uint, 0;
nint_is min_unsigned_natint, 0;
my
$max_sint
= min_sint - 1;
ok
$max_sint
> 0;
nint_is max_sint,
$max_sint
;
nint_is max_signed_natint,
$max_sint
;
no
integer;
my
$max_uint
=
$min_sint
|
$max_sint
;
nint_is max_uint,
$max_uint
;
nint_is max_unsigned_natint,
$max_uint
;
nint_is max_nint,
$max_uint
;
nint_is max_natint,
$max_uint
;
1;