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.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  }