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