Newer
Older
NetAddr-IP / Lite / t / v6-contains.t
@Michael Robinton Michael Robinton on 21 Oct 2014 1 KB Import of MIKER/NetAddr-IP-4.020 from CPAN.
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");
  }
}