Newer
Older
NetAddr-IP / Lite / t / overminus.t
@Michael Robinton Michael Robinton on 21 Oct 2014 1 KB Import of MIKER/NetAddr-IP-4.017 from CPAN.
  1.  
  2. #use diagnostics;
  3. use Test::More tests => 32;
  4. use NetAddr::IP::Lite;
  5.  
  6. my $ip80 = new NetAddr::IP::Lite('::1:8000:0/80');
  7. my $ip7f = $ip80 - 1;
  8. my $maxplus = 2147483647;
  9. my $maxminus = 2147483648;
  10.  
  11. my $rv;
  12.  
  13. my $ipmax = $ip80 + $maxplus;
  14. ok(($rv = sprintf("%s",$ipmax)) eq '0:0:0:0:0:1:FFFF:FFFF/80',"ip80 maxplus eq $rv eq 0:0:0:0:0:1:FFFF:FFFF/80");
  15.  
  16. my $ipmin = $ip80 - $maxminus;
  17. ok(($rv = sprintf("%s",$ipmin)) eq '0:0:0:0:0:1:0:0/80',"ip80 maxminus€ eq $rv eq 0:0:0:0:0:1:0:0/80");
  18.  
  19. my $over = $maxplus +1;
  20. ok(($rv = sprintf("%s",$ip80 + $over)) eq '0:0:0:0:0:1:8000:0/80',"ip80 +overange unchanged, $rv");
  21.  
  22. $over = $maxminus +1;
  23. ok(($rv = sprintf("%s",$ip80 - $over)) eq '0:0:0:0:0:1:8000:0/80',"ip80 -overange unchanged, $rv");
  24.  
  25.  
  26. ok(($rv = sprintf("%s",$ip80)) eq '0:0:0:0:0:1:8000:0/80',"ip80 eq $rv eq 0:0:0:0:0:1:8000:0/80");
  27. ok(($rv = sprintf("%s",$ip7f)) eq '0:0:0:0:0:1:7FFF:FFFF/80',"ip7f eq $rv eq 0:0:0:0:0:1:7FFF:FFFF/80");
  28.  
  29. ok(($rv = $ip80 - $ip7f) == 1,"ip80 - ip7f = $rv");
  30. ok(($rv = $ip7f - $ip80) == -1,"ip7f - ip80 = $rv");
  31.  
  32. ok(($rv = $ipmax - $ip80) == $maxplus,"ipmax - ip80 = $rv should be $maxplus");
  33. ok(($rv = $ipmin - $ip80) == -$maxminus,"ipmin - ip80 = $rv should be \-$maxminus");
  34.  
  35. ++$ipmax;
  36. --$ipmin;
  37. ok(! defined($ipmax - $ip80),'undefined $ipmax - $ip80 is overange');
  38. ok(! defined($ipmin - $ip80),'undefined $ipmin - $ip80 is -overange');
  39.  
  40. my $ipx = $ip80->copy + 256;
  41. foreach (1..10) {
  42. ok(($rv = $ipx - $ip80) == $_ * 256,"$ipx - $ip80 = ". $_*256 ." should be $rv");
  43. ok(($rv = $ip80 - $ipx) == - $_ * 256,"$ip80 - $ipx = ". -$_*256 ." should be $rv");
  44. $ipx += 256;
  45. }