1/* 2 * Copyright (c) 2004, 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24/* 25 * @test 26 * @bug 4984872 27 * @summary Basic tests of toPlainString method 28 * @run main ToPlainStringTests 29 * @run main/othervm -XX:+AggressiveOpts ToPlainStringTests 30 * @author Joseph D. Darcy 31 */ 32 33import java.math.*; 34 35public 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 {"9000e-22", "0.0000000000000000009000"}, 67 {"12345678901234567890", "12345678901234567890"}, 68 {"12345678901234567890e22", "123456789012345678900000000000000000000000"}, 69 {"12345678901234567890e-22", "0.0012345678901234567890"}, 70 }; 71 72 int errors = 0; 73 for(String[] testCase: testCases) { 74 BigDecimal bd = new BigDecimal(testCase[0]); 75 String s; 76 77 if (!(s=bd.toPlainString()).equals(testCase[1])) { 78 errors++; 79 System.err.println("Unexpected plain result ``" + 80 s + "'' from BigDecimal " + 81 bd); 82 } 83 bd = new BigDecimal("-"+testCase[0]); 84 if (bd.signum()!=0 && !(s=(bd.toPlainString())).equals("-"+testCase[1])) { 85 errors++; 86 System.err.println("Unexpected plain result ``" + 87 s + "'' from BigDecimal " + 88 bd); 89 } 90 } 91 92 if(errors > 0) 93 throw new RuntimeException(errors + " errors during run."); 94 } 95} 96