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