1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.bcel.verifier;
19
20 import java.io.IOException;
21
22 import org.apache.bcel.verifier.tests.TestArrayAccess02Creator;
23 import org.apache.bcel.verifier.tests.TestArrayAccess03Creator;
24 import org.apache.bcel.verifier.tests.TestArrayAccess04DoubleCreator;
25 import org.apache.bcel.verifier.tests.TestArrayAccess04FloatCreator;
26 import org.apache.bcel.verifier.tests.TestArrayAccess04IntCreator;
27 import org.apache.bcel.verifier.tests.TestArrayAccess04LongCreator;
28 import org.apache.bcel.verifier.tests.TestArrayAccess04ShortCreator;
29 import org.apache.bcel.verifier.tests.TestArrayAccess04UnknownCreator;
30 import org.junit.jupiter.api.Assertions;
31 import org.junit.jupiter.api.Test;
32
33 public class VerifierArrayAccessTestCase extends AbstractVerifierTestCase {
34
35 @Test
36 public void testInvalidArrayAccess() throws IOException, ClassNotFoundException {
37 new TestArrayAccess03Creator().create();
38 assertVerifyRejected("TestArrayAccess03", "Verification of an arraystore instruction on an object must fail.");
39 new TestArrayAccess04IntCreator().create();
40 assertVerifyRejected("TestArrayAccess04Int", "Verification of an arraystore instruction of an int on an array of references must fail.");
41 new TestArrayAccess04FloatCreator().create();
42 assertVerifyRejected("TestArrayAccess04Float", "Verification of an arraystore instruction of a float on an array of references must fail.");
43 new TestArrayAccess04DoubleCreator().create();
44 assertVerifyRejected("TestArrayAccess04Double", "Verification of an arraystore instruction of a double on an array of references must fail.");
45 new TestArrayAccess04LongCreator().create();
46 assertVerifyRejected("TestArrayAccess04Long", "Verification of an arraystore instruction of a long on an array of references must fail.");
47 new TestArrayAccess04ShortCreator().create();
48 assertVerifyRejected("TestArrayAccess04Short", "Verification of an arraystore instruction of a short on an array of references must fail.");
49 final TestArrayAccess04UnknownCreator testArrayAccess04UnknownCreator = new TestArrayAccess04UnknownCreator();
50 Assertions.assertThrowsExactly(IllegalArgumentException.class, testArrayAccess04UnknownCreator::create, "Invalid type <unknown object>");
51 }
52
53 @Test
54 public void testValidArrayAccess() throws IOException, ClassNotFoundException {
55 assertVerifyOK("TestArrayAccess01", "Verification of an arraystore instruction on an array that is not compatible with the stored element must pass.");
56 new TestArrayAccess02Creator().create();
57 assertVerifyOK("TestArrayAccess02", "Verification of an arraystore instruction on an array that is not compatible with the stored element must pass.");
58 }
59
60 }