1package org.junit.internal.matchers; 2 3import org.hamcrest.Description; 4 5public abstract class SubstringMatcher extends TypeSafeMatcher<String> { 6 7 protected final String substring; 8 9 protected SubstringMatcher(final String substring) { 10 this.substring = substring; 11 } 12 13 @Override 14 public boolean matchesSafely(String item) { 15 return evalSubstringOf(item); 16 } 17 18 public void describeTo(Description description) { 19 description.appendText("a string ") 20 .appendText(relationship()) 21 .appendText(" ") 22 .appendValue(substring); 23 } 24 25 protected abstract boolean evalSubstringOf(String string); 26 27 protected abstract String relationship(); 28}