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 import java.util.regex.Pattern;
11
12 public final class PatternMatcher implements ArgumentMatcher<PatternMatcher> {
13 @NonNull
14 private final Pattern pattern;
15
16 public PatternMatcher(@NonNull String regex) {
17 pattern = Pattern.compile(regex);
18 }
19
20 @Override
21 public boolean same(@NonNull PatternMatcher other) {
22 return pattern == other.pattern;
23 }
24
25 @Override
26 public boolean matches(@Nullable Object argValue) {
27 return argValue instanceof CharSequence && pattern.matcher((CharSequence) argValue).matches();
28 }
29
30 @Override
31 public void writeMismatchPhrase(@NonNull ArgumentMismatch argumentMismatch) {
32 argumentMismatch.append("a string matching \"").append(pattern.toString()).append('"');
33 }
34 }