From ea621e4343085395a50e98692fed94b02a668e89 Mon Sep 17 00:00:00 2001 From: Federico Tomassetti Date: Thu, 13 Oct 2016 15:06:35 +0200 Subject: [PATCH] issue80: comment tests --- .../AnalyseNewJavaParserHelpersTest.java | 275 +++--------------- 1 file changed, 35 insertions(+), 240 deletions(-) diff --git a/java-symbol-solver-core/src/test/java/me/tomassetti/symbolsolver/resolution/AnalyseNewJavaParserHelpersTest.java b/java-symbol-solver-core/src/test/java/me/tomassetti/symbolsolver/resolution/AnalyseNewJavaParserHelpersTest.java index 0343c96fc2..609ed4883f 100644 --- a/java-symbol-solver-core/src/test/java/me/tomassetti/symbolsolver/resolution/AnalyseNewJavaParserHelpersTest.java +++ b/java-symbol-solver-core/src/test/java/me/tomassetti/symbolsolver/resolution/AnalyseNewJavaParserHelpersTest.java @@ -27,262 +27,57 @@ public class AnalyseNewJavaParserHelpersTest extends AbstractResolutionTest { private static final File src = adaptPath(new File("src/test/resources/javaparser_new_src/javaparser-core")); - private static SourceFileInfoExtractor getSourceFileInfoExtractor() { + private static TypeSolver TYPESOLVER = typeSolver(); + + private static TypeSolver typeSolver() { CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver(); combinedTypeSolver.add(new JreTypeSolver()); combinedTypeSolver.add(new JavaParserTypeSolver(src)); combinedTypeSolver.add(new JavaParserTypeSolver(adaptPath(new File("src/test/resources/javaparser_new_src/javaparser-generated-sources")))); - SourceFileInfoExtractor sourceFileInfoExtractor = new SourceFileInfoExtractor(); - sourceFileInfoExtractor.setTypeSolver(combinedTypeSolver); - sourceFileInfoExtractor.setPrintFileName(false); - sourceFileInfoExtractor.setVerbose(true); - return sourceFileInfoExtractor; - } - - private static SourceFileInfoExtractor sourceFileInfoExtractor = getSourceFileInfoExtractor(); - - static String readFile(File file) - throws IOException - { - byte[] encoded = Files.readAllBytes(Paths.get(file.getAbsolutePath())); - return new String(encoded, StandardCharsets.UTF_8); + return combinedTypeSolver; } - private static final boolean DEBUG = true; - - private void parse(String fileName) throws IOException, ParseException { + private CompilationUnit parse(String fileName) throws IOException, ParseException { File sourceFile = new File(src.getAbsolutePath() + "/" + fileName + ".java"); - OutputStream outErrStream = new ByteArrayOutputStream(); - PrintStream outErr = new PrintStream(outErrStream); - - sourceFileInfoExtractor.setOut(outErr); - sourceFileInfoExtractor.setErr(outErr); - sourceFileInfoExtractor.solveMethodCalls(sourceFile); - String output = outErrStream.toString(); - - String path = adaptPath(new File("src/test/resources/javaparser_methodcalls_expected_output")).getPath()+ "/" + fileName.replaceAll("/", "_")+ ".txt"; - File dstFile = new File(path); - - if (DEBUG && (sourceFileInfoExtractor.getKo() != 0 || sourceFileInfoExtractor.getUnsupported() != 0)){ - System.err.println(output); - } - - assertTrue("No failures expected when analyzing " + path, 0 == sourceFileInfoExtractor.getKo()); - assertTrue("No UnsupportedOperationException expected when analyzing " + path, 0 == sourceFileInfoExtractor.getUnsupported()); - - if (/*!dstFile.exists() ||*/ false) { - // If we need to update the file uncomment these lines - PrintWriter writer = new PrintWriter(dstFile.getAbsoluteFile(), "UTF-8"); - writer.print(output); - writer.close(); - } - - String expected = readFile(dstFile); - - String[] outputLines = output.split("\n"); - String[] expectedLines = expected.split("\n"); - - for (int i=0; i it.getName()!=null && it.getName().equals("o1")).findFirst().get(); +// System.out.println(JavaParserFacade.get(TYPESOLVER).solve(o1).getCorrespondingDeclaration().getType()); // } // // @Test -// public void parseAstExprs() throws IOException, ParseException { -// parse("com/github/javaparser/ast/expr/AnnotationExpr"); -// parse("com/github/javaparser/ast/expr/ArrayAccessExpr"); -// parse("com/github/javaparser/ast/expr/ArrayCreationExpr"); -// parse("com/github/javaparser/ast/expr/ArrayInitializerExpr"); -// parse("com/github/javaparser/ast/expr/AssignExpr"); -// parse("com/github/javaparser/ast/expr/BinaryExpr"); -// parse("com/github/javaparser/ast/expr/BooleanLiteralExpr"); -// parse("com/github/javaparser/ast/expr/CastExpr"); -// parse("com/github/javaparser/ast/expr/CharLiteralExpr"); -// parse("com/github/javaparser/ast/expr/ClassExpr"); -// parse("com/github/javaparser/ast/expr/ConditionalExpr"); -// parse("com/github/javaparser/ast/expr/DoubleLiteralExpr"); -// parse("com/github/javaparser/ast/expr/EnclosedExpr"); -// parse("com/github/javaparser/ast/expr/Expression"); -// parse("com/github/javaparser/ast/expr/FieldAccessExpr"); -// parse("com/github/javaparser/ast/expr/InstanceOfExpr"); -// parse("com/github/javaparser/ast/expr/IntegerLiteralExpr"); -// parse("com/github/javaparser/ast/expr/IntegerLiteralMinValueExpr"); -// parse("com/github/javaparser/ast/expr/LambdaExpr"); -// parse("com/github/javaparser/ast/expr/LiteralExpr"); -// parse("com/github/javaparser/ast/expr/LongLiteralExpr"); -// parse("com/github/javaparser/ast/expr/LongLiteralMinValueExpr"); -// parse("com/github/javaparser/ast/expr/MarkerAnnotationExpr"); -// parse("com/github/javaparser/ast/expr/MemberValuePair"); -// parse("com/github/javaparser/ast/expr/MethodCallExpr"); -// parse("com/github/javaparser/ast/expr/MethodReferenceExpr"); -// parse("com/github/javaparser/ast/expr/NameExpr"); -// parse("com/github/javaparser/ast/expr/NormalAnnotationExpr"); -// parse("com/github/javaparser/ast/expr/NullLiteralExpr"); -// parse("com/github/javaparser/ast/expr/ObjectCreationExpr"); -// parse("com/github/javaparser/ast/expr/QualifiedNameExpr"); -// parse("com/github/javaparser/ast/expr/SingleMemberAnnotationExpr"); -// parse("com/github/javaparser/ast/expr/StringLiteralExpr"); -// parse("com/github/javaparser/ast/expr/SuperExpr"); -// parse("com/github/javaparser/ast/expr/ThisExpr"); -// parse("com/github/javaparser/ast/expr/TypeExpr"); -// parse("com/github/javaparser/ast/expr/UnaryExpr"); -// parse("com/github/javaparser/ast/expr/VariableDeclarationExpr"); +// public void o2TypeIsCorrect() throws IOException, ParseException { +// CompilationUnit cu = parse("com/github/javaparser/utils/PositionUtils"); +// NameExpr o2 = Navigator.findAllNodesOfGivenClass(cu, NameExpr.class).stream().filter(it -> it.getName()!=null && it.getName().equals("o2")).findFirst().get(); +// System.out.println(JavaParserFacade.get(TYPESOLVER).solve(o2).getCorrespondingDeclaration().getType()); // } // +// // To calculate the type of o1 and o2 I need to first calculate the type of the lambda // @Test -// public void parseAstBody() throws IOException, ParseException { -// parse("com/github/javaparser/ast/body/AnnotationDeclaration"); -// parse("com/github/javaparser/ast/body/AnnotationMemberDeclaration"); -// parse("com/github/javaparser/ast/body/BodyDeclaration"); -// parse("com/github/javaparser/ast/body/ClassOrInterfaceDeclaration"); -// parse("com/github/javaparser/ast/body/ConstructorDeclaration"); -// parse("com/github/javaparser/ast/body/EmptyMemberDeclaration"); -// parse("com/github/javaparser/ast/body/EmptyTypeDeclaration"); -// parse("com/github/javaparser/ast/body/EnumConstantDeclaration"); -// parse("com/github/javaparser/ast/body/EnumDeclaration"); -// parse("com/github/javaparser/ast/body/FieldDeclaration"); -// parse("com/github/javaparser/ast/body/InitializerDeclaration"); -// parse("com/github/javaparser/ast/body/MethodDeclaration"); -// parse("com/github/javaparser/ast/body/Parameter"); -// parse("com/github/javaparser/ast/body/TypeDeclaration"); -// parse("com/github/javaparser/ast/body/VariableDeclarator"); -// parse("com/github/javaparser/ast/body/VariableDeclaratorId"); -// } -// -// @Test -// public void parseAstComments() throws IOException, ParseException { -// parse("com/github/javaparser/ast/comments/BlockComment"); -// parse("com/github/javaparser/ast/comments/Comment"); -// parse("com/github/javaparser/ast/comments/CommentsCollection"); -// parse("com/github/javaparser/ast/comments/JavadocComment"); -// parse("com/github/javaparser/ast/comments/LineComment"); -// } -// -// @Test -// public void parseAstRest() throws IOException, ParseException { -// parse("com/github/javaparser/ast/AccessSpecifier"); -// parse("com/github/javaparser/ast/ArrayBracketPair"); -// parse("com/github/javaparser/ast/ArrayCreationLevel"); -// parse("com/github/javaparser/ast/CompilationUnit"); -// parse("com/github/javaparser/ast/Example"); -// parse("com/github/javaparser/ast/ImportDeclaration"); -// parse("com/github/javaparser/ast/Modifier"); -// parse("com/github/javaparser/ast/Node"); -// parse("com/github/javaparser/ast/PackageDeclaration"); -// parse("com/github/javaparser/ast/UserDataKey"); -// } -// -// @Test -// public void parseAstNodeTypes() throws IOException, ParseException { -// parse("com/github/javaparser/ast/nodeTypes/NodeWithAnnotations"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithBlockStmt"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithBody"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithDeclaration"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithElementType"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithExtends"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithImplements"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithJavaDoc"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithMembers"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithModifiers"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithName"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithParameters"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithStatements"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithThrowable"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithType"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithTypeArguments"); -// parse("com/github/javaparser/ast/nodeTypes/NodeWithVariables"); -// } -// -// @Test -// public void parseAstTypes() throws IOException, ParseException { -// parse("com/github/javaparser/ast/type/ArrayType"); -// parse("com/github/javaparser/ast/type/ClassOrInterfaceType"); -// parse("com/github/javaparser/ast/type/IntersectionType"); -// parse("com/github/javaparser/ast/type/PrimitiveType"); -// parse("com/github/javaparser/ast/type/ReferenceType"); -// parse("com/github/javaparser/ast/type/Type"); -// parse("com/github/javaparser/ast/type/TypeParameter"); -// parse("com/github/javaparser/ast/type/UnionType"); -// parse("com/github/javaparser/ast/type/UnknownType"); -// parse("com/github/javaparser/ast/type/VoidType"); -// parse("com/github/javaparser/ast/type/WildcardType"); -// } -// -// @Test -// public void parseAstVisitor() throws IOException, ParseException { -// parse("com/github/javaparser/ast/visitor/CloneVisitor"); -// parse("com/github/javaparser/ast/visitor/DumpVisitor"); -// parse("com/github/javaparser/ast/visitor/EqualsVisitor"); -// parse("com/github/javaparser/ast/visitor/GenericVisitor"); -// parse("com/github/javaparser/ast/visitor/GenericVisitorAdapter"); -// parse("com/github/javaparser/ast/visitor/ModifierVisitorAdapter"); -// parse("com/github/javaparser/ast/visitor/TreeVisitor"); -// parse("com/github/javaparser/ast/visitor/VoidVisitor"); -// parse("com/github/javaparser/ast/visitor/VoidVisitorAdapter"); -// } -// -// @Test -// public void parseUtils() throws IOException, ParseException { -// parse("com/github/javaparser/utils/ClassUtils"); -// parse("com/github/javaparser/utils/Pair"); -// } -// -// @Test -// public void parseAllOtherNodes() throws IOException, ParseException { -// parse("com/github/javaparser/JavaParser"); -// parse("com/github/javaparser/ParseProblemException"); -// parse("com/github/javaparser/ParseResult"); -// parse("com/github/javaparser/ParseStart"); -// parse("com/github/javaparser/ParserConfiguration"); -// parse("com/github/javaparser/Position"); -// parse("com/github/javaparser/Problem"); -// parse("com/github/javaparser/Providers"); -// parse("com/github/javaparser/Range"); +// public void lambdaTypeIsCorrect() throws IOException, ParseException { +// CompilationUnit cu = parse("com/github/javaparser/utils/PositionUtils"); +// LambdaExpr lambda = Navigator.findAllNodesOfGivenClass(cu, LambdaExpr.class).stream().filter(it -> it.getRange().begin.line == 50).findFirst().get(); +// System.out.println(JavaParserFacade.get(TYPESOLVER).getType(lambda)); // } + @Test + public void nodesTypeIsCorrect() throws IOException, ParseException { + CompilationUnit cu = parse("com/github/javaparser/utils/PositionUtils"); + NameExpr nodes = Navigator.findAllNodesOfGivenClass(cu, NameExpr.class).stream().filter(it -> it.getName()!=null && it.getName().equals("nodes")).findFirst().get(); + TypeUsage typeUsage = JavaParserFacade.get(TYPESOLVER).solve(nodes).getCorrespondingDeclaration().getType(); + assertEquals("java.util.List", typeUsage.describe()); + assertEquals(1, typeUsage.asReferenceTypeUsage().parameters().size()); + assertEquals(true, typeUsage.asReferenceTypeUsage().parameters().get(0).isTypeVariable()); + assertEquals("T", typeUsage.asReferenceTypeUsage().parameters().get(0).asTypeParameter().getName()); + assertEquals(1, typeUsage.asReferenceTypeUsage().parameters().get(0).asTypeParameter().getBounds(TYPESOLVER).size()); + TypeParameter.Bound bound = typeUsage.asReferenceTypeUsage().parameters().get(0).asTypeParameter().getBounds(TYPESOLVER).get(0); + assertEquals(true, bound.isExtends()); + assertEquals("com.github.javaparser.ast.Node", bound.getType().describe()); + } + }