1
2
3
4
5 package mockit.internal.util;
6
7 import edu.umd.cs.findbugs.annotations.NonNull;
8 import edu.umd.cs.findbugs.annotations.Nullable;
9
10 import java.lang.annotation.Annotation;
11 import java.lang.reflect.Method;
12 import java.lang.reflect.Type;
13
14 import mockit.asm.types.JavaType;
15
16 import org.checkerframework.checker.index.qual.NonNegative;
17
18 public final class TestMethod {
19 @NonNull
20 public final Class<?> testClass;
21 @NonNull
22 public final String testClassDesc;
23 @NonNull
24 public final String testMethodDesc;
25 @NonNull
26 private final Type[] parameterTypes;
27 @NonNull
28 private final Class<?>[] parameterClasses;
29 @NonNull
30 private final Annotation[][] parameterAnnotations;
31 @NonNull
32 private final Object[] parameterValues;
33
34 public TestMethod(@NonNull Method testMethod, @NonNull Object[] parameterValues) {
35 testClass = testMethod.getDeclaringClass();
36 testClassDesc = JavaType.getInternalName(testClass);
37 testMethodDesc = testMethod.getName() + JavaType.getMethodDescriptor(testMethod);
38 parameterTypes = testMethod.getGenericParameterTypes();
39 parameterClasses = testMethod.getParameterTypes();
40 parameterAnnotations = testMethod.getParameterAnnotations();
41 this.parameterValues = parameterValues;
42 }
43
44 @NonNegative
45 public int getParameterCount() {
46 return parameterTypes.length;
47 }
48
49 @NonNull
50 public Type getParameterType(@NonNegative int index) {
51 return parameterTypes[index];
52 }
53
54 @NonNull
55 public Class<?> getParameterClass(@NonNegative int index) {
56 return parameterClasses[index];
57 }
58
59 @NonNull
60 public Annotation[] getParameterAnnotations(@NonNegative int index) {
61 return parameterAnnotations[index];
62 }
63
64 @Nullable
65 public Object getParameterValue(@NonNegative int index) {
66 return parameterValues[index];
67 }
68
69 public void setParameterValue(@NonNegative int index, @Nullable Object value) {
70 if (value != null) {
71 parameterValues[index] = value;
72 }
73 }
74 }