184bc5427d6883f73cfeae3da640acd011d35c006Chris Lattnerpackage org.junit.internal;
284bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner
384bc5427d6883f73cfeae3da640acd011d35c006Chris Lattnerimport org.hamcrest.Description;
484bc5427d6883f73cfeae3da640acd011d35c006Chris Lattnerimport org.hamcrest.Matcher;
584bc5427d6883f73cfeae3da640acd011d35c006Chris Lattnerimport org.hamcrest.SelfDescribing;
684bc5427d6883f73cfeae3da640acd011d35c006Chris Lattnerimport org.hamcrest.StringDescription;
784bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner
884bc5427d6883f73cfeae3da640acd011d35c006Chris Lattnerpublic class AssumptionViolatedException extends RuntimeException implements SelfDescribing {
984bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	private static final long serialVersionUID= 1L;
1084bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner
1184bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	private final Object fValue;
1284bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner
1384bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	private final Matcher<?> fMatcher;
1484bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner
1584bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	public AssumptionViolatedException(Object value, Matcher<?> matcher) {
1684bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner		super(value instanceof Throwable ? (Throwable) value : null);
1784bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner		fValue= value;
1884bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner		fMatcher= matcher;
1984bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	}
2084bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner
2184bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	public AssumptionViolatedException(String assumption) {
2284bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner		this(assumption, null);
2384bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	}
2484bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner
2584bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	@Override
2684bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	public String getMessage() {
2784bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner		return StringDescription.asString(this);
2884bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	}
2984bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner
3084bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	public void describeTo(Description description) {
3184bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner		if (fMatcher != null) {
3284bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner			description.appendText("got: ");
3384bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner			description.appendValue(fValue);
3484bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner			description.appendText(", expected: ");
3584bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner			description.appendDescriptionOf(fMatcher);
3684bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner		} else {
3784bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner			description.appendText("failed assumption: " + fValue);
3884bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner		}
3984bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner	}
4084bc5427d6883f73cfeae3da640acd011d35c006Chris Lattner}