use NetAddr::IP::Lite;
use Test::More;
my @yes_pairs =
(
[ '::/0', '2001:620:0:4:a00:20ff:fe9c:7e4a' ],
[ '3ffe:2000:0:4::/64', '3ffe:2000:0:4:a00:20ff:fe9c:7e4a' ],
[ '3ffe:2000:0:4::/64', '3ffe:2000:0:4:a00:20ff:fe9c:7e4a/65' ],
[ '2001:620:0:4::/64', '2001:620:0:4:a00:20ff:fe9c:7e4a' ],
[ '2001:620:0:4::/64', '2001:620:0:4:a00:20ff:fe9c:7e4a/65' ],
[ '2001:620:0:4::/64', '2001:620:0:4::1' ],
[ '2001:620:0:4::/64', '2001:620:0:4:0:0:0:1' ],
[ 'deaf:beef::/32', 'deaf:beef::1' ],
[ 'deaf:beef::/32', 'deaf:beef::1:1' ],
[ 'deaf:beef::/32', 'deaf:beef::1:0:1' ],
[ 'deaf:beef::/32', 'deaf:beef::1:0:0:1' ],
[ 'deaf:beef::/32', 'deaf:beef::1:0:0:0:1' ],
);
my @no_pairs =
(
[ '3ffe:2000:0:4::/64', '3ffe:2000:0:4:a00:20ff:fe9c:7e4a/63' ],
[ '2001:620:0:4::/64', '2001:620:0:4:a00:20ff:fe9c:7e4a/63' ],
[ 'deaf:beef::/32', 'dead:cafe::1' ],
[ 'deaf:beef::/32', 'dead:cafe::1:1' ],
[ 'deaf:beef::/32', 'dead:cafe::1:0:1' ],
[ 'deaf:beef::/32', 'dead:cafe::1:0:0:1' ],
[ 'deaf:beef::/32', 'dead:cafe::1:0:0:0:1' ],
);
my $tests = 6 * @yes_pairs + 1;
plan tests => $tests;
ok(NetAddr::IP::Lite->new('::')->contains(NetAddr::IP::Lite->new('::')),
":: contains itself");
for my $p (@yes_pairs)
{
my $a = new NetAddr::IP::Lite $p->[0];
my $b = new NetAddr::IP::Lite $p->[1];
isa_ok($a, 'NetAddr::IP::Lite', "$p->[0]");
isa_ok($b, 'NetAddr::IP::Lite', "$p->[1]");
SKIP: {
ok($a->contains($b), "->contains $p->[0], $p->[1] is true");
ok($b->within($a), "->within $p->[1], $p->[0] is true");
ok(!$b->contains($a), "->contains $p->[1], $p->[0] is false");
ok(!$a->within($b), "->within $p->[0], $p->[1] is false");
}
}