org.junit.internal.matchers.ThrowableCauseMatcher Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of junit Show documentation
Show all versions of junit Show documentation
JUnit is a unit testing framework for Java, created by Erich Gamma and Kent Beck.
package org.junit.internal.matchers;
import org.hamcrest.Description;
import org.hamcrest.Factory;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
/**
* A matcher that applies a delegate matcher to the cause of the current Throwable, returning the result of that
* match.
*
* @param the type of the throwable being matched
*/
public class ThrowableCauseMatcher extends
TypeSafeMatcher {
private final Matcher causeMatcher;
public ThrowableCauseMatcher(Matcher causeMatcher) {
this.causeMatcher = causeMatcher;
}
public void describeTo(Description description) {
description.appendText("exception with cause ");
description.appendDescriptionOf(causeMatcher);
}
@Override
protected boolean matchesSafely(T item) {
return causeMatcher.matches(item.getCause());
}
@Override
protected void describeMismatchSafely(T item, Description description) {
description.appendText("cause ");
causeMatcher.describeMismatch(item.getCause(), description);
}
/**
* Returns a matcher that verifies that the outer exception has a cause for which the supplied matcher
* evaluates to true.
*
* @param matcher to apply to the cause of the outer exception
* @param type of the outer exception
*/
@Factory
public static Matcher hasCause(final Matcher matcher) {
return new ThrowableCauseMatcher(matcher);
}
}