This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-bcel.git
The following commit(s) were added to refs/heads/master by this push: new d8c6a228 verifier tests on various opcodes (#180) d8c6a228 is described below commit d8c6a228ea9c76fbc8cbeba04d2ba17bab9634c0 Author: nbauma109 <nbauma...@users.noreply.github.com> AuthorDate: Sat Apr 8 17:49:00 2023 +0200 verifier tests on various opcodes (#180) * verifier tests on various opcodes - fixed typo testCommonsLang1->2 - test of various opcodes * Added javadoc links to opcodes --------- Co-authored-by: nbauma109 <nbauma...@github.com> --- .../org/apache/bcel/verifier/VerifierTestCase.java | 7 +- .../org/apache/bcel/verifier/tests/JvmOpCodes.java | 172 +++++++++++++++++++++ 2 files changed, 178 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java b/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java index 739d0a11..ec04b9ec 100644 --- a/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java +++ b/src/test/java/org/apache/bcel/verifier/VerifierTestCase.java @@ -117,7 +117,7 @@ public class VerifierTestCase { } @Test - public void testCommonsLang1() throws IOException, URISyntaxException, ClassNotFoundException { + public void testCommonsLang2() throws IOException, URISyntaxException, ClassNotFoundException { testJarFile(getJarFile(org.apache.commons.lang.StringUtils.class), "ArrayUtils", "SerializationUtils"); } @@ -126,6 +126,11 @@ public class VerifierTestCase { testNestHostWithJavaVersion("com.ibm.wsdl.DefinitionImpl"); } + @Test + public void testJvmOpCodes() throws ClassNotFoundException { + testDefaultMethodValidation("org.apache.bcel.verifier.tests.JvmOpCodes"); + } + @Test public void testWSDL() throws IOException, URISyntaxException, ClassNotFoundException { testJarFile(getJarFile(javax.wsdl.Port.class), "WSDLReaderImpl", "DefinitionImpl"); diff --git a/src/test/java/org/apache/bcel/verifier/tests/JvmOpCodes.java b/src/test/java/org/apache/bcel/verifier/tests/JvmOpCodes.java new file mode 100644 index 00000000..0653796a --- /dev/null +++ b/src/test/java/org/apache/bcel/verifier/tests/JvmOpCodes.java @@ -0,0 +1,172 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.bcel.verifier.tests; + +import org.apache.bcel.generic.DNEG; +import org.apache.bcel.generic.DREM; +import org.apache.bcel.generic.DUP2; +import org.apache.bcel.generic.DUP2_X1; +import org.apache.bcel.generic.DUP2_X2; +import org.apache.bcel.generic.DUP_X2; +import org.apache.bcel.generic.FADD; +import org.apache.bcel.generic.FNEG; +import org.apache.bcel.generic.FREM; +import org.apache.bcel.generic.FSUB; +import org.apache.bcel.generic.IUSHR; +import org.apache.bcel.generic.LAND; +import org.apache.bcel.generic.LNEG; +import org.apache.bcel.generic.LOR; +import org.apache.bcel.generic.LSHL; +import org.apache.bcel.generic.LUSHR; +import org.apache.bcel.generic.POP; +import org.apache.bcel.generic.POP2; + +/* + * A selection of JVM opcodes, each one in a minimal method. + */ +public class JvmOpCodes { + + long l1, l2; + + /** + * Tests {@link DUP2_X1}. + */ + void dup2x1(String[] s) { + s[0] += "s"; // Form 1 + l2 = l1 = 1; // Form 2 + } + + /** + * Tests {@link DUP2}. + */ + long dup2(long a) { + return a = a + 1; + } + + /** + * Tests {@link DUP2_X2}. + */ + long dup2x2(long[] array, int i, long l) { + return array[i] = l; + } + + /** + * Tests {@link DUP_X2}. + */ + int dupx2(int[] array, int i, int l) { + return array[i] = l; + } + + /** + * Tests {@link LNEG}. + */ + long lneg(long a) { + return -a; + } + + /** + * Tests {@link LOR}. + */ + long lor(long a, long b) { + return a | b; + } + + /** + * Tests {@link LAND}. + */ + long land(long a, long b) { + return a & b; + } + + /** + * Tests {@link LUSHR}. + */ + long lushr(long a, long b) { + return a >>> b; + } + + /** + * Tests {@link IUSHR}. + */ + int iushr(int a, int b) { + return a >>> b; + } + + /** + * Tests {@link LSHL}. + */ + long lshl(long a, long b) { + return a << b; + } + + /** + * Tests {@link FSUB}. + */ + float fsub(float a, float b) { + return a - b; + } + + /** + * Tests {@link FADD}. + */ + float fadd(float a, float b) { + return a + b; + } + + /** + * Tests {@link FREM}. + */ + float frem(float a, float b) { + return a % b; + } + + /** + * Tests {@link FNEG}. + */ + float fneg(float a) { + return -a; + } + + /** + * Tests {@link DREM}. + */ + double drem(double a, double b) { + return a % b; + } + + /** + * Tests {@link DNEG}. + */ + double dneg(double a) { + return -a; + } + + /** + * Tests {@link POP}. + */ + void pop() { + Math.round(0.5f); + } + + /** + * Tests {@link POP2}. + */ + void pop2() { + Math.round(0.5d); + } +}