package org.aksw.gerbil.web.config.check;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class CheckerTest {
@Parameters
public static Collection<Object[]> data() throws IOException {
File existingFile = File.createTempFile("checker", "test");
File deletedFile = File.createTempFile("checker", "test");
Assert.assertTrue(deletedFile.delete());
File existingDir = File.createTempFile("checker", "test");
Assert.assertTrue(existingDir.delete());
Assert.assertTrue(existingDir.mkdir());
List<Object[]> testConfigs = new ArrayList<Object[]>();
FileChecker fileChecker = new FileChecker();
// Check existing file
testConfigs.add(new Object[] { fileChecker, new Object[] { existingFile }, true });
testConfigs.add(new Object[] { fileChecker, new Object[] { existingFile.toString() }, true });
testConfigs.add(new Object[] { fileChecker, new Object[] { existingFile.getAbsolutePath() }, true });
// Check deleted file
testConfigs.add(new Object[] { fileChecker, new Object[] { deletedFile }, false });
testConfigs.add(new Object[] { fileChecker, new Object[] { deletedFile.toString() }, false });
testConfigs.add(new Object[] { fileChecker, new Object[] { deletedFile.getAbsolutePath() }, false });
// Check more than one file
testConfigs.add(new Object[] { fileChecker, new Object[] { existingFile, existingFile }, true });
testConfigs.add(new Object[] { fileChecker, new Object[] { existingFile, deletedFile }, false });
testConfigs.add(new Object[] { fileChecker, new Object[] { deletedFile, deletedFile }, false });
// Check existing directory
testConfigs.add(new Object[] { fileChecker, new Object[] { existingDir }, false });
testConfigs.add(new Object[] { fileChecker, new Object[] { existingDir.toString() }, false });
testConfigs.add(new Object[] { fileChecker, new Object[] { existingDir.getAbsolutePath() }, false });
DirectoryChecker dirChecker = new DirectoryChecker();
// Check existing directory
testConfigs.add(new Object[] { dirChecker, new Object[] { existingDir }, true });
testConfigs.add(new Object[] { dirChecker, new Object[] { existingDir.toString() }, true });
testConfigs.add(new Object[] { dirChecker, new Object[] { existingDir.getAbsolutePath() }, true });
// Check deleted file
testConfigs.add(new Object[] { dirChecker, new Object[] { deletedFile }, false });
testConfigs.add(new Object[] { dirChecker, new Object[] { deletedFile.toString() }, false });
testConfigs.add(new Object[] { dirChecker, new Object[] { deletedFile.getAbsolutePath() }, false });
// Check more than one directory
testConfigs.add(new Object[] { dirChecker, new Object[] { existingDir, existingDir }, true });
testConfigs.add(new Object[] { dirChecker, new Object[] { existingDir, deletedFile }, false });
testConfigs.add(new Object[] { dirChecker, new Object[] { deletedFile, deletedFile }, false });
// Check existing file
testConfigs.add(new Object[] { dirChecker, new Object[] { existingFile }, false });
testConfigs.add(new Object[] { dirChecker, new Object[] { existingFile.toString() }, false });
testConfigs.add(new Object[] { dirChecker, new Object[] { existingFile.getAbsolutePath() }, false });
return testConfigs;
}
private Checker checker;
private Object arguments[];
private boolean expectedResult;
public CheckerTest(Checker checker, Object[] arguments, boolean expectedResult) {
this.checker = checker;
this.arguments = arguments;
this.expectedResult = expectedResult;
}
@Test
public void test() {
Assert.assertEquals(expectedResult, checker.check(arguments));
}
}