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.
  1. use NetAddr::IP::Lite;
  2. use Test::More;
  3.  
  4. my @yes_pairs =
  5. (
  6. [ '::/0', '2001:620:0:4:a00:20ff:fe9c:7e4a' ],
  7. [ '3ffe:2000:0:4::/64', '3ffe:2000:0:4:a00:20ff:fe9c:7e4a' ],
  8. [ '3ffe:2000:0:4::/64', '3ffe:2000:0:4:a00:20ff:fe9c:7e4a/65' ],
  9. [ '2001:620:0:4::/64', '2001:620:0:4:a00:20ff:fe9c:7e4a' ],
  10. [ '2001:620:0:4::/64', '2001:620:0:4:a00:20ff:fe9c:7e4a/65' ],
  11. [ '2001:620:0:4::/64', '2001:620:0:4::1' ],
  12. [ '2001:620:0:4::/64', '2001:620:0:4:0:0:0:1' ],
  13. [ 'deaf:beef::/32', 'deaf:beef::1' ],
  14. [ 'deaf:beef::/32', 'deaf:beef::1:1' ],
  15. [ 'deaf:beef::/32', 'deaf:beef::1:0:1' ],
  16. [ 'deaf:beef::/32', 'deaf:beef::1:0:0:1' ],
  17. [ 'deaf:beef::/32', 'deaf:beef::1:0:0:0:1' ],
  18. );
  19.  
  20. my @no_pairs =
  21. (
  22. [ '3ffe:2000:0:4::/64', '3ffe:2000:0:4:a00:20ff:fe9c:7e4a/63' ],
  23. [ '2001:620:0:4::/64', '2001:620:0:4:a00:20ff:fe9c:7e4a/63' ],
  24. [ 'deaf:beef::/32', 'dead:cafe::1' ],
  25. [ 'deaf:beef::/32', 'dead:cafe::1:1' ],
  26. [ 'deaf:beef::/32', 'dead:cafe::1:0:1' ],
  27. [ 'deaf:beef::/32', 'dead:cafe::1:0:0:1' ],
  28. [ 'deaf:beef::/32', 'dead:cafe::1:0:0:0:1' ],
  29. );
  30.  
  31. my $tests = 6 * @yes_pairs + 1;
  32. plan tests => $tests;
  33.  
  34. ok(NetAddr::IP::Lite->new('::')->contains(NetAddr::IP::Lite->new('::')),
  35. ":: contains itself");
  36.  
  37. for my $p (@yes_pairs)
  38. {
  39. my $a = new NetAddr::IP::Lite $p->[0];
  40. my $b = new NetAddr::IP::Lite $p->[1];
  41.  
  42. isa_ok($a, 'NetAddr::IP::Lite', "$p->[0]");
  43. isa_ok($b, 'NetAddr::IP::Lite', "$p->[1]");
  44.  
  45. SKIP: {
  46. ok($a->contains($b), "->contains $p->[0], $p->[1] is true");
  47. ok($b->within($a), "->within $p->[1], $p->[0] is true");
  48. ok(!$b->contains($a), "->contains $p->[1], $p->[0] is false");
  49. ok(!$a->within($b), "->within $p->[0], $p->[1] is false");
  50. }
  51. }