package org.openflexo.fib;
import static org.junit.Assert.fail;
import java.io.File;
import java.util.Collection;
import org.apache.commons.io.FileUtils;
import org.openflexo.fib.model.FIBComponent;
import org.openflexo.fib.model.validation.ValidationReport;
public abstract class AbstractTestFIBFile {
private static final String[] FIB_EXTENSIONS = { "fib", "inspector" };
public void validateFIBDirectory(File... fibDirectories) {
for (File dir : fibDirectories) {
Collection<File> files = FileUtils.listFiles(dir, FIB_EXTENSIONS, true);
validateFIBFile(files.toArray(new File[files.size()]));
}
}
public void validateFIBFile(File... fibFiles) {
for (File file : fibFiles) {
FIBComponent fibComponent = FIBLibrary.instance().retrieveFIBComponent(file, false);
try {
ValidationReport report = fibComponent.validate();
if (report.getErrorNb() > 0) {
fail("Validation failed for " + file.getAbsolutePath() + "\n" + report.errorAsString());
}
} finally {
FIBLibrary.instance().removeFIBComponentFromCache(file);
}
}
}
}