package ru.qatools.clay.aether;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.NameFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import static org.hamcrest.CoreMatchers.allOf;
public class DirectoryMatcher {
public static class Contains extends TypeSafeMatcher<File> {
private String fileName;
public Contains(String fileName) {
this.fileName = fileName;
}
@Override
protected boolean matchesSafely(File directory) {
return directory.isDirectory() && !FileUtils.listFiles(
directory,
new NameFileFilter(fileName),
TrueFileFilter.INSTANCE
).isEmpty();
}
@Override
public void describeTo(Description description) {
description.appendText("contains file ").appendValue(fileName);
}
}
public static Matcher contains(String first, String... more) {
Collection<Contains> result = new ArrayList<>();
result.add(new Contains(first));
for (String oneMore : more) {
result.add(new Contains(oneMore));
}
return allOf(result.toArray(new Contains[result.size()]));
}
}