/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.java.ast; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.apache.commons.io.IOUtils; import org.junit.Test; import net.sourceforge.pmd.lang.java.ParserTst; public class JDKVersionTest extends ParserTst { private static String loadSource(String name) { try { return IOUtils.toString(JDKVersionTest.class.getResourceAsStream("jdkversiontests/" + name), StandardCharsets.UTF_8); } catch (IOException e) { throw new RuntimeException(e); } } // enum keyword/identifier @Test(expected = ParseException.class) public void testEnumAsKeywordShouldFailWith14() { parseJava15(loadSource("jdk14_enum.java")); } @Test public void testEnumAsIdentifierShouldPassWith14() { parseJava14(loadSource("jdk14_enum.java")); } @Test public void testEnumAsKeywordShouldPassWith15() { parseJava15(loadSource("jdk15_enum.java")); } @Test(expected = ParseException.class) public void testEnumAsIdentifierShouldFailWith15() { parseJava15(loadSource("jdk14_enum.java")); } // enum keyword/identifier // assert keyword/identifier @Test public void testAssertAsKeywordVariantsSucceedWith14() { parseJava14(loadSource("assert_test1.java")); parseJava14(loadSource("assert_test2.java")); parseJava14(loadSource("assert_test3.java")); parseJava14(loadSource("assert_test4.java")); } @Test(expected = ParseException.class) public void testAssertAsVariableDeclIdentifierFailsWith14() { parseJava14(loadSource("assert_test5.java")); } @Test(expected = ParseException.class) public void testAssertAsMethodNameIdentifierFailsWith14() { parseJava14(loadSource("assert_test7.java")); } @Test public void testAssertAsIdentifierSucceedsWith13() { parseJava13(loadSource("assert_test5.java")); } @Test(expected = ParseException.class) public void testAssertAsKeywordFailsWith13() { parseJava13(loadSource("assert_test6.java")); } // assert keyword/identifier @Test public void testVarargsShouldPassWith15() { parseJava15(loadSource("jdk15_varargs.java")); } @Test(expected = ParseException.class) public void testVarargsShouldFailWith14() { parseJava14(loadSource("jdk15_varargs.java")); } @Test public void testJDK15ForLoopSyntaxShouldPassWith15() { parseJava15(loadSource("jdk15_forloop.java")); } @Test public void testJDK15ForLoopSyntaxWithModifiers() { parseJava15(loadSource("jdk15_forloop_with_modifier.java")); } @Test(expected = ParseException.class) public void testJDK15ForLoopShouldFailWith14() { parseJava14(loadSource("jdk15_forloop.java")); } @Test public void testJDK15GenericsSyntaxShouldPassWith15() { parseJava15(loadSource("jdk15_generics.java")); } @Test public void testVariousParserBugs() { parseJava15(loadSource("fields_bug.java")); parseJava15(loadSource("gt_bug.java")); parseJava15(loadSource("annotations_bug.java")); parseJava15(loadSource("constant_field_in_annotation_bug.java")); parseJava15(loadSource("generic_in_field.java")); } @Test public void testNestedClassInMethodBug() { parseJava15(loadSource("inner_bug.java")); parseJava15(loadSource("inner_bug2.java")); } @Test public void testGenericsInMethodCall() { parseJava15(loadSource("generic_in_method_call.java")); } @Test public void testGenericINAnnotation() { parseJava15(loadSource("generic_in_annotation.java")); } @Test public void testGenericReturnType() { parseJava15(loadSource("generic_return_type.java")); } @Test public void testMultipleGenerics() { // See java/lang/concurrent/CopyOnWriteArraySet parseJava15(loadSource("funky_generics.java")); // See java/lang/concurrent/ConcurrentHashMap parseJava15(loadSource("multiple_generics.java")); } @Test public void testAnnotatedParams() { parseJava15(loadSource("annotated_params.java")); } @Test public void testAnnotatedLocals() { parseJava15(loadSource("annotated_locals.java")); } @Test public void testAssertAsIdentifierSucceedsWith13Test2() { parseJava13(loadSource("assert_test5_a.java")); } @Test public final void testBinaryAndUnderscoresInNumericalLiterals() { parseJava17(loadSource("jdk17_numerical_literals.java")); } @Test public final void testStringInSwitch() { parseJava17(loadSource("jdk17_string_in_switch.java")); } @Test public final void testGenericDiamond() { parseJava17(loadSource("jdk17_generic_diamond.java")); } @Test public final void testTryWithResources() { parseJava17(loadSource("jdk17_try_with_resources.java")); } @Test public final void testTryWithResourcesSemi() { parseJava17(loadSource("jdk17_try_with_resources_semi.java")); } @Test public final void testTryWithResourcesMulti() { parseJava17(loadSource("jdk17_try_with_resources_multi.java")); } @Test public final void testTryWithResourcesWithAnnotations() { parseJava17(loadSource("jdk17_try_with_resources_with_annotations.java")); } @Test public final void testMulticatch() { parseJava17(loadSource("jdk17_multicatch.java")); } @Test public final void testMulticatchWithAnnotations() { parseJava17(loadSource("jdk17_multicatch_with_annotations.java")); } }