package jp.aegif.nemaki.test.tck;
import java.io.File;
import java.util.Map;
import org.apache.chemistry.opencmis.tck.CmisTest;
import org.apache.chemistry.opencmis.tck.CmisTestGroup;
import org.apache.chemistry.opencmis.tck.CmisTestProgressMonitor;
import org.apache.chemistry.opencmis.tck.CmisTestResult;
import org.apache.chemistry.opencmis.tck.CmisTestResultStatus;
import org.apache.chemistry.opencmis.tck.impl.AbstractCmisTestGroup;
import org.apache.chemistry.opencmis.tck.runner.AbstractRunner;
import org.junit.Assert;
import jp.aegif.nemaki.test.tck.tests.BasicsTestGroup;
public class TestHelper {
private static final String PARAMETERS_FILE_NAME = "cmis-tck-parameters.properties";
private TestHelper() {
}
public static void run(CmisTest test) throws Exception {
run(new SimpleCmisWrapperTestGroup(test));
}
public static void run(CmisTestGroup group) throws Exception {
JUnitRunner runner = new JUnitRunner();
File parametersFile = new File(BasicsTestGroup.class.getClassLoader().getResource(PARAMETERS_FILE_NAME).getFile());
runner.loadParameters(parametersFile);
runner.addGroup(group);
runner.run(new JUnitProgressMonitor());
//CmisTestReport report = new TextReport();
//report.createReport(runner.getParameters(), runner.getGroups(), new PrintWriter(System.out));
checkForFailures(runner);
}
private static void checkForFailures(JUnitRunner runner) {
for (CmisTestGroup group : runner.getGroups()) {
for (CmisTest test : group.getTests()) {
for (CmisTestResult result : test.getResults()) {
if (result.getStatus().getLevel() >= CmisTestResultStatus.FAILURE.getLevel()) {
Assert.fail(result.getMessage() + "\n" + result.getStackTrace().toString());
}
}
}
}
}
private static class JUnitRunner extends AbstractRunner {
}
private static class JUnitProgressMonitor implements CmisTestProgressMonitor {
@SuppressWarnings("PMD.SystemPrintln")
public void startGroup(CmisTestGroup group) {
System.out.println(group.getName() + " (" + group.getTests().size() + " tests)");
}
public void endGroup(CmisTestGroup group) {
}
@SuppressWarnings("PMD.SystemPrintln")
public void startTest(CmisTest test) {
System.out.println(" " + test.getName());
}
public void endTest(CmisTest test) {
}
@SuppressWarnings("PMD.SystemPrintln")
public void message(String msg) {
System.out.println(msg);
}
}
/**
* Minor version of CmisWrapperTestGroup
* @author linzhixing
*
*/
private static class SimpleCmisWrapperTestGroup extends AbstractCmisTestGroup{
private final CmisTest test;
public SimpleCmisWrapperTestGroup(CmisTest test) {
if (test == null) {
throw new IllegalArgumentException("Test is null!");
}
this.test = test;
}
@Override
public void init(Map<String, String> parameters) throws Exception {
super.init(parameters);
addTest(test);
setName(test.getName());
}
}
}