StringRegularExpression.java
package org.hamcrest.core;
import java.util.regex.Pattern;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeDiagnosingMatcher;
/**
* @author borettim
* @author sf105
*
*/
public class StringRegularExpression extends TypeSafeDiagnosingMatcher<String> {
protected StringRegularExpression(Pattern pattern) {
this.pattern = pattern;
}
private Pattern pattern;
@Override
public void describeTo(Description description) {
description.appendText("a string matching the pattern ").appendValue(pattern);
}
@Override
protected boolean matchesSafely(String actual, Description mismatchDescription) {
if (!pattern.matcher(actual).matches()) {
mismatchDescription.appendText("the string was ").appendValue(actual);
return false;
}
return true;
}
/**
* Creates a matcher that checks if the examined string matches a specified {@link java.util.regex.Pattern}.
*
* <pre>
* assertThat("abc", matchesRegex(Pattern.compile("ˆ[a-z]$"));
* </pre>
*
* @param pattern
* the pattern to be used.
* @return The matcher.
*/
public static Matcher<String> matchesRegex(Pattern pattern) {
return new StringRegularExpression(pattern);
}
/**
* Creates a matcher that checks if the examined string matches a specified regex.
*
* <pre>
* assertThat("abc", matchesRegex("ˆ[a-z]+$"));
* </pre>
*
* @param regex
* The regex to be used for the validation.
* @return The matcher.
*/
public static Matcher<String> matchesRegex(String regex) {
return matchesRegex(Pattern.compile(regex));
}
}