diff options
Diffstat (limited to 'javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/JavaParserAPIIntegrationTest.java')
-rw-r--r-- | javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/JavaParserAPIIntegrationTest.java | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/JavaParserAPIIntegrationTest.java b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/JavaParserAPIIntegrationTest.java new file mode 100644 index 000000000..eb3072265 --- /dev/null +++ b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/JavaParserAPIIntegrationTest.java @@ -0,0 +1,158 @@ +package com.github.javaparser.symbolsolver; + +import com.github.javaparser.JavaParser; +import com.github.javaparser.ParseStart; +import com.github.javaparser.ParserConfiguration; +import com.github.javaparser.StreamProvider; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.body.*; +import com.github.javaparser.resolution.declarations.*; +import com.github.javaparser.resolution.types.ResolvedReferenceType; +import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; +import com.github.javaparser.symbolsolver.model.typesystem.ReferenceTypeImpl; +import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; +import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver; +import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; +import com.google.common.collect.ImmutableList; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public class JavaParserAPIIntegrationTest extends AbstractTest { + + private TypeSolver typeSolver; + private ResolvedReferenceType string; + private ResolvedReferenceType listOfBoolean; + + @Before + public void setup() { + File src = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core")); + CombinedTypeSolver combinedTypeSolverNewCode = new CombinedTypeSolver(); + combinedTypeSolverNewCode.add(new ReflectionTypeSolver()); + combinedTypeSolverNewCode.add(new JavaParserTypeSolver(src)); + combinedTypeSolverNewCode.add(new JavaParserTypeSolver(adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-generated-sources")))); + typeSolver = combinedTypeSolverNewCode; + + TypeSolver ts = new ReflectionTypeSolver(); + string = new ReferenceTypeImpl(ts.solveType(String.class.getCanonicalName()), ts); + ResolvedReferenceType booleanC = new ReferenceTypeImpl(ts.solveType(Boolean.class.getCanonicalName()), ts); + listOfBoolean = new ReferenceTypeImpl(ts.solveType(List.class.getCanonicalName()), ImmutableList.of(booleanC), ts); + } + + @Test + public void annotationDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/resources/Annotations.java.txt")); + CompilationUnit cu = parseWithSymbolResolution(f); + AnnotationDeclaration declaration = (AnnotationDeclaration)cu.getType(0); + assertEquals("MyAnnotation", declaration.getNameAsString()); + ResolvedAnnotationDeclaration resolvedDeclaration = declaration.resolve(); + } + + @Test + public void annotationMemberDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/resources/Annotations.java.txt")); + ParserConfiguration parserConfiguration = new ParserConfiguration(); + parserConfiguration.setSymbolResolver(new JavaSymbolSolver(typeSolver)); + CompilationUnit cu = new JavaParser(parserConfiguration).parse(ParseStart.COMPILATION_UNIT, new StreamProvider(new FileInputStream(f))).getResult().get(); + AnnotationDeclaration declaration = (AnnotationDeclaration)cu.getType(2); + assertEquals("MyAnnotationWithFields", declaration.getNameAsString()); + AnnotationMemberDeclaration memberDeclaration = (AnnotationMemberDeclaration)declaration.getMember(0); + ResolvedAnnotationMemberDeclaration resolvedDeclaration = memberDeclaration.resolve(); + } + + @Test + public void classDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/CompilationUnit.java")); + CompilationUnit cu = parseWithSymbolResolution(f); + ClassOrInterfaceDeclaration declaration = (ClassOrInterfaceDeclaration)cu.getType(0); + declaration.resolve(); + } + + @Test + public void interfaceDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/resources/MethodTypeParams.java.txt")); + CompilationUnit cu = parseWithSymbolResolution(f); + ClassOrInterfaceDeclaration declaration = (ClassOrInterfaceDeclaration)cu.getType(1); + assertEquals("VoidVisitor", declaration.getNameAsString()); + assertEquals(true, declaration.isInterface()); + declaration.resolve(); + } + + private CompilationUnit parseWithSymbolResolution(File f) throws IOException { + ParserConfiguration parserConfiguration = new ParserConfiguration(); + parserConfiguration.setSymbolResolver(new JavaSymbolSolver(typeSolver)); + return new JavaParser(parserConfiguration).parse(ParseStart.COMPILATION_UNIT, new StreamProvider(new FileInputStream(f))).getResult().get(); + } + + @Test + public void constructorDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/CompilationUnit.java")); + CompilationUnit cu = parseWithSymbolResolution(f); + ClassOrInterfaceDeclaration classOrInterfaceDeclaration = (ClassOrInterfaceDeclaration)cu.getType(0); + ConstructorDeclaration constructorDeclaration = classOrInterfaceDeclaration.getDefaultConstructor().get(); + ResolvedConstructorDeclaration resolvedConstructorDeclaration = constructorDeclaration.resolve(); + } + @Test + public void enumDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/AccessSpecifier.java")); + CompilationUnit cu = parseWithSymbolResolution(f); + EnumDeclaration declaration = (EnumDeclaration) cu.getType(0); + assertEquals("AccessSpecifier", declaration.getNameAsString()); + ResolvedEnumDeclaration resolvedDeclaration = declaration.resolve(); + } + + @Test + public void enumConstantDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/AccessSpecifier.java")); + CompilationUnit cu = parseWithSymbolResolution(f); + EnumDeclaration enumDeclaration = (EnumDeclaration) cu.getType(0); + assertEquals("AccessSpecifier", enumDeclaration.getNameAsString()); + EnumConstantDeclaration declaration = enumDeclaration.getEntry(0); + assertEquals("PUBLIC", declaration.getNameAsString()); + ResolvedEnumConstantDeclaration resolvedDeclaration = declaration.resolve(); + } + + @Test + public void fieldDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/CompilationUnit.java")); + CompilationUnit cu = parseWithSymbolResolution(f); + ClassOrInterfaceDeclaration classDeclaration = (ClassOrInterfaceDeclaration) cu.getType(0); + assertEquals("CompilationUnit", classDeclaration.getNameAsString()); + FieldDeclaration declaration = classDeclaration.getFields().get(0); + ResolvedFieldDeclaration resolvedDeclaration = declaration.resolve(); + } + + // TODO make VariableDeclarator resolvable + + @Test + public void methodDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/CompilationUnit.java")); + CompilationUnit cu = parseWithSymbolResolution(f); + ClassOrInterfaceDeclaration classDeclaration = (ClassOrInterfaceDeclaration) cu.getType(0); + assertEquals("CompilationUnit", classDeclaration.getNameAsString()); + MethodDeclaration declaration = classDeclaration.getMethodsByName("getComments").get(0); + ResolvedMethodDeclaration resolvedDeclaration = declaration.resolve(); + assertEquals("getComments", resolvedDeclaration.getName()); + assertEquals(0, resolvedDeclaration.getNumberOfParams()); + } + + @Test + public void parameterDeclarationResolve() throws IOException { + File f = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core/com/github/javaparser/ast/CompilationUnit.java")); + ParserConfiguration parserConfiguration = new ParserConfiguration(); + parserConfiguration.setSymbolResolver(new JavaSymbolSolver(typeSolver)); + CompilationUnit cu = new JavaParser(parserConfiguration).parse(ParseStart.COMPILATION_UNIT, new StreamProvider(new FileInputStream(f))).getResult().get(); + ClassOrInterfaceDeclaration classDeclaration = (ClassOrInterfaceDeclaration) cu.getType(0); + assertEquals("CompilationUnit", classDeclaration.getNameAsString()); + MethodDeclaration methodDeclaration = classDeclaration.getMethodsByName("setComments").get(0); + Parameter declaration = methodDeclaration.getParameter(0); + ResolvedParameterDeclaration resolvedDeclaration = declaration.resolve(); + } + +} |