1
2
3
4 package net.sourceforge.pmd.typeresolution;
5
6 import java.io.InputStream;
7 import java.io.InputStreamReader;
8 import org.junit.Test;
9 import net.sourceforge.pmd.lang.LanguageRegistry;
10 import net.sourceforge.pmd.lang.LanguageVersionHandler;
11 import net.sourceforge.pmd.lang.java.JavaLanguageModule;
12 import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit;
13 import net.sourceforge.pmd.typeresolution.testdata.UsesJavaStreams;
14 import net.sourceforge.pmd.typeresolution.testdata.UsesRepeatableAnnotations;
15
16
17 public class ClassTypeResolverJava8Test {
18
19 @Test
20 public void interface_method_should_be_parseable() {
21 ASTCompilationUnit acu = parseAndTypeResolveForClass18(UsesJavaStreams.class);
22 }
23
24 @Test
25 public void repeatable_annotations_method_should_be_parseable() {
26 ASTCompilationUnit acu = parseAndTypeResolveForClass18(UsesRepeatableAnnotations.class);
27 }
28
29
30 public static junit.framework.Test suite() {
31 return new junit.framework.JUnit4TestAdapter(ClassTypeResolverJava8Test.class);
32 }
33
34 private ASTCompilationUnit parseAndTypeResolveForClass18(Class<?> clazz) {
35 return parseAndTypeResolveForClass(clazz, "1.8");
36 }
37
38
39
40
41 private ASTCompilationUnit parseAndTypeResolveForClass(Class<?> clazz, String version) {
42 String sourceFile = clazz.getName().replace('.', '/') + ".java";
43 InputStream is = ClassTypeResolverJava8Test.class.getClassLoader().getResourceAsStream(sourceFile);
44 if (is == null) {
45 throw new IllegalArgumentException("Unable to find source file " + sourceFile + " for " + clazz);
46 }
47 LanguageVersionHandler languageVersionHandler = LanguageRegistry.getLanguage(JavaLanguageModule.NAME).getVersion(version).getLanguageVersionHandler();
48 ASTCompilationUnit acu = (ASTCompilationUnit) languageVersionHandler.getParser(languageVersionHandler.getDefaultParserOptions()).parse(null, new InputStreamReader(is));
49 languageVersionHandler.getSymbolFacade().start(acu);
50 languageVersionHandler.getTypeResolutionFacade(ClassTypeResolverJava8Test.class.getClassLoader()).start(acu);
51 return acu;
52 }
53 }