package net.thucydides.core.matchers; import net.thucydides.core.model.Screenshot; import org.hamcrest.Description; import org.hamcrest.TypeSafeMatcher; import java.util.Arrays; import java.util.List; import static ch.lambdaj.Lambda.extract; import static ch.lambdaj.Lambda.on; /** * Does a list of screenshot objects contain a specified list of screenshot filenames? */ public class ScreenshotHasFilenamesMatcher extends TypeSafeMatcher<List<Screenshot>> { private final List<String> expectedFilenames; public ScreenshotHasFilenamesMatcher(final String... expectedFilenames) { this.expectedFilenames = Arrays.asList(expectedFilenames); } public boolean matchesSafely(final List<Screenshot> screenshots) { List<String> screenshotFilenames = extract(screenshots, on(Screenshot.class).getFilename()); for(String expectedFilename : expectedFilenames) { if (!screenshotFilenames.contains(expectedFilename)) { return false; } } return true; } public void describeTo(Description description) { description.appendText("screenshots called ").appendText(Arrays.toString(expectedFilenames.toArray())); } }