/* * The contents of this file is dual-licensed under 2 * alternative Open Source/Free licenses: LGPL 2.1 or later and * Apache License 2.0. (starting with JNA version 4.0.0). * * You can freely decide which license you want to apply to * the project. * * You may obtain a copy of the LGPL License at: * * http://www.gnu.org/licenses/licenses.html * * A copy is also included in the downloadable source code package * containing JNA, in file "LGPL2.1". * * You may obtain a copy of the Apache License at: * * http://www.apache.org/licenses/ * * A copy is also included in the downloadable source code package * containing JNA, in file "AL2.0". */ package com.sun.jna; import java.lang.reflect.Method; import junit.framework.TestCase; public class VarArgsCheckerTest extends TestCase { public void testCreation() throws Exception { final VarArgsChecker checker = VarArgsChecker.create(); assertNotNull(checker); } public void testNoVarArgs() throws Exception { final VarArgsChecker checker = VarArgsChecker.create(); final Method method = VarArgsCheckerTest.class.getMethod("testNoVarArgs", new Class[0]); final boolean res = checker.isVarArgs(method); // no matter if JVM 1.4 or 1.5+, the result should always be false assertFalse("Method should not be detected as varargs", res); assertEquals("Non-varargs should return fixed args of zero", 0, checker.fixedArgs(method)); } public void testVarArgsExist() throws Exception { final VarArgsChecker checker = VarArgsChecker.create(); final Method method = VarArgsCheckerTest.class.getMethod("methodWithVarArgs", new Class[]{String[].class}); final boolean res = checker.isVarArgs(method); // this test has to run with Java 1.5+, because this has a method with // varargs. So the result has to be true. assertTrue("Method should be detected as varargs", res); } public void testFixedArgsOne() throws Exception { final VarArgsChecker checker = VarArgsChecker.create(); final Method method = VarArgsCheckerTest.class.getMethod("methodWithOneFixedArg", new Class[]{String.class, Object[].class}); final int res = checker.fixedArgs(method); // this test has to run with Java 1.5+, because this has a method with // varargs. So the result has to be true. assertEquals("Wrong number of fixed args", 1, res); } public void testFixedArgsTwo() throws Exception { final VarArgsChecker checker = VarArgsChecker.create(); final Method method = VarArgsCheckerTest.class.getMethod("methodWithTwoFixedArgs", new Class[]{String.class, String.class, Object[].class}); final int res = checker.fixedArgs(method); // this test has to run with Java 1.5+, because this has a method with // varargs. So the result has to be true. assertEquals("Wrong number of fixed args", 2, res); } public void methodWithVarArgs(String... args) { // nothing to do } public void methodWithOneFixedArg(String fmt, Object... args) { // nothing to do } public void methodWithTwoFixedArgs(String fmt, String fmt2, Object... args) { // nothing to do } public static void main(String[] args) { junit.textui.TestRunner.run(VarArgsCheckerTest.class); } }