|
25 | 25 | * @test |
26 | 26 | * @summary Test behavior of isJavaIdentifierXX, testIsJavaLetter, and |
27 | 27 | * testIsJavaLetterOrDigit methods for all code points. |
28 | | - * @bug 8218915 |
| 28 | + * @bug 8218915 8301400 8305681 |
29 | 29 | */ |
30 | 30 |
|
31 | 31 | public class TestIsJavaIdentifierMethods { |
32 | 32 | // Unassigned code points not present in Unicode 6.2 (which Java SE 8 |
33 | 33 | // is based upon), including: various currency symbol sign code points |
34 | | - // (Nordic Mark ... Bitcoin), Japanese Era Square character code point, |
35 | | - // and 35 CJK Unified Ideograph code points from GB18030-2022 |
| 34 | + // (Nordic Mark ... Bitcoin), the Japanese Era Square character code point, and |
| 35 | + // code points for GB1030-2022 level 1 and 2 implementation including |
| 36 | + // (35 code points from CJK Unified Ideographs and all of CJK Unified Ideographs |
| 37 | + // Extension E). |
36 | 38 | private static final int CS_SIGNS_CODEPOINT_START = 0x20BB; |
37 | 39 | private static final int CS_SIGNS_CODEPOINT_END = 0x20BF; |
38 | 40 | private static final int JAPANESE_ERA_CODEPOINT = 0x32FF; |
39 | | - private static final int GB18030_2022_CODEPOINT_START = 0x9FCD; |
40 | | - private static final int GB18030_2022_CODEPOINT_END = 0x9FEF; |
| 41 | + // GB18030_2022 Code Points |
| 42 | + private static final int CJK_GB18030_LEVEL1_START = 0x9FCD; |
| 43 | + private static final int CJK_GB18030_LEVEL1_END = 0x9FEF; |
| 44 | + // Extension E code points are greater than U+FFFF, |
| 45 | + // and thus only the int methods need to be tested |
| 46 | + private static final int CJK_EXTENSION_E_START = 0x2B820; |
| 47 | + private static final int CJK_EXTENSION_E_END = 0x2CEAF; |
41 | 48 |
|
42 | 49 | public static void main(String[] args) { |
43 | 50 | testIsJavaIdentifierPart_int(); |
@@ -77,7 +84,8 @@ public static void testIsJavaIdentifierPart_int() { |
77 | 84 | // value of variable "expected" is considered false. |
78 | 85 | if (cp != JAPANESE_ERA_CODEPOINT && |
79 | 86 | !(cp >= CS_SIGNS_CODEPOINT_START && cp <= CS_SIGNS_CODEPOINT_END) && |
80 | | - !(cp >= GB18030_2022_CODEPOINT_START && cp <= GB18030_2022_CODEPOINT_END)) { |
| 87 | + !(cp >= CJK_GB18030_LEVEL1_START && cp <= CJK_GB18030_LEVEL1_END) && |
| 88 | + !(cp >= CJK_EXTENSION_E_START && cp <= CJK_EXTENSION_E_END)) { |
81 | 89 | byte type = (byte) Character.getType(cp); |
82 | 90 | expected = Character.isLetter(cp) |
83 | 91 | || type == Character.CURRENCY_SYMBOL |
@@ -125,7 +133,7 @@ public static void testIsJavaIdentifierPart_char() { |
125 | 133 | // value of variable "expected" is considered false. |
126 | 134 | if (i != JAPANESE_ERA_CODEPOINT && |
127 | 135 | !(i >= CS_SIGNS_CODEPOINT_START && i <= CS_SIGNS_CODEPOINT_END) && |
128 | | - !(i >= GB18030_2022_CODEPOINT_START && i <= GB18030_2022_CODEPOINT_END)) { |
| 136 | + !(i >= CJK_GB18030_LEVEL1_START && i <= CJK_GB18030_LEVEL1_END)) { |
129 | 137 | byte type = (byte) Character.getType(ch); |
130 | 138 | expected = Character.isLetter(ch) |
131 | 139 | || type == Character.CURRENCY_SYMBOL |
@@ -168,7 +176,8 @@ public static void testIsJavaIdentifierStart_int() { |
168 | 176 | // value of variable "expected" is considered false. |
169 | 177 | if (cp != JAPANESE_ERA_CODEPOINT && |
170 | 178 | !(cp >= CS_SIGNS_CODEPOINT_START && cp <= CS_SIGNS_CODEPOINT_END) && |
171 | | - !(cp >= GB18030_2022_CODEPOINT_START && cp <= GB18030_2022_CODEPOINT_END)) { |
| 179 | + !(cp >= CJK_GB18030_LEVEL1_START && cp <= CJK_GB18030_LEVEL1_END) && |
| 180 | + !(cp >= CJK_EXTENSION_E_START && cp <= CJK_EXTENSION_E_END)) { |
172 | 181 | byte type = (byte) Character.getType(cp); |
173 | 182 | expected = Character.isLetter(cp) |
174 | 183 | || type == Character.LETTER_NUMBER |
@@ -208,7 +217,7 @@ public static void testIsJavaIdentifierStart_char() { |
208 | 217 | // value of variable "expected" is considered false. |
209 | 218 | if (i != JAPANESE_ERA_CODEPOINT && |
210 | 219 | !(i >= CS_SIGNS_CODEPOINT_START && i <= CS_SIGNS_CODEPOINT_END) && |
211 | | - !(i >= GB18030_2022_CODEPOINT_START && i <= GB18030_2022_CODEPOINT_END)) { |
| 220 | + !(i >= CJK_GB18030_LEVEL1_START && i <= CJK_GB18030_LEVEL1_END)) { |
212 | 221 | byte type = (byte) Character.getType(ch); |
213 | 222 | expected = Character.isLetter(ch) |
214 | 223 | || type == Character.LETTER_NUMBER |
@@ -248,7 +257,7 @@ public static void testIsJavaLetter() { |
248 | 257 | // value of variable "expected" is considered false. |
249 | 258 | if (i != JAPANESE_ERA_CODEPOINT && |
250 | 259 | !(i >= CS_SIGNS_CODEPOINT_START && i <= CS_SIGNS_CODEPOINT_END) && |
251 | | - !(i >= GB18030_2022_CODEPOINT_START && i <= GB18030_2022_CODEPOINT_END)) { |
| 260 | + !(i >= CJK_GB18030_LEVEL1_START && i <= CJK_GB18030_LEVEL1_END)) { |
252 | 261 | byte type = (byte) Character.getType(ch); |
253 | 262 | expected = Character.isLetter(ch) |
254 | 263 | || type == Character.LETTER_NUMBER |
@@ -292,7 +301,7 @@ public static void testIsJavaLetterOrDigit() { |
292 | 301 | // value of variable "expected" is considered false. |
293 | 302 | if (i != JAPANESE_ERA_CODEPOINT && |
294 | 303 | !(i >= CS_SIGNS_CODEPOINT_START && i <= CS_SIGNS_CODEPOINT_END) && |
295 | | - !(i >= GB18030_2022_CODEPOINT_START && i <= GB18030_2022_CODEPOINT_END)) { |
| 304 | + !(i >= CJK_GB18030_LEVEL1_START && i <= CJK_GB18030_LEVEL1_END)) { |
296 | 305 | byte type = (byte) Character.getType(ch); |
297 | 306 | expected = Character.isLetter(ch) |
298 | 307 | || type == Character.CURRENCY_SYMBOL |
|
0 commit comments