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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
#use diagnostics;
use NetAddr::IP::Lite 0.10;
*Ones = \&NetAddr::IP::Lite::Ones;
use NetAddr::IP::Util qw(
ipv6_aton
shiftleft
);
$| = 1;
print "1..8\n";
my $test = 1;
sub ok() {
print 'ok ',$test++,"\n";
}
my $ip24 = '1.2.3.4/24';
my $o = new NetAddr::IP::Lite($ip24);
my $c = $o;
## test 1 validate original
my $txto = sprintf("%s",$o);
my $txtc = sprintf("%s",$c);
print "orig... got: $txto, exp: $ip24\nnot "
unless $txto eq $ip24;
&ok;
## test 2
print "copy... got: $txtc, exp: $ip24\nnot "
unless $txtc eq $ip24;
&ok;
my $ip28 = '1.2.3.4/28';
my $mask = shiftleft(Ones(),32 - 28);
$c->{mask} = $mask;
$txto = sprintf("%s",$o);
$txtc = sprintf("%s",$c);
## overload does not unlink originals in this case
## test 3 validate original
$txto = sprintf("%s",$o);
$txtc = sprintf("%s",$c);
print "orig... got: $txto, exp: $ip28\nnot "
unless $txto eq $ip28;
&ok;
## test 4
print "copy... got: $txtc, exp: $ip28\nnot "
unless $txtc eq $ip28;
&ok;
my $ip265 = '1.2.3.5/26';
my $ip285 = '1.2.3.5/28';
$mask = shiftleft(Ones(),32 - 26);
## test 5 overload seperates variables
$c++;
## validate original
$txto = sprintf("%s",$o);
$txtc = sprintf("%s",$c);
print "orig... got: $txto, exp: $ip28\nnot "
unless $txto eq $ip28;
&ok;
## test 6 check mutated copy
print "copy... got: $txtc, exp: $ip285\nnot "
unless $txtc eq $ip285;
&ok;
## test 7 check seperation
$c->{mask} = $mask;
## validate original
$txto = sprintf("%s",$o);
$txtc = sprintf("%s",$c);
print "orig... got: $txto, exp: $ip28\nnot "
unless $txto eq $ip28;
&ok;
## test 8 check mutated copy
print "copy... got: $txtc, exp: $ip265\nnot "
unless $txtc eq $ip265;
&ok;
|