1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.bcel.verifier.structurals;
18
19 import static org.assertj.core.api.Assertions.assertThatCode;
20 import static org.mockito.Mockito.mock;
21 import static org.mockito.Mockito.when;
22
23 import org.apache.bcel.classfile.Constant;
24 import org.apache.bcel.generic.ConstantPoolGen;
25 import org.apache.bcel.generic.LDC;
26 import org.junit.jupiter.api.BeforeEach;
27 import org.junit.jupiter.params.ParameterizedTest;
28 import org.junit.jupiter.params.provider.MethodSource;
29
30 public class InstConstraintVisitorTestCase {
31 private ConstantPoolGen cp;
32
33 @ParameterizedTest
34 @MethodSource("org.apache.bcel.verifier.statics.Pass3aVerifierTestCase#constantsNotSupportedByLdc")
35 public void rejectLdcConstantModule(final Constant constant) {
36 final InstConstraintVisitor visitor = new InstConstraintVisitor();
37
38 cp = mock(ConstantPoolGen.class);
39 when(cp.getConstant(0)).thenReturn(constant);
40
41 visitor.setConstantPoolGen(cp);
42
43 final LDC ldc = new LDC(0);
44
45 assertThatCode(() -> visitor.visitLDC(ldc)).hasMessageStartingWith("Instruction LDC constraint violated: Referenced constant should be a");
46 }
47
48 @BeforeEach
49 public void setup() {
50 cp = mock(ConstantPoolGen.class);
51 }
52 }