| package com.github.javaparser.symbolsolver; |
| |
| import com.github.javaparser.JavaParser; |
| import com.github.javaparser.ast.expr.*; |
| import com.github.javaparser.resolution.types.ResolvedType; |
| import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade; |
| import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; |
| import com.github.javaparser.symbolsolver.resolution.AbstractResolutionTest; |
| import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| public class Issue343 extends AbstractResolutionTest{ |
| |
| private TypeSolver typeResolver; |
| private JavaParserFacade javaParserFacade; |
| |
| private ResolvedType getExpressionType(TypeSolver typeSolver, Expression expression) { |
| return JavaParserFacade.get(typeSolver).getType(expression); |
| } |
| |
| @Before |
| public void setup() { |
| typeResolver = new ReflectionTypeSolver(); |
| javaParserFacade = JavaParserFacade.get(typeResolver); |
| } |
| |
| @Test |
| public void resolveStringLiteralOutsideAST() { |
| assertEquals(javaParserFacade.classToResolvedType(String.class), getExpressionType(typeResolver, new StringLiteralExpr(""))); |
| } |
| |
| @Test |
| public void resolveIntegerLiteralOutsideAST() { |
| assertEquals(javaParserFacade.classToResolvedType(int.class), getExpressionType(typeResolver, new IntegerLiteralExpr(2))); |
| } |
| |
| @Test(expected = IllegalStateException.class) |
| public void toResolveDoubleWeNeedTheAST() { |
| getExpressionType(typeResolver, JavaParser.parseExpression("new Double[]{2.0d, 3.0d}[1]")); |
| } |
| |
| |
| @Test(expected = IllegalStateException.class) |
| public void toResolveFloatWeNeedTheAST() { |
| getExpressionType(typeResolver, JavaParser.parseExpression("new Float[]{2.0d, 3.0d}")); |
| } |
| |
| @Test |
| public void resolveMethodCallOnStringLiteralOutsideAST() { |
| assertEquals(javaParserFacade.classToResolvedType(int.class), getExpressionType(typeResolver, new MethodCallExpr(new StringLiteralExpr("hello"), "length"))); |
| } |
| |
| @Test(expected = IllegalStateException.class) |
| public void resolveLocaleOutsideAST() { |
| getExpressionType(typeResolver, new FieldAccessExpr(new NameExpr("Locale"), "US")); |
| } |
| } |