Integrate mainline
[p5sagit/p5-mst-13.2.git] / t / op / sprintf.t
index e96c683..97b66a5 100755 (executable)
@@ -8,7 +8,7 @@
 
 BEGIN {
     chdir 't' if -d 't';
-    unshift @INC, '../lib';
+    @INC = '../lib';
 }   
 use warnings;
 
@@ -56,8 +56,17 @@ for ($i = 1; @tests; $i++) {
     }
     elsif ($y eq ">$result<")  # Some C libraries always give
     {                          # three-digit exponent
-       print("ok $i >$result< $x # three-digit exponent accepted\n");
+               print("ok $i # >$result< $x three-digit exponent accepted\n");
     }
+       elsif ($result =~ /[-+]\d{3}$/ &&
+                  # Suppress tests with modulo of exponent >= 100 on platforms
+                  # which can't handle such magnitudes (or where we can't tell).
+                  ((!eval {require POSIX}) || # Costly: only do this if we must!
+                       (length(&POSIX::DBL_MAX) - rindex(&POSIX::DBL_MAX, '+')) == 3))
+       {
+               print("ok $i # >$template< >$data< >$result<",
+                         " Suppressed: exponent out of range?\n") 
+       }
     else {
        $y = ($x eq $y ? "" : " => $y");
        print("not ok $i >$template< >$data< >$result< $x$y",
@@ -197,10 +206,8 @@ __END__
 >%12.4e<    >1234.875<    >  1.2349e+03<
 >%+-12.4e<  >1234.875<    >+1.2349e+03 <
 >%+12.4e<   >1234.875<    > +1.2349e+03<
->%+012.4e<  >1234.875<    >+01.2349e+03<
 >%+-12.4e<  >-1234.875<   >-1.2349e+03 <
 >%+12.4e<   >-1234.875<   > -1.2349e+03<
->%+012.4e<  >-1234.875<   >-01.2349e+03<
 >%f<        >1234.875<    >1234.875000<
 >%+f<       >1234.875<    >+1234.875000<
 >%#f<       >1234.875<    >1234.875000<
@@ -215,10 +222,8 @@ __END__
 >%8.1f<     >1234.875<    >  1234.9<
 >%+-8.1f<   >1234.875<    >+1234.9 <
 >%+8.1f<    >1234.875<    > +1234.9<
->%+08.1f<   >1234.875<    >+01234.9<
 >%+-8.1f<   >-1234.875<   >-1234.9 <
 >%+8.1f<    >-1234.875<   > -1234.9<
->%+08.1f<   >-1234.875<   >-01234.9<
 >%*.*f<     >[5, 2, 12.3456]< >12.35<
 >%f<        >0<           >0.000000<
 >%.0f<      >0<           >0<
@@ -256,7 +261,6 @@ __END__
 >%g<        >0<           >0<
 >%13g<      >1234567.89<  >  1.23457e+06<
 >%+13g<     >1234567.89<  > +1.23457e+06<
->%+013g<    >1234567.89<  >+01.23457e+06<
 >%013g<      >1234567.89< >001.23457e+06<
 >%-13g<      >1234567.89< >1.23457e+06  <
 >%h<        >''<          >%h INVALID<
@@ -304,3 +308,16 @@ __END__
 >%0*x<      >[-10, ,2**32-1]< >ffffffff  <
 >%y<        >''<          >%y INVALID<
 >%z<        >''<          >%z INVALID<
+>%2$d %1$d<    >[12, 34]<      >34 12<
+>%*2$d<                >[12, 3]<       > 12<
+>%2$d %d<      >[12, 34]<      >34 12<
+>%2$d %d %d<   >[12, 34]<      >34 12 34<
+>%3$d %d %d<   >[12, 34, 56]<  >56 12 34<
+>%2$*3$d %d<   >[12, 34, 3]<   > 34 12<
+>%*3$2$d %d<   >[12, 34, 3]<   > 34 12<
+>%2$d<         >12<    >0<
+>%0$d<         >12<    >%0$d INVALID<
+>%1$$d<                >12<    >%1$$d INVALID<
+>%1$1$d<       >12<    >%1$1$d INVALID<
+>%*2$*2$d<     >[12, 3]<       >%*2$*2$d INVALID<
+>%*2*2$d<      >[12, 3]<       >%*2*2$d INVALID<