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