/*
* Copyright (c) 2006 Rogério Liesenfeld
* This file is subject to the terms of the MIT license (see LICENSE.txt).
*/
package mockit.internal.util;
import java.lang.annotation.*;
import java.lang.reflect.*;
import javax.annotation.*;
public final class TestMethod
{
@Nonnull public final String testClassDesc;
@Nonnull public final String testMethodDesc;
@Nonnull private final Type[] parameterTypes;
@Nonnull private final Class<?>[] parameterClasses;
@Nonnull private final Annotation[][] parameterAnnotations;
@Nonnull private final Object[] parameterValues;
public TestMethod(@Nonnull Method testMethod, @Nonnull Object[] parameterValues)
{
testClassDesc = mockit.external.asm.Type.getInternalName(testMethod.getDeclaringClass());
testMethodDesc = testMethod.getName() + mockit.external.asm.Type.getMethodDescriptor(testMethod);
parameterTypes = testMethod.getGenericParameterTypes();
parameterClasses = testMethod.getParameterTypes();
parameterAnnotations = testMethod.getParameterAnnotations();
this.parameterValues = parameterValues;
}
@Nonnegative public int getParameterCount() { return parameterTypes.length; }
@Nonnull public Type getParameterType(@Nonnegative int index) { return parameterTypes[index]; }
@Nonnull public Class<?> getParameterClass(@Nonnegative int index) { return parameterClasses[index]; }
@Nonnull public Annotation[] getParameterAnnotations(@Nonnegative int index) { return parameterAnnotations[index]; }
@Nullable public Object getParameterValue(@Nonnegative int index) { return parameterValues[index]; }
public void setParameterValue(@Nonnegative int index, @Nullable Object value) { parameterValues[index] = value; }
}