View Javadoc
1   /*
2    * Copyright (c) 2006 JMockit developers
3    * This file is subject to the terms of the MIT license (see LICENSE.txt).
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  }