Newer
Older
NetAddr-IP / t / v4-splitplan.t
@Michael Robinton Michael Robinton on 21 Oct 2014 2 KB Import of MIKER/NetAddr-IP-4.017 from CPAN.
  1.  
  2. use Test::More tests => 28;
  3.  
  4. use_ok('NetAddr::IP');
  5.  
  6. my $ip = new NetAddr::IP('192.168.21.13/15');
  7. my $rv;
  8. ok(($rv = sprintf("%s",$ip)) eq '192.168.21.13/15',"$rv eq 192.168.21.13/15");
  9.  
  10. my($plan,$masks) = $ip->_splitplan(15);
  11. ok($plan,'there is a plan');
  12. ok(!$masks,'plan returns the orignal net');
  13. ok(@$plan == 1,'one item plan');
  14. ok(($rv = $plan->[0]) == 15,"plan $rv is original cidr 15");
  15.  
  16. my $cmask = new NetAddr::IP('255.126.0.0');
  17. ok(($rv = sprintf("%s",$cmask)) eq '255.126.0.0/32',"$rv eq 255.126.0.0/32");
  18.  
  19. ($plan,$masks) = $ip->_splitplan($cmask);
  20. ok(!$plan,'failing because of bits in mask');
  21.  
  22. $cmask = new NetAddr::IP('255.254.0.0');
  23. ok(($rv = sprintf("%s",$cmask)) eq '255.254.0.0/32',"$rv eq 255.254.0.0/32");
  24.  
  25. ($plan,$masks) = $ip->_splitplan($cmask);
  26. ok($plan,'there is a plan');
  27.  
  28. ok(!$masks,'plan returns the orignal net');
  29. ok(@$plan == 1,'one item plan');
  30. ok(($rv = $plan->[0]) == 15,"plan $rv is original cidr 15");
  31.  
  32. $cmask = '255.254.0.0'; # ipV4 text cmask
  33. ($plan,$masks) = $ip->_splitplan($cmask);
  34. ok($plan,'there is a plan');
  35. ok(!$masks,'plan returns the orignal net');
  36. ok(@$plan == 1,'one item plan');
  37. ok(($rv = $plan->[0]) == 15,"plan $rv is original cidr 15");
  38.  
  39. $cmask = '255.126.0.0'; # ipV4 text cmask
  40. ($plan,$masks) = $ip->_splitplan($cmask);
  41. ok(!$plan,'failing because of bits in mask');
  42.  
  43. $cmask = 'garbage';
  44. ($plan,$masks) = $ip->_splitplan($cmask);
  45. ok(!$plan,'failing because of garbage');
  46.  
  47. $cmask = 14; # cidr is bigger than requested
  48. ($plan,$masks) = $ip->_splitplan($cmask);
  49. ok(!$plan,'failing because of 15 overange');
  50.  
  51. # cidr makes more nets than 2**16
  52. ($plan,$masks) = $ip->_splitplan(32);
  53. ok(!$plan,'failing to many nets 32 - 15 = 2**17');
  54.  
  55. ($plan,$masks) = $ip->_splitplan(16,16,16);
  56. ok(!$plan,'failing because of 3 * 16 overange');
  57.  
  58. # test for plan that just fits
  59. ($plan,$masks) = $ip->_splitplan(31);
  60. ok($plan,'there is a plan 31');
  61. ok($masks,'plan has masks');
  62. ok(($rv = @{$plan}) == 2 ** 16,"$rv should = 65536");
  63.  
  64. # set netlimit internal to 4 nets
  65. $NetAddr::IP::_netlimit = 4;
  66. ($plan,$masks) = $ip->_splitplan(17); # should fit
  67. ok($plan,"plan of 4 17's");
  68.  
  69. ($plan,$masks) = $ip->_splitplan(17,17,17,17,18);
  70. ok(!plan,"fail plan of 4 17's + 18");
  71.  
  72. ($plan,$masks) = $ip->_splitplan(18);
  73. ok(!plan,"fail plan of 8 18's");