1package com.github.javaparser.ast.type; 2 3import com.github.javaparser.JavaParser; 4import com.github.javaparser.ParseProblemException; 5import com.github.javaparser.ParseResult; 6import com.github.javaparser.ParserConfiguration; 7import com.github.javaparser.ast.expr.VariableDeclarationExpr; 8import com.github.javaparser.ast.validator.Java5Validator; 9import org.junit.Test; 10 11import static com.github.javaparser.JavaParser.parseType; 12import static com.github.javaparser.JavaParser.parseVariableDeclarationExpr; 13import static com.github.javaparser.ParseStart.VARIABLE_DECLARATION_EXPR; 14import static com.github.javaparser.ParserConfiguration.LanguageLevel.*; 15import static com.github.javaparser.Providers.provider; 16import static org.junit.Assert.*; 17 18public class TypeTest { 19 @Test 20 public void asString() { 21 assertEquals("int", typeAsString("int x")); 22 assertEquals("List<Long>", typeAsString("List<Long> x")); 23 assertEquals("String", typeAsString("@A String x")); 24 assertEquals("List<? extends Object>", typeAsString("List<? extends Object> x")); 25 } 26 27 @Test(expected = ParseProblemException.class) 28 public void primitiveTypeArgumentDefaultValidator() { 29 typeAsString("List<long> x;"); 30 } 31 32 @Test 33 public void primitiveTypeArgumentLenientValidator() { 34 ParserConfiguration config = new ParserConfiguration() 35 .setLanguageLevel(RAW); 36 config.getPostProcessors().add(new Java5Validator() {{ 37 remove(noPrimitiveGenericArguments); 38 }}.postProcessor()); 39 40 ParseResult<VariableDeclarationExpr> result = new JavaParser(config).parse( 41 VARIABLE_DECLARATION_EXPR, provider("List<long> x")); 42 assertTrue(result.isSuccessful()); 43 44 VariableDeclarationExpr decl = result.getResult().get(); 45 assertEquals("List<long>", decl.getVariable(0).getType().asString()); 46 } 47 48 private String typeAsString(String s) { 49 return parseVariableDeclarationExpr(s).getVariable(0).getType().asString(); 50 } 51 52 @Test 53 public void arrayType() { 54 Type type = parseType("int[]"); 55 assertTrue(type.isArrayType()); 56 ArrayType arrayType = type.asArrayType(); 57 final ArrayType[] s = new ArrayType[1]; 58 type.ifArrayType(t -> s[0] = t); 59 assertNotNull(s[0]); 60 } 61 62 @Test 63 public void issue1251() { 64 final Type type = parseType("TypeUtilsTest<String>.Tester"); 65 assertEquals("TypeUtilsTest<String>.Tester", type.toString()); 66 } 67 68} 69