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