test/java/util/Formatter/BasicFloat.java

Print this page
rev 10699 : 8058887: (fmt) Improve java/util/Formatter test coverage of group separators and width

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -34,32 +34,33 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.text.DateFormatSymbols;
 import java.util.*;
 
-
-
-
 import static java.util.Calendar.*;
 
-
-
-
-
 public class BasicFloat extends Basic {
 
     private static void test(String fs, String exp, Object ... args) {
         Formatter f = new Formatter(new StringBuilder(), Locale.US);
         f.format(fs, args);
         ck(fs, exp, f.toString());
+
+        f = new Formatter(new StringBuilder(), Locale.US);
+        f.format("foo " + fs + " bar", args);
+        ck(fs, "foo " + exp + " bar", f.toString());
     }
 
     private static void test(Locale l, String fs, String exp, Object ... args)
     {
         Formatter f = new Formatter(new StringBuilder(), l);
         f.format(fs, args);
         ck(fs, exp, f.toString());
+
+        f = new Formatter(new StringBuilder(), l);
+        f.format("foo " + fs + " bar", args);
+        ck(fs, "foo " + exp + " bar", f.toString());
     }
 
     private static void test(String fs, Object ... args) {
         Formatter f = new Formatter(new StringBuilder(), Locale.US);
         f.format(fs, args);

@@ -133,136 +134,10 @@
             fail(fs, ex);
         else
             pass();
     }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
     private static float create(double v) {
         return (float) v;
     }
 
     private static float negate(double v) {

@@ -275,63 +150,10 @@
 
     private static float recip(float v) {
         return 1.0f / v;
     }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
     public static void test() {
         TimeZone.setDefault(TimeZone.getTimeZone("GMT-0800"));
 
         // Any characters not explicitly defined as conversions, date/time
         // conversion suffixes, or flags are illegal and are reserved for

@@ -513,457 +335,69 @@
         //---------------------------------------------------------------------
         tryCatch("%F", UnknownFormatConversionException.class);
 
         tryCatch("%#g", FormatFlagsConversionMismatchException.class);
 
+        //---------------------------------------------------------------------
+        // %s - float
+        //---------------------------------------------------------------------
+        float one = 1.0f;
+        float ten = 10.0f;
+        float pi  = (float) Math.PI;
 
+        test("%s", "3.1415927", pi);
 
+        //---------------------------------------------------------------------
+        // flag/conversion errors
+        //---------------------------------------------------------------------
+        tryCatch("%d", IllegalFormatConversionException.class, one);
+        tryCatch("%,.4e", FormatFlagsConversionMismatchException.class, one);
 
+        //---------------------------------------------------------------------
+        // %e
+        //
+        // Floating-point conversions applicable to float, double, and
+        // BigDecimal.
+        //---------------------------------------------------------------------
+        test("%e", "null", (Object)null);
 
+        //---------------------------------------------------------------------
+        // %e - float and double
+        //---------------------------------------------------------------------
+        // double PI = 3.141 592 653 589 793 238 46;
+        test("%e", "3.141593e+00", pi);
+        test("%.0e", "1e+01", ten);
+        test("%#.0e", "1.e+01", ten);
+        test("%E", "3.141593E+00", pi);
+        test("%10.3e", " 3.142e+00", pi);
+        test("%10.3e", "-3.142e+00", negate(pi));
+        test("%010.3e", "03.142e+00", pi);
+        test("%010.3e", "-3.142e+00", negate(pi));
+        test("%-12.3e", "3.142e+00   ", pi);
+        test("%-12.3e", "-3.142e+00  ", negate(pi));
+        test("%.3e", "3.142e+00", pi);
+        test("%.3e", "-3.142e+00", negate(pi));
+        test("%.3e", "3.142e+06", mult(pi, 1000000.0));
+        test("%.3e", "-3.142e+06", mult(pi, -1000000.0));
 
+        test(Locale.FRANCE, "%e", "3,141593e+00", pi);
 
+        // double PI^300
+        //    = 13962455701329742638131355433930076081862072808 ... e+149
 
+        test("%10.3e", " 1.000e+00", one);
+        test("%+.3e", "+3.142e+00", pi);
+        test("%+.3e", "-3.142e+00", negate(pi));
+        test("% .3e", " 3.142e+00", pi);
+        test("% .3e", "-3.142e+00", negate(pi));
+        test("%#.0e", "3.e+00", create(3.0));
+        test("%#.0e", "-3.e+00", create(-3.0));
+        test("%.0e", "3e+00", create(3.0));
+        test("%.0e", "-3e+00", create(-3.0));
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        //---------------------------------------------------------------------
-        // %s - float
-        //---------------------------------------------------------------------
-        float one = 1.0f;
-        float ten = 10.0f;
-        float pi  = (float) Math.PI;
-
-        test("%s", "3.1415927", pi);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        //---------------------------------------------------------------------
-        // flag/conversion errors
-        //---------------------------------------------------------------------
-        tryCatch("%d", IllegalFormatConversionException.class, one);
-        tryCatch("%,.4e", FormatFlagsConversionMismatchException.class, one);
-
-        //---------------------------------------------------------------------
-        // %e
-        //
-        // Floating-point conversions applicable to float, double, and
-        // BigDecimal.
-        //---------------------------------------------------------------------
-        test("%e", "null", (Object)null);
-
-        //---------------------------------------------------------------------
-        // %e - float and double
-        //---------------------------------------------------------------------
-        // double PI = 3.141 592 653 589 793 238 46;
-        test("%e", "3.141593e+00", pi);
-        test("%.0e", "1e+01", ten);
-        test("%#.0e", "1.e+01", ten);
-        test("%E", "3.141593E+00", pi);
-        test("%10.3e", " 3.142e+00", pi);
-        test("%10.3e", "-3.142e+00", negate(pi));
-        test("%010.3e", "03.142e+00", pi);
-        test("%010.3e", "-3.142e+00", negate(pi));
-        test("%-12.3e", "3.142e+00   ", pi);
-        test("%-12.3e", "-3.142e+00  ", negate(pi));
-        test("%.3e", "3.142e+00", pi);
-        test("%.3e", "-3.142e+00", negate(pi));
-        test("%.3e", "3.142e+06", mult(pi, 1000000.0));
-        test("%.3e", "-3.142e+06", mult(pi, -1000000.0));
-
-        test(Locale.FRANCE, "%e", "3,141593e+00", pi);
-
-        // double PI^300
-        //    = 13962455701329742638131355433930076081862072808 ... e+149
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        test("%10.3e", " 1.000e+00", one);
-        test("%+.3e", "+3.142e+00", pi);
-        test("%+.3e", "-3.142e+00", negate(pi));
-        test("% .3e", " 3.142e+00", pi);
-        test("% .3e", "-3.142e+00", negate(pi));
-        test("%#.0e", "3.e+00", create(3.0));
-        test("%#.0e", "-3.e+00", create(-3.0));
-        test("%.0e", "3e+00", create(3.0));
-        test("%.0e", "-3e+00", create(-3.0));
-
-        test("%(.4e", "3.1416e+06", mult(pi, 1000000.0));
-        test("%(.4e", "(3.1416e+06)", mult(pi, -1000000.0));
+        test("%(.4e", "3.1416e+06", mult(pi, 1000000.0));
+        test("%(.4e", "(3.1416e+06)", mult(pi, -1000000.0));
 
         //---------------------------------------------------------------------
         // %e - boundary problems
         //---------------------------------------------------------------------
         test("%3.0e", "1e-06", 0.000001);

@@ -1037,85 +471,18 @@
         test("%3.0f", "10000",     10000.00);
         test("%3.0f", "100000",    100000.00);
         test("%3.0f", "1000000",   1000000.00);
         test("%3.0f", "10000000",  10000000.00);
         test("%3.0f", "100000000", 100000000.00);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+        test("%10.0f", "   1000000",   1000000.00);
+        test("%,10.0f", " 1,000,000",   1000000.00);
+        test("%,10.1f", "1,000,000.0",   1000000.00);
+        test("%,3.0f", "1,000,000",   1000000.00);
+        test("%,3.0f", "10,000,000",  10000000.00);
+        test("%,3.0f", "100,000,000", 100000000.00);
+        test("%,3.0f", "10,000,000",  10000000.00);
+        test("%,3.0f", "100,000,000", 100000000.00);
 
         //---------------------------------------------------------------------
         // %f - float
         //---------------------------------------------------------------------
         // Float can not accurately store 1e6 * PI.

@@ -1128,28 +495,10 @@
         test("%(.2f", "3141.59", mult(pi, 1000.0));
         test("%(.2f", "(3141.59)", mult(pi, -1000.0));
         test("%(,.2f", "3,141.59", mult(pi, 1000.0));
         test("%(,.2f", "(3,141.59)", mult(pi, -1000.0));
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
         //---------------------------------------------------------------------
         // %g
         //
         // Floating-point conversions applicable to float, double, and
         // BigDecimal.

@@ -1200,77 +549,41 @@
         test("%3.2g", "0.00099", 0.00099);
         test("%3.3g", "0.00100", 0.001);
         test("%3.4g", "0.001000", 0.001);
         test("%3.0g", "0.01", 0.01);
         test("%3.0g", "0.1", 0.1);
-        test("%3.0g", "0.9", 0.9);
-        test("%3.1g", "0.9", 0.9);
-        test("%3.0g", "  1", 1.00);
-        test("%3.2g", " 10", 10.00);
-        test("%3.0g", "1e+01", 10.00);
-        test("%3.0g", "1e+02", 99.19);
-        test("%3.1g", "1e+02", 99.19);
-        test("%3.2g", " 99", 99.19);
-        test("%3.0g", "1e+02", 99.9);
-        test("%3.1g", "1e+02", 99.9);
-        test("%3.2g", "1.0e+02", 99.9);
-        test("%3.0g", "1e+02", 99.99);
-        test("%3.0g", "1e+02", 100.00);
-        test("%3.0g", "1e+03", 999.9);
-        test("%3.1g", "1e+03", 999.9);
-        test("%3.2g", "1.0e+03", 999.9);
-        test("%3.3g", "1.00e+03", 999.9);
-        test("%3.4g", "999.9", 999.9);
-        test("%3.4g", "1000", 999.99);
-        test("%3.0g", "1e+03", 1000.00);
-        test("%3.0g", "1e+04",     10000.00);
-        test("%3.0g", "1e+05",    100000.00);
-        test("%3.0g", "1e+06",   1000000.00);
-        test("%3.0g", "1e+07",  10000000.00);
-        test("%3.9g", "100000000",  100000000.00);
-        test("%3.10g", "100000000.0", 100000000.00);
-
-        tryCatch("%#3.0g", FormatFlagsConversionMismatchException.class, 1000.00);
-
-        // double PI^300
-        //    = 13962455701329742638131355433930076081862072808 ... e+149
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+        test("%3.0g", "0.9", 0.9);
+        test("%3.1g", "0.9", 0.9);
+        test("%3.0g", "  1", 1.00);
+        test("%3.2g", " 10", 10.00);
+        test("%3.0g", "1e+01", 10.00);
+        test("%3.0g", "1e+02", 99.19);
+        test("%3.1g", "1e+02", 99.19);
+        test("%3.2g", " 99", 99.19);
+        test("%3.0g", "1e+02", 99.9);
+        test("%3.1g", "1e+02", 99.9);
+        test("%3.2g", "1.0e+02", 99.9);
+        test("%3.0g", "1e+02", 99.99);
+        test("%3.0g", "1e+02", 100.00);
+        test("%3.0g", "1e+03", 999.9);
+        test("%3.1g", "1e+03", 999.9);
+        test("%3.2g", "1.0e+03", 999.9);
+        test("%3.3g", "1.00e+03", 999.9);
+        test("%3.4g", "999.9", 999.9);
+        test("%3.4g", "1000", 999.99);
+        test("%3.0g", "1e+03", 1000.00);
+        test("%3.0g", "1e+04",     10000.00);
+        test("%3.0g", "1e+05",    100000.00);
+        test("%3.0g", "1e+06",   1000000.00);
+        test("%3.0g", "1e+07",  10000000.00);
+        test("%3.9g", "100000000",  100000000.00);
+        test("%3.10g", "100000000.0", 100000000.00);
 
+        tryCatch("%#3.0g", FormatFlagsConversionMismatchException.class, 1000.00);
 
+        // double PI^300
+        //    = 13962455701329742638131355433930076081862072808 ... e+149
 
         test("%.3g", "10.0", ten);
         test("%.3g", "1.00", one);
         test("%10.3g", "      1.00", one);
         test("%+10.3g", "     +3.14", pi);

@@ -1281,78 +594,14 @@
         test("%.0g", "-3", create(-3.0));
 
         test("%(.4g", "3.142e+08", mult(pi, 100000000.0));
         test("%(.4g", "(3.142e+08)", mult(pi, -100000000.0));
 
-
         // Float can not accurately store 1e6 * PI.
         test("%,.6g", "3,141.59", mult(pi, 1000.0));
         test("%(,.6g", "(3,141.59)", mult(pi, -1000.0));
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
         //---------------------------------------------------------------------
         // %f, %e, %g, %a - Boundaries
         //---------------------------------------------------------------------
 
         //---------------------------------------------------------------------

@@ -1518,79 +767,10 @@
         test("%30.20G", "     3.4028234663852886000E+38", Float.MAX_VALUE);
         test("%a", "0x1.fffffep127", Float.MAX_VALUE);
         test("%A", "0X1.FFFFFEP127", Float.MAX_VALUE);
         test("%20a","      0x1.fffffep127", Float.MAX_VALUE);
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
         //---------------------------------------------------------------------
         // %t
         //
         // Date/Time conversions applicable to Calendar, Date, and long.
         //---------------------------------------------------------------------

@@ -1606,104 +786,10 @@
         tryCatch("%TP", UnknownFormatConversionException.class);
         tryCatch("%.5tB", IllegalFormatPrecisionException.class);
         tryCatch("%#tB", FormatFlagsConversionMismatchException.class);
         tryCatch("%-tB", MissingFormatWidthException.class);
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
         //---------------------------------------------------------------------
         // %n
         //---------------------------------------------------------------------
         test("%n", System.getProperty("line.separator"), (Object)null);
         test("%n", System.getProperty("line.separator"), "");