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 }