1 /*
   2  * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  20  * CA 95054 USA or visit www.sun.com if you need additional information or
  21  * have any questions.
  22  */
  23 
  24 /*
  25  * @test
  26  * @bug 4984872
  27  * @summary Basic tests of toPlainString method
  28  * @author Joseph D. Darcy
  29  * @compile -source 1.5 ToPlainStringTests.java
  30  * @run main ToPlainStringTests
  31  */
  32 
  33 import java.math.*;
  34 
  35 public class ToPlainStringTests {
  36     public static void main(String argv[]) {
  37         String [][] testCases = {
  38             {"0",                       "0"},
  39             {"1",                       "1"},
  40             {"10",                      "10"},
  41             {"2e1",                     "20"},
  42             {"3e2",                     "300"},
  43             {"4e3",                     "4000"},
  44             {"5e4",                     "50000"},
  45             {"6e5",                     "600000"},
  46             {"7e6",                     "7000000"},
  47             {"8e7",                     "80000000"},
  48             {"9e8",                     "900000000"},
  49             {"1e9",                     "1000000000"},
  50 
  51             {".0",                      "0.0"},
  52             {".1",                      "0.1"},
  53             {".10",                     "0.10"},
  54             {"1e-1",                    "0.1"},
  55             {"1e-1",                    "0.1"},
  56             {"2e-2",                    "0.02"},
  57             {"3e-3",                    "0.003"},
  58             {"4e-4",                    "0.0004"},
  59             {"5e-5",                    "0.00005"},
  60             {"6e-6",                    "0.000006"},
  61             {"7e-7",                    "0.0000007"},
  62             {"8e-8",                    "0.00000008"},
  63             {"9e-9",                    "0.000000009"},
  64             {"9000e-12",                "0.000000009000"},
  65         };
  66 
  67         int errors = 0;
  68         for(String[] testCase: testCases) {
  69             BigDecimal bd = new BigDecimal(testCase[0]);
  70             String s;
  71 
  72             if (!(s=bd.toPlainString()).equals(testCase[1])) {
  73                 errors++;
  74                 System.err.println("Unexpected plain result ``" +
  75                                    s + "'' from BigDecimal " +
  76                                    bd);
  77             }
  78 
  79             if (!(s=("-"+bd.toPlainString())).equals("-"+testCase[1])) {
  80                 errors++;
  81                 System.err.println("Unexpected plain result ``" +
  82                                    s + "'' from BigDecimal " +
  83                                    bd);
  84             }
  85         }
  86 
  87         if(errors > 0)
  88             throw new RuntimeException(errors + " errors during run.");
  89     }
  90 }