[java] Update LanguageVersionTest

This commit is contained in:
Andreas Dangel
2023-09-28 10:28:51 +02:00
parent 15ea5f0c00
commit d445b1d55c
2 changed files with 36 additions and 20 deletions

View File

@@ -4,6 +4,9 @@
package net.sourceforge.pmd.lang.java;
import static net.sourceforge.pmd.AbstractLanguageVersionTest.TestDescriptor.defaultVersionIs;
import static net.sourceforge.pmd.AbstractLanguageVersionTest.TestDescriptor.versionDoesNotExist;
import java.util.Arrays;
import java.util.Collection;
@@ -30,11 +33,20 @@ class LanguageVersionTest extends AbstractLanguageVersionTest {
new TestDescriptor(java, "14"),
new TestDescriptor(java, "15"),
new TestDescriptor(java, "16"),
new TestDescriptor(java, "16-preview"),
new TestDescriptor(java, "17"),
new TestDescriptor(java, "17-preview"),
new TestDescriptor(java, "18"),
new TestDescriptor(java, "19"),
new TestDescriptor(java, "20"),
new TestDescriptor(java, "20-preview"),
new TestDescriptor(java, "21"),
new TestDescriptor(java, "21-preview"),
// this one won't be found: case sensitive!
new TestDescriptor("JAVA", "JAVA", "1.7", null));
defaultVersionIs(java, "21"),
// this one won't be found: case-sensitive!
versionDoesNotExist("JAVA", "JAVA", "1.7"),
// not supported anymore
versionDoesNotExist(java, "19-preview")
);
}
}

View File

@@ -9,6 +9,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.io.IOException;
import java.io.InputStream;
import java.util.Objects;
import java.util.Properties;
import org.junit.jupiter.params.ParameterizedTest;
@@ -23,21 +24,18 @@ import net.sourceforge.pmd.lang.LanguageVersion;
* Base test class for {@link LanguageVersion} implementations. <br>
* Each language implementation should subclass this and provide a method called {@code data}.
*
* <pre>
* static Collection&lt;TestDescriptor&gt; data() {
* <pre>{@code
* static Collection<TestDescriptor> data() {
* final Language myLanguage = LanguageRegistry.getLanguage(MyLanguageModule.NAME);
* return Arrays.asList(
* new TestDescriptor(MyLanguageModule.NAME, MyLanguageModule.TERSE_NAME, "1.1",
* LanguageRegistry.getLanguage(MyLanguageModule.NAME).getVersion("1.1")),
* new TestDescriptor(MyLanguageModule.NAME, MyLanguageModule.TERSE_NAME, "1.2",
* LanguageRegistry.getLanguage(MyLanguageModule.NAME).getVersion("1.2")),
* new TestDescriptor(myLanguage, "1.1"),
* new TestDescriptor(myLanguage, "1.2"),
* defaultVersionIs(myLanguage, "1.2),
*
* // doesn't exist
* new TestDescriptor(MyLanguageModule.NAME, MyLanguageModule.TERSE_NAME, "1.3", null)
* versionDoesNotExist(myLanguage, "1.3")
* };
* </pre>
*
* <p>For the parameters, see the constructor
* {@link TestDescriptor#TestDescriptor(String, String, String, LanguageVersion)}.</p>
* }</pre>
*/
public abstract class AbstractLanguageVersionTest {
@@ -67,7 +65,16 @@ public abstract class AbstractLanguageVersionTest {
}
public TestDescriptor(Language language, String version) {
this(language, version, language.getVersion(version));
this(language, version,
Objects.requireNonNull(language.getVersion(version), "language version '" + version + "' doesn't exist"));
}
public static TestDescriptor versionDoesNotExist(String name, String terseName, String version) {
return new TestDescriptor(name, terseName, version, null);
}
public static TestDescriptor versionDoesNotExist(Language lang, String version) {
return new TestDescriptor(lang, version, null);
}
public static TestDescriptor defaultVersionIs(Language lang, String version) {
@@ -75,10 +82,7 @@ public abstract class AbstractLanguageVersionTest {
}
private TestDescriptor(Language language, String version, LanguageVersion expected) {
this.name = language.getName();
this.version = version;
this.simpleTerseName = language.getId();
this.expected = expected;
this(language.getName(), language.getId(), version, expected);
}