diff --git a/src/test/java/de/tla2b/examples/RegressionTests.java b/src/test/java/de/tla2b/examples/RegressionTests.java index 3371573e8d95cfa6f07b996770bea54acbac5423..e4e11dbd6efecfbcee84ba002fa41c2e14f381c6 100644 --- a/src/test/java/de/tla2b/examples/RegressionTests.java +++ b/src/test/java/de/tla2b/examples/RegressionTests.java @@ -1,21 +1,20 @@ package de.tla2b.examples; import java.io.File; +import java.util.List; import de.tla2b.util.AbstractParseModuleTest; -import de.tla2b.util.PolySuite; -import de.tla2b.util.PolySuite.Config; -import de.tla2b.util.PolySuite.Configuration; import de.tla2b.util.TestUtil; import org.junit.Test; import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; -@RunWith(PolySuite.class) +@RunWith(Parameterized.class) public class RegressionTests extends AbstractParseModuleTest { private final File moduleFile; - public RegressionTests(File machine, Object result) { + public RegressionTests(File machine) { this.moduleFile = machine; } @@ -24,8 +23,8 @@ public class RegressionTests extends AbstractParseModuleTest { TestUtil.loadTlaFile(moduleFile.getPath()); } - @Config - public static Configuration getConfig() { - return getConfiguration2("./src/test/resources/regression"); + @Parameterized.Parameters(name = "{0}") + public static List<File> getConfig() { + return getModulesRecursively("./src/test/resources/regression"); } } diff --git a/src/test/java/de/tla2b/util/AbstractParseModuleTest.java b/src/test/java/de/tla2b/util/AbstractParseModuleTest.java index d67382ef4fd3add3c4fd92d8fbee3c2b9a8fc773..103d467e11f28ceabe0be64156825d7891db8aae 100644 --- a/src/test/java/de/tla2b/util/AbstractParseModuleTest.java +++ b/src/test/java/de/tla2b/util/AbstractParseModuleTest.java @@ -3,9 +3,6 @@ package de.tla2b.util; import java.io.File; import java.util.ArrayList; -import de.tla2b.util.PolySuite.Configuration; - - public abstract class AbstractParseModuleTest { private static final String TLA_SUFFIX = ".tla"; @@ -26,28 +23,4 @@ public abstract class AbstractParseModuleTest { } return files; } - - protected static Configuration getConfiguration2(String path) { - final ArrayList<File> allModules = getModulesRecursively(path); - - return new Configuration() { - public int size() { - return allModules.size(); - } - - public File getTestValue(int index) { - return allModules.get(index); - } - - public String getTestName(int index) { - return allModules.get(index).getName(); - } - - public Object getExpectedValue(int index) { - return 1; - } - }; - } - - } diff --git a/src/test/java/de/tla2b/util/PolySuite.java b/src/test/java/de/tla2b/util/PolySuite.java deleted file mode 100644 index 328d0c506f242810c68d0e6a83d87ce740f2eace..0000000000000000000000000000000000000000 --- a/src/test/java/de/tla2b/util/PolySuite.java +++ /dev/null @@ -1,140 +0,0 @@ -package de.tla2b.util; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.junit.runner.Runner; -import org.junit.runner.notification.RunNotifier; -import org.junit.runners.BlockJUnit4ClassRunner; -import org.junit.runners.Suite; -import org.junit.runners.model.FrameworkMethod; -import org.junit.runners.model.InitializationError; -import org.junit.runners.model.Statement; -import org.junit.runners.model.TestClass; - -public class PolySuite extends Suite { - - // ////////////////////////////// - // Public helper interfaces - - /** - * Annotation for a method which returns a {@link Configuration} - * to be injected into the test class constructor - */ - @Retention(RetentionPolicy.RUNTIME) - @Target(ElementType.METHOD) - public static @interface Config { - } - - public static interface Configuration { - int size(); - Object getTestValue(int index); - Object getExpectedValue(int index); - String getTestName(int index); - } - - // ////////////////////////////// - // Fields - - private final List<Runner> runners; - - // ////////////////////////////// - // Constructor - - /** - * Only called reflectively. Do not use programmatically. - * @param c the test class - * @throws Throwable if something bad happens - */ - public PolySuite(Class<?> c) throws Throwable { - super(c, Collections.<Runner>emptyList()); - TestClass testClass = getTestClass(); - Class<?> jTestClass = testClass.getJavaClass(); - Configuration configuration = getConfiguration(testClass); - List<Runner> runners = new ArrayList<Runner>(); - for (int i = 0, size = configuration.size(); i < size; i++) { - SingleRunner runner = new SingleRunner(jTestClass, configuration.getTestValue(i), configuration.getTestName(i), configuration.getExpectedValue(i)); - runners.add(runner); - } - this.runners = runners; - } - - // ////////////////////////////// - // Overrides - - @Override - protected List<Runner> getChildren() { - return runners; - } - - // ////////////////////////////// - // Private - - private Configuration getConfiguration(TestClass testClass) throws Throwable { - return (Configuration) getConfigMethod(testClass).invokeExplosively(null); - } - - private FrameworkMethod getConfigMethod(TestClass testClass) { - List<FrameworkMethod> methods = testClass.getAnnotatedMethods(Config.class); - if (methods.isEmpty()) { - throw new IllegalStateException("@" + Config.class.getSimpleName() + " method not found"); - } - if (methods.size() > 1) { - throw new IllegalStateException("Too many @" + Config.class.getSimpleName() + " methods"); - } - FrameworkMethod method = methods.get(0); - int modifiers = method.getMethod().getModifiers(); - if (!(Modifier.isStatic(modifiers) && Modifier.isPublic(modifiers))) { - throw new IllegalStateException("@" + Config.class.getSimpleName() + " method \"" + method.getName() + "\" must be public static"); - } - return method; - } - - // ////////////////////////////// - // Helper classes - - private static class SingleRunner extends BlockJUnit4ClassRunner { - - private final Object testVal; - private final Object expectedVal; - private final String testName; - - SingleRunner(Class<?> testClass, Object testVal, String testName, Object expectedVal) throws InitializationError { - super(testClass); - this.testVal = testVal; - this.expectedVal = expectedVal; - this.testName = testName; - } - - @Override - protected Object createTest() throws Exception { - return getTestClass().getOnlyConstructor().newInstance(testVal, expectedVal); - } - - @Override - protected String getName() { - return testName; - } - - @Override - protected String testName(FrameworkMethod method) { - return testName + ": " + method.getName(); - } - - @Override - protected void validateConstructor(List<Throwable> errors) { - validateOnlyOneConstructor(errors); - } - - @Override - protected Statement classBlock(RunNotifier notifier) { - return childrenInvoker(notifier); - } - } - } \ No newline at end of file diff --git a/src/test/java/testing/ExampleFilesTest.java b/src/test/java/testing/ExampleFilesTest.java index 43a9bbdbf4772040ae210434d71d29128efe1e48..d4b2c131c8b158ef9172748eac64b6b6e858bae5 100644 --- a/src/test/java/testing/ExampleFilesTest.java +++ b/src/test/java/testing/ExampleFilesTest.java @@ -1,29 +1,28 @@ package testing; import java.io.File; +import java.util.List; import de.be4.classicalb.core.parser.BParser; import de.be4.classicalb.core.parser.node.Start; import de.be4.classicalb.core.parser.util.PrettyPrinter; import de.tla2b.util.AbstractParseModuleTest; import de.tla2b.util.FileUtils; -import de.tla2b.util.PolySuite; -import de.tla2b.util.PolySuite.Config; -import de.tla2b.util.PolySuite.Configuration; import de.tla2b.util.TestUtil; import de.tla2bAst.Translator; import org.junit.Test; import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import static org.junit.Assert.assertEquals; -@RunWith(PolySuite.class) +@RunWith(Parameterized.class) public class ExampleFilesTest extends AbstractParseModuleTest { private final File moduleFile; - public ExampleFilesTest(File machine, Object result) { + public ExampleFilesTest(File machine) { this.moduleFile = machine; } @@ -62,8 +61,8 @@ public class ExampleFilesTest extends AbstractParseModuleTest { assertEquals(expectedTree, resultTree); } - @Config - public static Configuration getConfig() { - return getConfiguration2("./src/test/resources/prettyprint/OperationsTest/"); + @Parameterized.Parameters(name = "{0}") + public static List<File> getConfig() { + return getModulesRecursively("./src/test/resources/prettyprint/OperationsTest/"); } }