File: const.t

package info (click to toggle)
libdata-integer-perl 0.007-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208 kB
  • sloc: perl: 593; makefile: 2
file content (54 lines) | stat: -rw-r--r-- 1,242 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
use warnings;
use strict;

use Test::More tests => 18;

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;

use integer;

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;