1
2
3
4
5 package mockit.internal.expectations.argumentMatching;
6
7 import edu.umd.cs.findbugs.annotations.NonNull;
8 import edu.umd.cs.findbugs.annotations.Nullable;
9
10 public final class AlwaysTrueMatcher implements ArgumentMatcher<AlwaysTrueMatcher> {
11 public static final ArgumentMatcher<?> ANY_STRING = new AlwaysTrueMatcher(String.class, "String");
12 public static final ArgumentMatcher<?> ANY_BOOLEAN = new AlwaysTrueMatcher(Boolean.class, "boolean");
13 public static final ArgumentMatcher<?> ANY_CHAR = new AlwaysTrueMatcher(Character.class, "char");
14 public static final ArgumentMatcher<?> ANY_BYTE = new AlwaysTrueMatcher(Byte.class, "byte");
15 public static final ArgumentMatcher<?> ANY_SHORT = new AlwaysTrueMatcher(Short.class, "short");
16 public static final ArgumentMatcher<?> ANY_INT = new AlwaysTrueMatcher(Integer.class, "int");
17 public static final ArgumentMatcher<?> ANY_FLOAT = new AlwaysTrueMatcher(Float.class, "float");
18 public static final ArgumentMatcher<?> ANY_LONG = new AlwaysTrueMatcher(Long.class, "long");
19 public static final ArgumentMatcher<?> ANY_DOUBLE = new AlwaysTrueMatcher(Double.class, "double");
20 public static final ArgumentMatcher<?> ANY_VALUE = new AlwaysTrueMatcher(Object.class, null);
21
22 @NonNull
23 private final Class<?> expectedType;
24 @Nullable
25 private final String typeName;
26
27 private AlwaysTrueMatcher(@NonNull Class<?> expectedType, @Nullable String typeName) {
28 this.expectedType = expectedType;
29 this.typeName = typeName;
30 }
31
32 @Override
33 public boolean same(@NonNull AlwaysTrueMatcher other) {
34 return expectedType == other.expectedType;
35 }
36
37 @Override
38 public boolean matches(@Nullable Object argValue) {
39 return argValue == null || expectedType.isInstance(argValue);
40 }
41
42 @Override
43 public void writeMismatchPhrase(@NonNull ArgumentMismatch argumentMismatch) {
44 String parameterTypeName = typeName != null ? typeName : argumentMismatch.getParameterType();
45 argumentMismatch.append("any ").append(parameterTypeName);
46 }
47 }