/******************************************************************************* * Copyright (c) 2012 BMW Car IT and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.jnario.jnario.test.util; import org.hamcrest.Description; import org.hamcrest.Matcher; import org.junit.experimental.results.PrintableResult; import org.junit.internal.matchers.TypeSafeMatcher; import org.junit.runner.Result; @SuppressWarnings("restriction") public class ResultMatchers { public static Matcher<Result> ignoreCountIs(final int count) { return new TypeSafeMatcher<Result>() { public void describeTo(Description description) { description.appendText("has " + count + " ignored tests"); } @Override public boolean matchesSafely(Result item) { return item.getIgnoreCount() == count; } }; } public static Matcher<Result> isSuccessful() { return failureCountIs(0); } public static Matcher<Result> failureCountIs(final int count) { return new TypeSafeMatcher<Result>() { public void describeTo(Description description) { description.appendText("has " + count + " failures"); } @Override public boolean matchesSafely(Result item) { boolean isOk = item.getFailureCount() == count; if(!isOk){ System.err.println(new PrintableResult(item.getFailures())); } return isOk; } }; } public static Matcher<Result> hasSingleFailureContaining(final String string) { return new TypeSafeMatcher<Result>() { public boolean matchesSafely(Result item) { return new PrintableResult(item.getFailures()).toString().contains(string) && failureCountIs(1).matches(item); } public void describeTo(Description description) { description.appendText("has single failure containing " + string); } }; } }