/******************************************************************************
* Copyright (C) 2006-2012 IFS Institute for Software and others
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Original authors:
* Dennis Hunziker
* Ueli Kistler
* Reto Schuettel
* Robin Stocker
* Contributors:
* Fabio Zadrozny <fabiofz@gmail.com> - initial implementation
******************************************************************************/
/*
* Copyright (C) 2006, 2007 Dennis Hunziker, Ueli Kistler
* Copyright (C) 2007 Reto Schuettel, Robin Stocker
*/
package org.python.pydev.refactoring.tests.core;
import java.io.File;
import java.io.FilenameFilter;
import junit.framework.TestSuite;
/**
* @author Dennis Hunziker, Ueli Kistler
*/
public abstract class AbstractIOTestSuite extends TestSuite {
private static final int EXTENSION = 3;
protected static final String I = File.separator;
// can be used to choose which test we want to run
public static String FILE_FILTER = "^test.+\\.py$";
static {
// FILE_FILTER = "^testExtractMethodImport3.py$";
}
public AbstractIOTestSuite(String name) {
super(name);
}
protected void createTests(String testdir) {
for (File testFile : getTestFiles(testdir)) {
this.addTest(createTest(testFile));
}
}
private IInputOutputTestCase createTest(File file) {
String filename = file.getName();
String testCaseName = filename.substring(0, filename.length() - EXTENSION);
TestData data = new TestData(file);
IInputOutputTestCase testCase = createTestCase(testCaseName);
testCase.setData(data);
return testCase;
}
private File[] getTestFiles(String path) {
File dir = new File(path);
if (!dir.exists()) {
throw new RuntimeException("No such directory: " + dir.getAbsolutePath());
}
File[] testFiles = dir.listFiles(new TestFilenameFilter());
if (testFiles == null) {
throw new RuntimeException("No such directory or IO error while looking for files in " + path);
}
return testFiles;
}
private final class TestFilenameFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
return name.matches(System.getProperty("filter", FILE_FILTER));
}
}
protected abstract IInputOutputTestCase createTestCase(String testCaseName);
}