use Test::More; if (defined($ENV{LIGHTERIPTESTS}) and $ENV{LIGHTERIPTESTS} =~ /yes/i) { print "1..0 # Skipped: LIGHTERIPTESTS = yes\n"; exit 0; } plan tests => 21; die "# Cannot continue without NetAddr::IP\n" unless use_ok('NetAddr::IP', 'Coalesce'); # Test a rather large set... my @ips = (); for my $o (0 .. 255) { push @ips, new NetAddr::IP "10.0.$o.1"; push @ips, new NetAddr::IP "10.0.$o.10"; push @ips, new NetAddr::IP "10.0.$o.100"; } sub tst { # This should return the empty list... my $r = Coalesce(24, 4, @ips); diag "Coalesce returned $r" unless isa_ok($r, 'ARRAY', 'Return type from Coalesce'); is(@$r, 0, "Empty array returned as expected"); # This should produce a list with all the /24s $r = Coalesce(24, 2, @ips); diag "Coalesce returned $r" unless isa_ok($r, 'ARRAY', 'Return type from Coalesce'); is(@$r, 256, "Whole result set as expected"); my @c = NetAddr::IP::Compact(@$r); is(@c, 1, "Results are compactable"); ok($c[0] eq '10.0.0.0/16', "Correct results"); # This should produce the same result as before, with an added /23 $r = Coalesce(24, 2, @ips, NetAddr::IP->new('10.0.0.125/23')); diag "Coalesce returned $r" unless isa_ok($r, 'ARRAY', 'Return type from Coalesce'); ok((grep { $_ eq '10.0.0.0/23' } @$r), "/23 went through"); @c = NetAddr::IP::Compact(@$r); is(@c, 1, "Results are compactable"); ok($c[0] eq '10.0.0.0/16', "Correct results"); } tst(); import NetAddr::IP qw(:old_nth); tst();