package ext.test4j.hamcrest.object;
import ext.test4j.hamcrest.Factory;
import ext.test4j.hamcrest.FeatureMatcher;
import ext.test4j.hamcrest.Matcher;
import static ext.test4j.hamcrest.core.IsEqual.equalTo;
public class HasToString<T> extends FeatureMatcher<T, String> {
public HasToString(Matcher<? super String> toStringMatcher) {
super(toStringMatcher, "with toString()", "toString()");
}
@Override
protected String featureValueOf(T actual) {
return actual.toString();
}
/**
* Evaluates whether item.toString() satisfies a given matcher.
*/
@Factory
public static <T> HasToString<T> hasToString(Matcher<? super String> toStringMatcher) {
return new HasToString<T>(toStringMatcher);
}
/**
* This is a shortcut to the frequently used has_string(equalTo(x)).
*
* For example, assertThat(hasToString(equal_to(x)))
* vs. assertThat(hasToString(x))
*/
@Factory
public static <T> HasToString<T> hasToString(String expectedToString) {
return new HasToString<T>(equalTo(expectedToString));
}
}