blob: 699ae05d4bad3f3210cc4c1db32da3b4543b676f [file] [log] [blame]
darcy32db4492009-01-26 19:49:26 -08001/*
ohair2283b9d2010-05-25 15:58:33 -07002 * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
darcy32db4492009-01-26 19:49:26 -08003 * 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 *
ohair2283b9d2010-05-25 15:58:33 -070019 * 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.
darcy32db4492009-01-26 19:49:26 -080022 */
23
24/*
25 * @test
26 * @bug 5017980 6576055
27 * @summary Test parsing methods
28 * @author Joseph D. Darcy
29 */
30
31
32/**
33 * There are six methods in java.lang.Integer which transform strings
34 * into an int or Integer value:
35 *
36 * public Integer(String s)
37 * public static Integer decode(String nm)
38 * public static int parseInt(String s, int radix)
39 * public static int parseInt(String s)
40 * public static Integer valueOf(String s, int radix)
41 * public static Integer valueOf(String s)
42 *
43 * Besides decode, all the methods and constructor call down into
44 * parseInt(String, int) to do the actual work. Therefore, the
45 * behavior of parseInt(String, int) will be tested here.
46 */
47
48public class ParsingTest {
49 public static void main(String... argv) {
50 check("+100", +100);
51 check("-100", -100);
52
53 check("+0", 0);
54 check("-0", 0);
55 check("+00000", 0);
56 check("-00000", 0);
57
58 check("0", 0);
59 check("1", 1);
60 check("9", 9);
61
62 checkFailure("\u0000");
63 checkFailure("\u002f");
64 checkFailure("+");
65 checkFailure("-");
66 checkFailure("++");
67 checkFailure("+-");
68 checkFailure("-+");
69 checkFailure("--");
70 checkFailure("++100");
71 checkFailure("--100");
72 checkFailure("+-6");
73 checkFailure("-+6");
74 checkFailure("*100");
75 }
76
77 private static void check(String val, int expected) {
78 int n = Integer.parseInt(val);
79 if (n != expected)
80 throw new RuntimeException("Integer.parsedInt failed. String:" +
81 val + " Result:" + n);
82 }
83
84 private static void checkFailure(String val) {
85 int n = 0;
86 try {
87 n = Integer.parseInt(val);
88 System.err.println("parseInt(" + val + ") incorrectly returned " + n);
89 throw new RuntimeException();
90 } catch (NumberFormatException nfe) {
91 ; // Expected
92 }
93 }
94}