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