ipv4.t   [plain text]


use lib "./t";
use ExtUtils::TBone;

BEGIN {
	use lib '..';
	
	use Net::IP qw(:PROC);

	if (eval (require Math::BigInt))
	{
		$math_bigint = 1;
	};
};

my $numtests = 26;

# Create checker:
my $T = typical ExtUtils::TBone;

$numtests++ if $math_bigint;

$T->begin($numtests);
#------------------------------------------------------------------------------



$ip = new Net::IP('195.114.80/24',4);

$T->ok (defined($ip),$Net::IP::Error);
$T->ok_eq ($ip->binip(),'11000011011100100101000000000000',$ip->error());
$T->ok_eq ($ip->ip(),'195.114.80.0',$ip->error());
$T->ok_eq ($ip->print(),'195.114.80/24',$ip->error());
$T->ok_eq ($ip->hexip(),'0xc3725000',$ip->error());
$T->ok_eq ($ip->hexmask(),'0xffffff00',$ip->error());
$T->ok_eqnum ($ip->prefixlen(),24,$ip->error());
$T->ok_eqnum ($ip->version(),4,$ip->error());
$T->ok_eqnum ($ip->size(),256,$ip->error());
$T->ok_eq ($ip->binmask(),'11111111111111111111111100000000',$ip->error());
$T->ok_eq ($ip->mask(),'255.255.255.0',$ip->error());
$T->ok_eqnum ($ip->intip(),3279048704,$ip->error()) if $math_bigint;
$T->ok_eq ($ip->iptype(),'PUBLIC',$ip->error());
$T->ok_eq ($ip->reverse_ip(),'80.114.195.in-addr.arpa.',$ip->error());
$T->ok_eq ($ip->last_bin(),'11000011011100100101000011111111',$ip->error());
$T->ok_eq ($ip->last_ip(),'195.114.80.255',$ip->error());

$ip->set('202.31.4/24');
$T->ok_eq ($ip->ip(),'202.31.4.0',$ip->error());

$ip->set('234.245.252.253/2');
$T->ok_eq ($ip->error(),'Invalid prefix 11101010111101011111110011111101/2',$ip->error());
$T->ok_eqnum ($ip->errno(),171,$ip->error());

$ip->set('62.33.41.9');
$ip2 = new Net::IP('0.1.0.5');
$T->ok_eq ($ip->binadd($ip2)->ip(),'62.34.41.14',$ip->error());

$ip->set('133.45.0/24');
$ip2 = new Net::IP('133.45.1/24');
$T->ok_eqnum ($ip->aggregate($ip2)->prefixlen(),23,$ip->error());

$ip2 = new Net::IP('133.44.255.255');
$T->ok_eqnum ($ip->bincomp('gt',$ip2),1,$ip->error());

$ip = new Net::IP('133.44.255.255-133.45.0.42');
$T->ok_eq (($ip->find_prefixes())[3],'133.45.0.40/31',$ip->error());

$ip = new Net::IP('192.168.2.254-192.168.2.255');
my @prefixes = $ip->find_prefixes();
$T->ok_eqnum (scalar(@prefixes), 1);
$T->ok_eq ($prefixes[0],'192.168.2.254/31',$ip->error());

$ip->set('201.33.128.0/22');
$ip2->set('201.33.129.0/24');

$T->ok_eqnum ($ip->overlaps($ip2),$IP_B_IN_A_OVERLAP,$ip->error());

$ip->set('192.168.0.3/32');
$T->ok_eqnum ($ip->size,1,$ip->error());


#------------------------------------------------------------------------------
$T->end;
1;