Issue186.java revision b54617e765d73b3ce0d187cf12ad8da382bce439
1package com.github.javaparser.symbolsolver; 2 3import com.github.javaparser.ParseException; 4import com.github.javaparser.ast.CompilationUnit; 5import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; 6import com.github.javaparser.ast.body.MethodDeclaration; 7import com.github.javaparser.ast.expr.Expression; 8import com.github.javaparser.ast.expr.LambdaExpr; 9import com.github.javaparser.ast.expr.MethodCallExpr; 10import com.github.javaparser.ast.stmt.ExpressionStmt; 11import com.github.javaparser.symbolsolver.javaparser.Navigator; 12import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; 13import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; 14import com.github.javaparser.symbolsolver.resolution.AbstractResolutionTest; 15import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; 16import org.junit.Test; 17 18import java.util.List; 19 20import static org.junit.Assert.assertEquals; 21 22public class Issue186 extends AbstractResolutionTest { 23 24 @Test 25 public void lambdaFlatMapIssue() { 26 CompilationUnit cu = parseSample("Issue186"); 27 ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "JavaTest"); 28 MethodDeclaration methodDeclaration = Navigator.demandMethod(clazz, "foo"); 29 MethodCallExpr methodCallExpr = Navigator.findMethodCall(methodDeclaration, "flatMap").get(); 30 TypeSolver typeSolver = new ReflectionTypeSolver(); 31 JavaParserFacade javaParserFacade = JavaParserFacade.get(typeSolver); 32 assertEquals("java.util.stream.Stream<java.lang.String>", javaParserFacade.getType(methodCallExpr).describe()); 33 34 } 35 36 @Test 37 public void lambdaPrimitivesIssue() { 38 CompilationUnit cu = parseSample("Issue186"); 39 ClassOrInterfaceDeclaration clazz = Navigator.demandClass(cu, "JavaTest"); 40 MethodDeclaration methodDeclaration = Navigator.demandMethod(clazz, "bar"); 41 List<LambdaExpr> lambdas = methodDeclaration.findAll(LambdaExpr.class); 42 TypeSolver typeSolver = new ReflectionTypeSolver(); 43 JavaParserFacade javaParserFacade = JavaParserFacade.get(typeSolver); 44 assertEquals("java.util.function.Predicate<? super java.lang.String>", javaParserFacade.getType(lambdas.get(0)).describe()); 45 assertEquals("java.util.function.Function<? super java.lang.String, ? extends java.lang.Integer>", javaParserFacade.getType(lambdas.get(1)).describe()); 46 assertEquals("java.util.function.Predicate<? super java.lang.Integer>", javaParserFacade.getType(lambdas.get(2)).describe()); 47 48 } 49 50} 51