author | kshefov |
Tue, 12 Jan 2016 17:03:06 +0300 | |
changeset 35629 | 5738b816718a |
child 36511 | 9d0388c6b336 |
permissions | -rw-r--r-- |
35629
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
1 |
/* |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
2 |
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
4 |
* |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
8 |
* |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
13 |
* accompanied this code). |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
14 |
* |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License version |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
18 |
* |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
21 |
* questions. |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
22 |
*/ |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
23 |
|
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
24 |
/* |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
25 |
* @test |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
26 |
* @bug 8141615 |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
27 |
* @summary Tests new public methods at sun.reflect.ConstantPool |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
28 |
* @modules java.base/sun.reflect |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
29 |
* @library /lib/testlibrary |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
30 |
* @compile ConstantPoolTestDummy.jasm |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
31 |
* @run main sun.reflect.constantPool.ConstantPoolTest |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
32 |
*/ |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
33 |
|
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
34 |
package sun.reflect.constantPool; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
35 |
|
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
36 |
import java.util.HashMap; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
37 |
import java.util.Map; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
38 |
import jdk.internal.misc.SharedSecrets; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
39 |
import jdk.testlibrary.Asserts; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
40 |
import sun.reflect.ConstantPool; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
41 |
|
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
42 |
public class ConstantPoolTest { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
43 |
|
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
44 |
private static final Class<?> TEST_CLASS = ConstantPoolTestDummy.class; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
45 |
private static final ConstantPool CP = SharedSecrets.getJavaLangAccess() |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
46 |
.getConstantPool(TEST_CLASS); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
47 |
|
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
48 |
public static void main(String[] s) { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
49 |
for (TestCase testCase : TestCase.values()) { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
50 |
testCase.test(); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
51 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
52 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
53 |
|
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
54 |
public static enum TestCase { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
55 |
GET_TAG_AT { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
56 |
{ |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
57 |
referenceMap.put(1, ConstantPool.Tag.METHODREF); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
58 |
referenceMap.put(2, ConstantPool.Tag.CLASS); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
59 |
referenceMap.put(4, ConstantPool.Tag.UTF8); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
60 |
referenceMap.put(10, ConstantPool.Tag.NAMEANDTYPE); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
61 |
referenceMap.put(13, ConstantPool.Tag.LONG); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
62 |
referenceMap.put(15, ConstantPool.Tag.INTEGER); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
63 |
referenceMap.put(16, ConstantPool.Tag.INTERFACEMETHODREF); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
64 |
referenceMap.put(21, ConstantPool.Tag.DOUBLE); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
65 |
referenceMap.put(23, ConstantPool.Tag.STRING); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
66 |
referenceMap.put(25, ConstantPool.Tag.INVOKEDYNAMIC); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
67 |
referenceMap.put(29, ConstantPool.Tag.METHODHANDLE); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
68 |
referenceMap.put(30, ConstantPool.Tag.METHODTYPE); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
69 |
referenceMap.put(48, ConstantPool.Tag.FIELDREF); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
70 |
referenceMap.put(52, ConstantPool.Tag.FLOAT); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
71 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
72 |
@Override |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
73 |
void testIndex(int cpi, Object reference) { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
74 |
ConstantPool.Tag tagToVerify = CP.getTagAt(cpi); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
75 |
ConstantPool.Tag tagToRefer = (ConstantPool.Tag) reference; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
76 |
String msg = String.format("Method getTagAt works not as expected" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
77 |
+ "at CP entry #%d: got CP tag %s, but should be %s", |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
78 |
cpi, tagToVerify.name(), tagToRefer.name()); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
79 |
Asserts.assertEquals(tagToVerify, tagToRefer, msg); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
80 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
81 |
}, |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
82 |
GET_CLASS_REF_INDEX_AT { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
83 |
{ |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
84 |
referenceMap.put(1, 3); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
85 |
referenceMap.put(16, 17); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
86 |
referenceMap.put(32, 35); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
87 |
referenceMap.put(34, 3); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
88 |
referenceMap.put(48, 2); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
89 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
90 |
@Override |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
91 |
void testIndex(int cpi, Object reference) { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
92 |
int indexToVerify = CP.getClassRefIndexAt(cpi); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
93 |
int indexToRefer = (int) reference; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
94 |
String msg = String.format("Method getClassRefIndexAt works not" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
95 |
+ " as expected at CP entry #%d:" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
96 |
+ " got index %d, but should be %d", |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
97 |
cpi, indexToVerify, indexToRefer); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
98 |
Asserts.assertEquals(indexToVerify, indexToRefer, msg); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
99 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
100 |
}, |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
101 |
GET_NAME_AND_TYPE_REF_INDEX_AT { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
102 |
{ |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
103 |
referenceMap.put(1, 10); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
104 |
referenceMap.put(16, 18); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
105 |
referenceMap.put(25, 26); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
106 |
referenceMap.put(32, 36); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
107 |
referenceMap.put(34, 37); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
108 |
referenceMap.put(48, 49); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
109 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
110 |
@Override |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
111 |
void testIndex(int cpi, Object reference) { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
112 |
int indexToRefer = (int) reference; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
113 |
int indexToVerify = CP.getNameAndTypeRefIndexAt(cpi); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
114 |
String msg = String.format("Method getNameAndTypeRefIndexAt works" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
115 |
+ " not as expected at CP entry #%d:" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
116 |
+ " got index %d, but should be %d", |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
117 |
cpi, indexToVerify, indexToRefer); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
118 |
Asserts.assertEquals(indexToVerify, indexToRefer, msg); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
119 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
120 |
}, |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
121 |
GET_NAME_AND_TYPE_REF_INFO_AT { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
122 |
{ |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
123 |
referenceMap.put(10, new String[]{"<init>", "()V"}); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
124 |
referenceMap.put(18, new String[]{"run", "()V"}); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
125 |
referenceMap.put(26, new String[]{"accept", "()Ljava/util/function/Consumer;"}); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
126 |
referenceMap.put(36, new String[]{"metafactory", |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
127 |
"(Ljava/lang/invoke/MethodHandles$Lookup;" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
128 |
+ "Ljava/lang/String;Ljava/lang/invoke/MethodType;" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
129 |
+ "Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
130 |
+ "Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"}); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
131 |
referenceMap.put(37, new String[]{"toString", "()Ljava/lang/String;"}); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
132 |
referenceMap.put(49, new String[]{"myField", "I"}); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
133 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
134 |
@Override |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
135 |
void testIndex(int cpi, Object reference) { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
136 |
String[] natInfo = CP.getNameAndTypeRefInfoAt(cpi); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
137 |
String msg = String.format("Method getNameAndTypeRefInfoAt" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
138 |
+ " works not as expected at CP entry #%d:" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
139 |
+ " returned value should not be null", cpi); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
140 |
Asserts.assertNotNull(natInfo, msg); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
141 |
String[] castedReference = (String[]) reference; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
142 |
int natInfoLength = natInfo.length; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
143 |
msg = String.format("Method getNameAndTypeRefInfoAt" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
144 |
+ " works not as expected at CP entry #%d:" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
145 |
+ " length of the returned string array is %d, but should be 2", |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
146 |
cpi, natInfoLength); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
147 |
Asserts.assertEquals(natInfoLength, 2, msg); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
148 |
String[] nameOrType = new String[]{"name", "type"}; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
149 |
for (int i = 0; i < 2; i++) { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
150 |
String infoToVerify = natInfo[i]; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
151 |
String infoToRefer = castedReference[i]; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
152 |
msg = String.format("Method getNameAndTypeRefInfoAt" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
153 |
+ " works not as expected at CP entry #%d:" |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
154 |
+ " got %s info %s, but should be %s", |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
155 |
cpi, nameOrType[i], infoToVerify, infoToRefer); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
156 |
Asserts.assertEquals(infoToVerify, infoToRefer, msg); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
157 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
158 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
159 |
}; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
160 |
|
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
161 |
protected final Map<Integer, Object> referenceMap; |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
162 |
TestCase() { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
163 |
this.referenceMap = new HashMap<>(); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
164 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
165 |
abstract void testIndex(int cpi, Object reference); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
166 |
public void test() { |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
167 |
referenceMap.forEach(this::testIndex); |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
168 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
169 |
} |
5738b816718a
8141615: Add new public methods to sun.reflect.ConstantPool
kshefov
parents:
diff
changeset
|
170 |
} |