Newer
Older
NetAddr-IP / Lite / t / v4-new.t
@Michael Robinton Michael Robinton on 21 Oct 2014 1 KB Import of MIKER/NetAddr-IP-4.010 from CPAN.
  1. use NetAddr::IP::Lite;
  2.  
  3. use Test::More;
  4.  
  5. my $binword;
  6. {
  7. local $SIG{__WARN__} = sub {};
  8. $binword = eval "0b11111111111111110000000000000000";
  9. }
  10. if ($@) {
  11. $binword = 0xffff0000;
  12. print STDERR "\t\tskipped! 0b11111111111111110000000000000000\n\t\tbinary bit strings unsupported in Perl version $]\n";
  13. }
  14.  
  15. @a = (
  16. [ 'localhost', '127.0.0.1' ],
  17. [ 0x01010101, '1.1.1.1' ],
  18. [ 1, '1.0.0.0' ], # Because it will have a mask. 0.0.0.1 ow
  19. [ 'default', '0.0.0.0' ],
  20. [ 'any', '0.0.0.0' ],
  21. [-809041407, '207.199.2.1'],
  22. [3485925889, '207.199.2.1'],
  23. );
  24.  
  25. @m = (
  26. [ 0, '0.0.0.0' ],
  27. [ 1, '128.0.0.0' ],
  28. [ 2, '192.0.0.0' ],
  29. [ 4, '240.0.0.0' ],
  30. [ 8, '255.0.0.0' ],
  31. [ 16, '255.255.0.0' ],
  32. [ 17, '255.255.128.0' ],
  33. [ 24, '255.255.255.0' ],
  34. [ 'default', '0.0.0.0' ],
  35. [ 32, '255.255.255.255' ],
  36. [ 'host', '255.255.255.255' ],
  37. [ 0xffffff00, '255.255.255.0' ],
  38. [ '255.255.255.240', '255.255.255.240' ],
  39. [ '255.255.128.0', '255.255.128.0' ],
  40. [ $binword, '255.255.0.0' ],
  41. );
  42.  
  43. plan tests => (4 * scalar @a * scalar @m) + 4;
  44.  
  45. foreach my $invalid qw(
  46. 256.1.1.1
  47. 256.256.1.1
  48. 256.256.256.1
  49. 256.256.256.256
  50. ) {
  51. ok (! defined NetAddr::IP::Lite->new($invalid), "Invalid IP $invalid returns undef");
  52. }
  53.  
  54. for my $a (@a) {
  55. for my $m (@m) {
  56. my $ip = new NetAddr::IP::Lite $a->[0], $m->[0];
  57. SKIP:
  58. {
  59. skip "Failed to make an object for $a->[0]/$m->[0]", 4
  60. unless defined $ip;
  61. is($ip->addr, $a->[1], "$a->[0] / $m->[0] is $a->[1]");
  62. is($ip->mask, $m->[1], "$a->[0] / $m->[0] is $m->[1]");
  63. is($ip->bits, 32, "$a->[0] / $m->[0] is 32 bits wide");
  64. is($ip->version, 4, "$a->[0] / $m->[0] is version 4");
  65. };
  66. }
  67. }