aboutsummaryrefslogtreecommitdiff
path: root/javaparser-symbol-solver-testing
diff options
context:
space:
mode:
authordhardtke <accounts@pcprofil.de>2018-02-02 15:17:19 +0100
committerdhardtke <accounts@pcprofil.de>2018-02-02 15:17:19 +0100
commitd480a861f333d971a5c3c6ed89c3c347cadd6cd0 (patch)
tree0286c41a2f984965bdfd6900bed61d7d03c8191a /javaparser-symbol-solver-testing
parentfc0a1b721f63bd05ff54cfbb68488b32a6023ae2 (diff)
downloadjavaparser-d480a861f333d971a5c3c6ed89c3c347cadd6cd0.tar.gz
Add test for #1364
Diffstat (limited to 'javaparser-symbol-solver-testing')
-rw-r--r--javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/Issue1364.java91
1 files changed, 91 insertions, 0 deletions
diff --git a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/Issue1364.java b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/Issue1364.java
new file mode 100644
index 000000000..e2bbade0c
--- /dev/null
+++ b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/Issue1364.java
@@ -0,0 +1,91 @@
+package com.github.javaparser.symbolsolver;
+
+import com.github.javaparser.JavaParser;
+import com.github.javaparser.ParseResult;
+import com.github.javaparser.ParseStart;
+import com.github.javaparser.ParserConfiguration;
+import com.github.javaparser.Providers;
+import com.github.javaparser.ast.CompilationUnit;
+import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
+import com.github.javaparser.ast.expr.MethodCallExpr;
+import com.github.javaparser.ast.expr.SimpleName;
+import com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration;
+import com.github.javaparser.symbolsolver.javaparsermodel.UnsolvedSymbolException;
+import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserClassDeclaration;
+import com.github.javaparser.symbolsolver.model.resolution.SymbolReference;
+import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
+import com.github.javaparser.symbolsolver.resolution.AbstractResolutionTest;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Dominik Hardtke
+ * @since 02.02.2018
+ */
+public class Issue1364 extends AbstractResolutionTest {
+ private JavaParser javaParser;
+
+ @Before
+ public void setup() {
+ ClassOrInterfaceDeclaration fakeObject = new ClassOrInterfaceDeclaration();
+ fakeObject.setName(new SimpleName("java.lang.Object"));
+
+ TypeSolver typeSolver = new TypeSolver() {
+ @Override
+ public TypeSolver getParent() {
+ return null;
+ }
+
+ @Override
+ public void setParent(TypeSolver parent) {
+ }
+
+ @Override
+ public SymbolReference<ResolvedReferenceTypeDeclaration> tryToSolveType(String name) {
+ if ("java.lang.Object".equals(name)) {
+ // custom handling
+ return SymbolReference.solved(new JavaParserClassDeclaration(fakeObject, this));
+ }
+
+ return SymbolReference.unsolved(ResolvedReferenceTypeDeclaration.class);
+ }
+ };
+
+ ParserConfiguration config = new ParserConfiguration();
+ config.setSymbolResolver(new JavaSymbolSolver(typeSolver));
+ javaParser = new JavaParser(config);
+ }
+
+ @Test(timeout = 1000)
+ public void resolveSubClassOfObject() {
+ String code = String.join(System.lineSeparator(),
+ "package graph;",
+ "public class Vertex {",
+ " public static void main(String[] args) {",
+ " System.out.println();",
+ " }",
+ "}"
+ );
+
+ ParseResult<CompilationUnit> parseResult = javaParser.parse(ParseStart.COMPILATION_UNIT, Providers.provider(code));
+ assertTrue(parseResult.isSuccessful());
+ assertTrue(parseResult.getResult().isPresent());
+
+ List<MethodCallExpr> methodCallExprs = parseResult.getResult().get().findAll(MethodCallExpr.class);
+ assertEquals(1, methodCallExprs.size());
+
+ try {
+ methodCallExprs.get(0).calculateResolvedType();
+ fail("An UnsolvedSymbolException should be thrown");
+ } catch (UnsolvedSymbolException ignored) {
+ // all is fine if an UnsolvedSymbolException is thrown
+ }
+ }
+}
+