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