org.junit.internal.matchers.ThrowableCauseMatcher Maven / Gradle / Ivy
package org.junit.internal.matchers;
import org.hamcrest.Description;
import org.hamcrest.Factory;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
public class ThrowableCauseMatcher extends
TypeSafeMatcher {
private final Matcher fMatcher;
public ThrowableCauseMatcher(Matcher matcher) {
fMatcher = matcher;
}
public void describeTo(Description description) {
description.appendText("exception with cause ");
description.appendDescriptionOf(fMatcher);
}
@Override
protected boolean matchesSafely(T item) {
return fMatcher.matches(item.getCause());
}
@Override
protected void describeMismatchSafely(T item, Description description) {
description.appendText("cause ");
fMatcher.describeMismatch(item.getCause(), description);
}
@Factory
public static Matcher hasCause(final Matcher matcher) {
return new ThrowableCauseMatcher(matcher);
}
}