aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/javaparsermodel/DifferentiateDotExpressionTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/javaparsermodel/DifferentiateDotExpressionTest.java')
-rw-r--r--javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/javaparsermodel/DifferentiateDotExpressionTest.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/javaparsermodel/DifferentiateDotExpressionTest.java b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/javaparsermodel/DifferentiateDotExpressionTest.java
new file mode 100644
index 000000000..cf5a87bf7
--- /dev/null
+++ b/javaparser-symbol-solver-testing/src/test/java/com/github/javaparser/symbolsolver/javaparsermodel/DifferentiateDotExpressionTest.java
@@ -0,0 +1,100 @@
+package com.github.javaparser.symbolsolver.javaparsermodel;
+
+import com.github.javaparser.ParseException;
+import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
+import com.github.javaparser.ast.body.MethodDeclaration;
+import com.github.javaparser.ast.expr.MethodCallExpr;
+import com.github.javaparser.symbolsolver.javaparser.Navigator;
+import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserClassDeclaration;
+import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
+import com.github.javaparser.symbolsolver.resolution.AbstractResolutionTest;
+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 org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+
+import static org.junit.Assert.assertEquals;
+
+public class DifferentiateDotExpressionTest extends AbstractResolutionTest {
+
+ private TypeSolver typeSolver;
+
+ @Before
+ public void setup() {
+ CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver();
+ combinedTypeSolver.add(new ReflectionTypeSolver());
+ combinedTypeSolver.add(new JavaParserTypeSolver(adaptPath(new File("src/test/resources/differentiate_dot_expressions"))));
+ typeSolver = combinedTypeSolver;
+ }
+
+ @Test
+ public void methodCallsFromFieldObjects() {
+ ClassOrInterfaceDeclaration clazz = ((JavaParserClassDeclaration) typeSolver.solveType("FieldDotExpressions")).getWrappedNode();
+ MethodDeclaration mainMethod = Navigator.demandMethod(clazz, "main");
+ JavaParserFacade javaParserFacade = JavaParserFacade.get(typeSolver);
+
+ MethodCallExpr firstFieldMethodCall = Navigator.findMethodCall(mainMethod, "firstContainerMethod").get();
+ MethodCallExpr secondFieldMethodCall = Navigator.findMethodCall(mainMethod, "secondContainerMethod").get();
+ MethodCallExpr thirdFieldMethodCall = Navigator.findMethodCall(mainMethod, "thirdContainerMethod").get();
+
+ assertEquals(true, javaParserFacade.solve(firstFieldMethodCall).isSolved());
+ assertEquals(true, javaParserFacade.solve(secondFieldMethodCall).isSolved());
+ assertEquals(true, javaParserFacade.solve(thirdFieldMethodCall).isSolved());
+ }
+
+ @Test
+ public void staticMethodCallsFromInnerClasses() {
+ ClassOrInterfaceDeclaration clazz = ((JavaParserClassDeclaration) typeSolver.solveType("InnerClassDotExpressions")).getWrappedNode();
+ MethodDeclaration mainMethod = Navigator.demandMethod(clazz, "main");
+ JavaParserFacade javaParserFacade = JavaParserFacade.get(typeSolver);
+
+ MethodCallExpr methodCall = Navigator.findMethodCall(mainMethod, "methodCall").get();
+ MethodCallExpr innerMethodCall = Navigator.findMethodCall(mainMethod, "innerMethodCall").get();
+ MethodCallExpr innerInnerMethodCall = Navigator.findMethodCall(mainMethod, "innerInnerMethodCall").get();
+
+ assertEquals(true, javaParserFacade.solve(methodCall).isSolved());
+ assertEquals(true, javaParserFacade.solve(innerMethodCall).isSolved());
+ assertEquals(true, javaParserFacade.solve(innerInnerMethodCall).isSolved());
+ }
+
+ @Test
+ public void staticFieldCallsFromInnerClasses() {
+ ClassOrInterfaceDeclaration clazz = ((JavaParserClassDeclaration) typeSolver.solveType("InnerStaticClassFieldDotExpressions")).getWrappedNode();
+ MethodDeclaration mainMethod = Navigator.demandMethod(clazz, "main");
+ JavaParserFacade javaParserFacade = JavaParserFacade.get(typeSolver);
+
+ MethodCallExpr methodCallWithNestedStaticFieldParam = Navigator.findMethodCall(mainMethod, "parseInt").get();
+
+ assertEquals(true, javaParserFacade.solve(methodCallWithNestedStaticFieldParam).isSolved());
+ }
+
+ @Test
+ public void packageStaticMethodCalls() {
+ ClassOrInterfaceDeclaration clazz = ((JavaParserClassDeclaration) typeSolver.solveType("PackageDotExpressions")).getWrappedNode();
+ MethodDeclaration mainMethod = Navigator.demandMethod(clazz, "main");
+ JavaParserFacade javaParserFacade = JavaParserFacade.get(typeSolver);
+
+ MethodCallExpr staticMethodCall = Navigator.findMethodCall(mainMethod, "staticMethod").get();
+
+ MethodCallExpr methodCall = Navigator.findMethodCall(mainMethod, "methodCall").get();
+ MethodCallExpr innerMethodCall = Navigator.findMethodCall(mainMethod, "innerMethodCall").get();
+ MethodCallExpr innerInnerMethodCall = Navigator.findMethodCall(mainMethod, "innerInnerMethodCall").get();
+
+ MethodCallExpr firstFieldMethodCall = Navigator.findMethodCall(mainMethod, "firstContainerMethod").get();
+ MethodCallExpr secondFieldMethodCall = Navigator.findMethodCall(mainMethod, "secondContainerMethod").get();
+ MethodCallExpr thirdFieldMethodCall = Navigator.findMethodCall(mainMethod, "thirdContainerMethod").get();
+
+ assertEquals(true, javaParserFacade.solve(staticMethodCall).isSolved());
+
+ assertEquals(true, javaParserFacade.solve(methodCall).isSolved());
+ assertEquals(true, javaParserFacade.solve(innerMethodCall).isSolved());
+ assertEquals(true, javaParserFacade.solve(innerInnerMethodCall).isSolved());
+
+ assertEquals(true, javaParserFacade.solve(firstFieldMethodCall).isSolved());
+ assertEquals(true, javaParserFacade.solve(secondFieldMethodCall).isSolved());
+ assertEquals(true, javaParserFacade.solve(thirdFieldMethodCall).isSolved());
+ }
+}