View Javadoc
1   package org.junit.tests.experimental.theories.extendingwithstubs;
2   
3   import java.lang.reflect.Method;
4   import java.util.ArrayList;
5   import java.util.Arrays;
6   import java.util.List;
7   
8   public class MethodCall {
9       private final Method method;
10      private final Object[] args;
11  
12      public MethodCall(Method method, Object... args) {
13          this.method = method;
14          this.args = args;
15      }
16  
17      @Override
18      public boolean equals(Object obj) {
19          MethodCall call = (MethodCall) obj;
20          return call.method.equals(method) && Arrays.deepEquals(call.args, args);
21      }
22  
23      @Override
24      public int hashCode() {
25          return 1;
26      }
27  
28      public Class<?> getReturnType() {
29          return method.getReturnType();
30      }
31  
32      @Override
33      public String toString() {
34          return String.format("%s(%s)", method.getName(), argListString());
35      }
36  
37      private String argListString() {
38          if (args == null) {
39              return null;
40          }
41          return argList().toString().substring(1, argList().toString().length() - 1);
42      }
43  
44      private List<Object> argList() {
45          ArrayList<Object> list = new ArrayList<Object>();
46          for (Object arg : args) {
47              list.add(new StringableObject(arg));
48          }
49          return list;
50      }
51  
52      public Object stringableObject(Object arg) {
53          return new StringableObject(arg).stringableObject();
54      }
55  }