The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

BEGIN { $| = 1; print "1..28\n";}
use Net::Netmask;
$loaded = 1;
print "ok 1\n";
END {print "not ok 1\n" unless $loaded;}

sub test {
	local($^W)=0;
	my($num,$true,$msg)=@_;
	print($true ? "ok $num\n" : "not ok $num $msg\n");
}
################################################################################

use strict;

my $debug = 0;

test(2,Net::Netmask->debug($debug)==$debug,"unable to set debug");


# test a variety of ip's with bytes greater than 255.
# all these tests should return undef

test(3,!defined(Net::Netmask->new2('209.256.68.22:255.255.224.0')), 
	"bad net byte");
test(4,scalar(Net::Netmask->errstr =~ /^could not parse /),"errstr mismatch");
test(5,!defined(Net::Netmask->new2('209.180.68.22:256.255.224.0')), 
	"bad mask byte");
test(6,scalar(Net::Netmask->errstr =~ /^illegal netmask:/),"errstr mismatch");
test(7,!defined(Net::Netmask->new2('209.157.300.22','255.255.224.0')), 
	"bad net byte");
test(8,scalar(Net::Netmask->errstr =~ /^could not parse /),"errstr mismatch");
test(9,!defined(Net::Netmask->new2('300.157.70.33','0xffffe000')), 
	"bad net byte");
test(10,scalar(Net::Netmask->errstr =~ /^could not parse /),"errstr mismatch");
test(11,!defined(Net::Netmask->new2('209.500.70.33/19')), "bad net byte");
test(12,scalar(Net::Netmask->errstr =~ /^could not parse /),"errstr mismatch");
test(13,!defined(Net::Netmask->new2('140.999.82')),       "bad net byte");
test(14,scalar(Net::Netmask->errstr =~ /^could not parse /),"errstr mismatch");
test(15,!defined(Net::Netmask->new2('899.174')),          "bad net byte");
test(16,scalar(Net::Netmask->errstr =~ /^could not parse /),"errstr mismatch");
test(17,!defined(Net::Netmask->new2('900')),              "bad net byte");
test(18,scalar(Net::Netmask->errstr =~ /^could not parse /),"errstr mismatch");
test(19,!defined(Net::Netmask->new2('209.157.300/19')),   "bad net byte");
test(20,scalar(Net::Netmask->errstr =~ /^could not parse /),"errstr mismatch");
test(21,!defined(Net::Netmask->new2('209.300.64.0-209.157.95.255')),
	"bad net byte");
test(22,scalar(Net::Netmask->errstr =~ /^illegal dotted quad/),
	"errstr mismatch");
test(23,!defined(Net::Netmask->new2('209.300/17')),       "bad net byte");
test(24,scalar(Net::Netmask->errstr =~ /^could not parse /),"errstr mismatch");

# test whois numbers with space between dash

test(25,Net::Netmask->new2('209.157.64.0 - 209.157.95.255'),
	"whois with single space around dash");
test(26,Net::Netmask->new2('209.157.64.0   -   209.157.95.255'),
	"whois with mulitple spaces around dash");

# test ranges that are a power-of-two big, but are not legal blocks
test(27,! Net::Netmask->new2('218.0.0.0 - 221.255.255.255'),
	"could not find exact fit for 218.0.0.0 - 221.255.255.255");
test(28,! Net::Netmask->new2('218.0.0.4 - 218.0.0.11'),
	"could not find exact fit for 218.0.0.4 - 218.0.0.11");