1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.bcel.verifier;
21
22 import java.io.File;
23 import java.io.FileInputStream;
24
25 import org.apache.bcel.AbstractTest;
26 import org.apache.bcel.classfile.ClassParser;
27 import org.apache.bcel.classfile.JavaClass;
28 import org.apache.bcel.classfile.Method;
29 import org.apache.bcel.generic.ConstantPoolGen;
30 import org.apache.bcel.generic.EmptyVisitor;
31 import org.apache.bcel.generic.Instruction;
32 import org.apache.bcel.generic.LDC;
33 import org.apache.bcel.generic.MethodGen;
34 import org.junit.jupiter.params.ParameterizedTest;
35 import org.junit.jupiter.params.provider.ValueSource;
36
37
38
39
40 class JiraBcel370Test extends AbstractTest {
41 @ParameterizedTest
42 @ValueSource(strings = {
43
44 "target/test-classes/com/puppycrawl/tools/checkstyle/grammar/java/JavaLanguageParser$ClassBlockContext.class",
45 "target/test-classes/com/foo/Foo.class"
46 })
47
48 void testLdcGetType(final String classFileName) throws Exception {
49 try (FileInputStream file = new FileInputStream(classFileName)) {
50 final ClassParser parser = new ClassParser(file, new File(classFileName).getName());
51 final JavaClass clazz = parser.parse();
52
53 final Method[] methods = clazz.getMethods();
54
55 final ConstantPoolGen cp = new ConstantPoolGen(clazz.getConstantPool());
56 final MethodGen methodGen = new MethodGen(methods[0], classFileName, cp);
57
58
59 final Instruction instruction = methodGen.getInstructionList().getInstructions()[0];
60
61 instruction.accept(new EmptyVisitor() {
62 @Override
63 public void visitLDC(final LDC ldc) {
64
65 ldc.getType(cp);
66 }
67 });
68 }
69 }
70
71 @ParameterizedTest
72 @ValueSource(strings = {
73
74 "com.foo.Foo"
75 })
76
77 void testVerify(final String className) throws ClassNotFoundException {
78
79 Verifier.verifyType(className);
80 }
81 }