View Javadoc
1   /*
2    * MIT License
3    * Copyright (c) 2006-2025 JMockit developers
4    * See LICENSE file for full license text.
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  }