package net.thucydides.junit.hamcrest; import net.thucydides.core.reports.AcceptanceTestReporter; import org.hamcrest.Description; import org.hamcrest.TypeSafeMatcher; import java.util.List; public class ContainsAnInstanceOfMatcher extends TypeSafeMatcher<List<AcceptanceTestReporter>> { private final Class<? extends AcceptanceTestReporter> reporterClass; public ContainsAnInstanceOfMatcher(Class<? extends AcceptanceTestReporter> reporterClass) { this.reporterClass = reporterClass; } public boolean matchesSafely(List<AcceptanceTestReporter> reporters) { boolean matchingReporterFound = false; for(AcceptanceTestReporter reporter : reporters) { if (thisIsTheRightSortOf(reporter)){ matchingReporterFound = true; break; } } return matchingReporterFound; } private boolean thisIsTheRightSortOf(AcceptanceTestReporter reporter) { return reporter.getClass().isAssignableFrom(reporterClass); } public void describeTo(Description description) { description.appendText("using an ").appendText(reporterClass.getName()).appendText(" reporter"); } }