author | ssides |
Wed, 09 Jul 2014 15:14:06 +0400 | |
changeset 25760 | 7955db32d6b0 |
parent 18649 | 8cfa05227758 |
permissions | -rw-r--r-- |
3895 | 1 |
/* |
18649
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
2 |
* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. |
3895 | 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 |
* |
|
5520 | 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. |
|
3895 | 22 |
*/ |
23 |
||
24 |
/* |
|
25 |
* @test |
|
26 |
* @bug 6860973 |
|
27 |
* @summary Project Coin: Underscores in literals |
|
28 |
*/ |
|
29 |
||
30 |
||
31 |
public class UnderscoreLiterals { |
|
32 |
public static void main(String... args) throws Exception { |
|
33 |
new UnderscoreLiterals().run(); |
|
34 |
} |
|
35 |
||
36 |
public void run() throws Exception { |
|
37 |
// decimal |
|
38 |
test(1, 1); |
|
39 |
test(10, 10); |
|
40 |
test(1_0, 10); |
|
41 |
test(1__0, 10); |
|
42 |
test(1_0_0, 100); |
|
43 |
test(1__0__0, 100); |
|
44 |
test(123_456_789, 123456789); |
|
18649
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
45 |
test(2_147_483_647, Integer.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
46 |
test(-2_147_483_648, Integer.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
47 |
test(32_767, Short.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
48 |
test(-32_768, Short.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
49 |
test(1_2_7, Byte.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
50 |
test(-1_2_8, Byte.MIN_VALUE); |
3895 | 51 |
|
52 |
// long |
|
53 |
test(1l, 1l); |
|
54 |
test(10l, 10l); |
|
55 |
test(1_0l, 10l); |
|
56 |
test(1__0l, 10l); |
|
57 |
test(1_0_0l, 100l); |
|
58 |
test(1__0__0l, 100l); |
|
59 |
test(123_456_789l, 123456789l); |
|
18649
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
60 |
test(9_223_372_036_854_775_807l, Long.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
61 |
test(-9_223_372_036_854_775_808l, Long.MIN_VALUE); |
3895 | 62 |
|
63 |
// float |
|
64 |
test(.1f, .1f); |
|
65 |
test(.10f, .10f); |
|
66 |
test(.1_0f, .10f); |
|
67 |
test(.1__0f, .10f); |
|
68 |
test(.1_0_0f, .100f); |
|
69 |
test(.1__0__0f, .100f); |
|
70 |
test(1e1, 1e1); |
|
71 |
test(1e10, 1e10); |
|
72 |
test(1e1_0, 1e10); |
|
73 |
test(1e1__0, 1e10); |
|
74 |
test(1e1_0_0, 1e100); |
|
75 |
test(1e1__0__0, 1e100); |
|
76 |
test(.123_456_789f, .123456789f); |
|
77 |
test(0.1f, 0.1f); |
|
78 |
test(0.10f, 0.10f); |
|
79 |
test(0.1_0f, 0.10f); |
|
80 |
test(0.1__0f, 0.10f); |
|
81 |
test(0.1_0_0f, 0.100f); |
|
82 |
test(0.1__0__0f, 0.100f); |
|
83 |
test(0.123_456_789f, 0.123456789f); |
|
84 |
test(1_1.1f, 1_1.1f); |
|
85 |
test(1_1.10f, 1_1.10f); |
|
86 |
test(1_1.1_0f, 1_1.10f); |
|
87 |
test(1_1.1__0f, 1_1.10f); |
|
88 |
test(1_1.1_0_0f, 1_1.100f); |
|
89 |
test(1_1.1__0__0f, 1_1.100f); |
|
90 |
test(1_1.123_456_789f, 1_1.123456789f); |
|
18649
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
91 |
test(3.4_028_235E38f, Float.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
92 |
test(1.4E-4_5f, Float.MIN_VALUE); |
3895 | 93 |
|
94 |
// double |
|
95 |
test(.1d, .1d); |
|
96 |
test(.10d, .10d); |
|
97 |
test(.1_0d, .10d); |
|
98 |
test(.1__0d, .10d); |
|
99 |
test(.1_0_0d, .100d); |
|
100 |
test(.1__0__0d, .100d); |
|
101 |
test(1e1, 1e1); |
|
102 |
test(1e10, 1e10); |
|
103 |
test(1e1_0, 1e10); |
|
104 |
test(1e1__0, 1e10); |
|
105 |
test(1e1_0_0, 1e100); |
|
106 |
test(1e1__0__0, 1e100); |
|
107 |
test(.123_456_789d, .123456789d); |
|
108 |
test(0.1d, 0.1d); |
|
109 |
test(0.10d, 0.10d); |
|
110 |
test(0.1_0d, 0.10d); |
|
111 |
test(0.1__0d, 0.10d); |
|
112 |
test(0.1_0_0d, 0.100d); |
|
113 |
test(0.1__0__0d, 0.100d); |
|
114 |
test(0.123_456_789d, 0.123456789d); |
|
115 |
test(1_1.1d, 1_1.1d); |
|
116 |
test(1_1.10d, 1_1.10d); |
|
117 |
test(1_1.1_0d, 1_1.10d); |
|
118 |
test(1_1.1__0d, 1_1.10d); |
|
119 |
test(1_1.1_0_0d, 1_1.100d); |
|
120 |
test(1_1.1__0__0d, 1_1.100d); |
|
121 |
test(1_1.123_456_789d, 1_1.123456789d); |
|
18649
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
122 |
test(1.797_6_9_3_1_348_623_157E3_08, Double.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
123 |
test(4.9E-3_24, Double.MIN_VALUE); |
3895 | 124 |
|
125 |
// binary |
|
126 |
test(0b1, 1); |
|
127 |
test(0b10, 2); |
|
128 |
test(0b1_0, 2); |
|
129 |
test(0b1__0, 2); |
|
130 |
test(0b1_0_0, 4); |
|
131 |
test(0b1__0__0, 4); |
|
132 |
test(0b0001_0010_0011, 0x123); |
|
18649
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
133 |
test(0b111_1111_1111_1111_1111_1111_1111_1111, Integer.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
134 |
test(0b1000_0000_0000_0000_0000_0000_0000_0000, Integer.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
135 |
test(0b111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111l, Long.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
136 |
test(0b1000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000l, Long.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
137 |
test(0b111_1111_1111_1111, Short.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
138 |
test((short)-0b1000_0000_0000_0000, Short.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
139 |
test(0b111_1111, Byte.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
140 |
test((byte)-0b1000_0000, Byte.MIN_VALUE); |
3895 | 141 |
|
142 |
// octal |
|
143 |
test(01, 1); |
|
144 |
test(010, 8); |
|
145 |
test(01_0, 8); |
|
146 |
test(01__0, 8); |
|
147 |
test(01_0_0, 64); |
|
148 |
test(01__0__0, 64); |
|
149 |
test(0_1, 1); |
|
150 |
test(0_10, 8); |
|
151 |
test(0_1_0, 8); |
|
152 |
test(0_1__0, 8); |
|
153 |
test(0_1_0_0, 64); |
|
154 |
test(0_1__0__0, 64); |
|
155 |
test(0_001_002_003, 01002003); |
|
18649
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
156 |
test(0177_7777_7777, Integer.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
157 |
test(-0200_0000_0000, Integer.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
158 |
test(077_77_77_77_77_7_77_77_77_77_77l, Long.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
159 |
test(-010_00_00_00_00_00_00_00_00_00_00l, Long.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
160 |
test((short)07_77_77, Short.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
161 |
test((short)-010_00_00, Short.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
162 |
test(01_77, Byte.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
163 |
test((byte)-02_00, Byte.MIN_VALUE); |
3895 | 164 |
|
165 |
// hexadecimal |
|
166 |
test(0x1, 1); |
|
167 |
test(0x10, 16); |
|
168 |
test(0x1_0, 16); |
|
169 |
test(0x1__0, 16); |
|
170 |
test(0x1_0_0, 256); |
|
171 |
test(0x1__0__0, 256); |
|
172 |
test(0x01_02_03_04, 0x1020304); |
|
18649
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
173 |
test(0x7f_ff_ff_ff, Integer.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
174 |
test(0x80_00_00_00, Integer.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
175 |
test(0x1.f_ff_ffep127f, Float.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
176 |
test(0x0.00_00_02p-126f, Float.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
177 |
test(0x1.f__ff_ff_ff_ff_ff_ffp1_023, Double.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
178 |
test(0x0.000_000_000_000_1p-1_022, Double.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
179 |
test(0x7f_ff_ff_ff_ff_ff_ff_ffl, Long.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
180 |
test(0x80_00_00_00_00_00_00_00l, Long.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
181 |
test(0x7f_ff, Short.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
182 |
test((short)0x80_00, Short.MIN_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
183 |
test(0x7_f, Byte.MAX_VALUE); |
8cfa05227758
8014137: Update test/tools/javac/literals/UnderscoreLiterals to add testcases with min/max values
jjg
parents:
5520
diff
changeset
|
184 |
test((byte)0x8_0, Byte.MIN_VALUE); |
3895 | 185 |
|
186 |
// misc |
|
187 |
long creditCardNumber = 1234_5678_9012_3456L; |
|
188 |
test(creditCardNumber, 1234567890123456L); |
|
189 |
long socialSecurityNumbers = 999_99_9999L; |
|
190 |
test(socialSecurityNumbers, 999999999L); |
|
191 |
double monetaryAmount = 12_345_132.12d; |
|
192 |
test(monetaryAmount, 12345132.12d); |
|
193 |
long hexBytes = 0xFF_EC_DE_5E; |
|
194 |
test(hexBytes, 0xffecde5e); |
|
195 |
long hexWords = 0xFFEC_DE5E; |
|
196 |
test(hexWords, 0xffecde5e); |
|
197 |
long maxLong = 0x7fff_ffff_ffff_ffffL; |
|
198 |
test(maxLong, 0x7fffffffffffffffL); |
|
199 |
long maxLongDecimal = 9223372036854775807L; |
|
200 |
long alsoMaxLong = 9_223_372_036_854_775_807L; |
|
201 |
test(alsoMaxLong, maxLongDecimal); |
|
202 |
double whyWouldYouEverDoThis = 0x1.ffff_ffff_ffff_fp10_23; |
|
203 |
double whyWouldYouEverDoEvenThis = 0x1.fffffffffffffp1023; |
|
204 |
test(whyWouldYouEverDoThis, whyWouldYouEverDoEvenThis); |
|
205 |
||
206 |
if (errors > 0) |
|
207 |
throw new Exception(errors + " errors found"); |
|
208 |
} |
|
209 |
||
210 |
void test(int value, int expect) { |
|
211 |
count++; |
|
212 |
if (value != expect) |
|
213 |
error("test " + count + "\nexpected: 0x" + Integer.toHexString(expect) + "\n found: 0x" + Integer.toHexString(value)); |
|
214 |
} |
|
215 |
||
216 |
void test(double value, double expect) { |
|
217 |
count++; |
|
218 |
if (value != expect) |
|
219 |
error("test " + count + "\nexpected: 0x" + expect + "\n found: 0x" + value); |
|
220 |
} |
|
221 |
||
222 |
void test(long value, long expect) { |
|
223 |
count++; |
|
224 |
if (value != expect) |
|
225 |
error("test " + count + "\nexpected: 0x" + Long.toHexString(expect) + "\n found: 0x" + Long.toHexString(value)); |
|
226 |
} |
|
227 |
||
228 |
void error(String message) { |
|
229 |
System.out.println(message); |
|
230 |
errors++; |
|
231 |
} |
|
232 |
||
233 |
int count; |
|
234 |
int errors; |
|
235 |
} |