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 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
48 public 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 }
|
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 5017980 6576055 8041972
27 * @summary Test parsing methods
28 * @author Joseph D. Darcy
29 */
30
31 import sun.misc.SharedSecrets;
32 import sun.misc.JavaLangAccess;
33
34 /**
35 * There are six methods in java.lang.Integer which transform strings
36 * into an int or Integer value:
37 *
38 * public Integer(String s)
39 * public static Integer decode(String nm)
40 * public static int parseInt(String s, int radix)
41 * public static int parseInt(String s)
42 * public static Integer valueOf(String s, int radix)
43 * public static Integer valueOf(String s)
44 *
45 * Besides decode, all the methods and constructor call down into
46 * parseInt(String, int) to do the actual work. Therefore, the
47 * behavior of parseInt(String, int) will be tested here.
48 *
49 * Internally, parseInt(String, int, int, int) has been added to
50 * support parsing subsequences without explicit substrings. These will also
51 * be tested here
52 */
53
54 public class ParsingTest {
55
56 private static JavaLangAccess jla = SharedSecrets.getJavaLangAccess();
57
58 public static void main(String... argv) {
59 check("+100", +100);
60 check("-100", -100);
61
62 check("+0", 0);
63 check("-0", 0);
64 check("+00000", 0);
65 check("-00000", 0);
66
67 check("+00000", 0, 0, 6);
68 check("-00000", 0, 0, 6);
69
70 check("0", 0);
71 check("1", 1);
72 check("9", 9);
73
74 checkFailure("\u0000");
75 checkFailure("\u002f");
76 checkFailure("+");
77 checkFailure("-");
78 checkFailure("++");
79 checkFailure("+-");
80 checkFailure("-+");
81 checkFailure("--");
82 checkFailure("++100");
83 checkFailure("--100");
84 checkFailure("+-6");
85 checkFailure("-+6");
86 checkFailure("*100");
87
88 check("test-00000", 0, 4, 10);
89 check("test-12345", -12345, 4, 10);
90 check("xx12345yy", 12345, 2, 7);
91
92 checkFailure("+00000", 0, 7);
93 checkFailure("-00000", 0, 7);
94 checkFailure("-00000", 6, 6);
95 checkFailure("-00000", 6, 0);
96 checkFailure("+-6", 0, 3);
97 }
98
99 private static void check(String val, int expected) {
100 int n = Integer.parseInt(val);
101 if (n != expected)
102 throw new RuntimeException("Integer.parseInt failed. String:" +
103 val + " Result:" + n);
104 }
105
106 private static void checkFailure(String val) {
107 int n = 0;
108 try {
109 n = Integer.parseInt(val);
110 System.err.println("parseInt(" + val + ") incorrectly returned " + n);
111 throw new RuntimeException();
112 } catch (NumberFormatException nfe) {
113 ; // Expected
114 }
115 }
116
117 private static void checkFailure(String val, int start, int end) {
118 int n = 0;
119 try {
120 n = jla.parseInt(val, 10, start, end);
121 System.err.println("parseInt(" + val + ") incorrectly returned " + n);
122 throw new RuntimeException();
123 } catch (NumberFormatException nfe) {
124 ; // Expected
125 }
126 }
127
128 private static void check(String val, int expected, int start, int end) {
129 int n = jla.parseInt(val, 10, start, end);
130 if (n != expected)
131 throw new RuntimeException("Integer.parsedInt failed. String:" +
132 val + " Result:" + n);
133 }
134 }
|