|
Packit |
0b51a0 |
use NetAddr::IP::Lite;
|
|
Packit |
0b51a0 |
use Test::More;
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
my @pairs =
|
|
Packit |
0b51a0 |
(
|
|
Packit |
0b51a0 |
[ '[::/0]', '0', '0' ],
|
|
Packit |
0b51a0 |
[ '[::/128]', '0', '340282366920938463463374607431768211455' ],
|
|
Packit |
0b51a0 |
[ '[cafe:cafe::/64]',
|
|
Packit |
0b51a0 |
'269827015721314068804783158349174669312',
|
|
Packit |
0b51a0 |
'340282366920938463444927863358058659840' ],
|
|
Packit |
0b51a0 |
[ '[cafe:cafe::1/64]',
|
|
Packit |
0b51a0 |
'269827015721314068804783158349174669313',
|
|
Packit |
0b51a0 |
'340282366920938463444927863358058659840' ],
|
|
Packit |
0b51a0 |
[ '[dead:beef::/100]',
|
|
Packit |
0b51a0 |
'295990755014133383690938178081940045824',
|
|
Packit |
0b51a0 |
'340282366920938463463374607431499776000' ],
|
|
Packit |
0b51a0 |
[ '[dead:beef::1/100]',
|
|
Packit |
0b51a0 |
'295990755014133383690938178081940045825',
|
|
Packit |
0b51a0 |
'340282366920938463463374607431499776000' ],
|
|
Packit |
0b51a0 |
);
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
my @scale =
|
|
Packit |
0b51a0 |
qw(
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:0000:0000:0001
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:0000:0000:0010
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:0000:0000:0100
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:0000:0000:1000
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:0000:0001:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:0001:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:0010:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:0100:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0000:1000:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:0000:0001:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:0001:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:0010:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:0100:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0000:1000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:0000:0001:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:0001:0000:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:0010:0000:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:0100:0000:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0000:1000:0000:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0001:0000:0000:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0010:0000:0000:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
0100:0000:0000:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
1000:0000:0000:0000:0000:0000:0000:0000
|
|
Packit |
0b51a0 |
);
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
my $tests = 4 * @pairs + @scale ** 2;
|
|
Packit |
0b51a0 |
plan tests => $tests;
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
for my $p (@pairs)
|
|
Packit |
0b51a0 |
{
|
|
Packit |
0b51a0 |
my $a = new NetAddr::IP::Lite $p->[0];
|
|
Packit |
0b51a0 |
isa_ok($a, 'NetAddr::IP::Lite', "$p->[0]");
|
|
Packit |
0b51a0 |
is($a->numeric, $p->[1], "$p->[0] Scalar numeric ok");
|
|
Packit |
0b51a0 |
is(($a->numeric)[0], $p->[1], "$p->[0] Array numeric ok for network");
|
|
Packit |
0b51a0 |
is(($a->numeric)[1], $p->[2], "$p->[0] Array numeric ok for mask");
|
|
Packit |
0b51a0 |
}
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
@ip_scale = map { new NetAddr::IP::Lite $_ } @scale;
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
isa_ok($_, 'NetAddr::IP::Lite', $_->addr) for @ip_scale;
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
for my $i (0 .. $#ip_scale)
|
|
Packit |
0b51a0 |
{
|
|
Packit |
0b51a0 |
for my $l (0 .. $i - 1)
|
|
Packit |
0b51a0 |
{
|
|
Packit |
0b51a0 |
next if $l >= $i;
|
|
Packit |
0b51a0 |
unless (ok($ip_scale[$i]->numeric > $ip_scale[$l]->numeric,
|
|
Packit |
0b51a0 |
"[$i, $l] $scale[$i] > $scale[$l]"))
|
|
Packit |
0b51a0 |
{
|
|
Packit |
0b51a0 |
diag "assertion [$i]: " . $ip_scale[$i]->numeric .
|
|
Packit |
0b51a0 |
" > " . $ip_scale[$l]->numeric;
|
|
Packit |
0b51a0 |
}
|
|
Packit |
0b51a0 |
}
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
next if $i == $#ip_scale;
|
|
Packit |
0b51a0 |
|
|
Packit |
0b51a0 |
for my $l ($i + 1 .. $#ip_scale)
|
|
Packit |
0b51a0 |
{
|
|
Packit |
0b51a0 |
next if $l <= $i;
|
|
Packit |
0b51a0 |
unless (ok($ip_scale[$i]->numeric < $ip_scale[$l]->numeric,
|
|
Packit |
0b51a0 |
"[$i, $l] $scale[$i] < $scale[$l]"))
|
|
Packit |
0b51a0 |
{
|
|
Packit |
0b51a0 |
diag "assertion [$i]: " . $ip_scale[$i]->numeric .
|
|
Packit |
0b51a0 |
" < " . $ip_scale[$l]->numeric;
|
|
Packit |
0b51a0 |
}
|
|
Packit |
0b51a0 |
}
|
|
Packit |
0b51a0 |
}
|