Skip to content

Commit

Permalink
issue80: comment tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomassetti committed Oct 13, 2016
1 parent b2ba60a commit ea621e4
Showing 1 changed file with 35 additions and 240 deletions.
Expand Up @@ -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 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 combinedTypeSolver = new CombinedTypeSolver();
combinedTypeSolver.add(new JreTypeSolver()); combinedTypeSolver.add(new JreTypeSolver());
combinedTypeSolver.add(new JavaParserTypeSolver(src)); combinedTypeSolver.add(new JavaParserTypeSolver(src));
combinedTypeSolver.add(new JavaParserTypeSolver(adaptPath(new File("src/test/resources/javaparser_new_src/javaparser-generated-sources")))); combinedTypeSolver.add(new JavaParserTypeSolver(adaptPath(new File("src/test/resources/javaparser_new_src/javaparser-generated-sources"))));
SourceFileInfoExtractor sourceFileInfoExtractor = new SourceFileInfoExtractor(); return combinedTypeSolver;
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);
} }


private static final boolean DEBUG = true; private CompilationUnit parse(String fileName) throws IOException, ParseException {

private void parse(String fileName) throws IOException, ParseException {
File sourceFile = new File(src.getAbsolutePath() + "/" + fileName + ".java"); File sourceFile = new File(src.getAbsolutePath() + "/" + fileName + ".java");
OutputStream outErrStream = new ByteArrayOutputStream(); CompilationUnit cu = JavaParser.parse(sourceFile);
PrintStream outErr = new PrintStream(outErrStream); return cu;

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<Math.min(outputLines.length, expectedLines.length); i++) {
assertEquals("Line " + (i+1) + " of " + path + " is different from what is expected", expectedLines[i].trim(), outputLines[i].trim());
}

assertEquals(expectedLines.length, outputLines.length);

JavaParserFacade.clearInstances();
}

// @Test
// public void parseUtilsUtils() throws IOException, ParseException {
// parse("com/github/javaparser/utils/Utils");
// }
//
// @Test
// public void parseCommentsInserter() throws IOException, ParseException {
// parse("com/github/javaparser/CommentsInserter");
// }

@Test
public void parsePositionUtils() throws IOException, ParseException {
parse("com/github/javaparser/utils/PositionUtils");
} }


// @Test // @Test
// public void parseAstStmts() throws IOException, ParseException { // public void o1TypeIsCorrect() throws IOException, ParseException {
// parse("com/github/javaparser/ast/stmt/AssertStmt"); // CompilationUnit cu = parse("com/github/javaparser/utils/PositionUtils");
// parse("com/github/javaparser/ast/stmt/BlockStmt"); // NameExpr o1 = Navigator.findAllNodesOfGivenClass(cu, NameExpr.class).stream().filter(it -> it.getName()!=null && it.getName().equals("o1")).findFirst().get();
// parse("com/github/javaparser/ast/stmt/BreakStmt"); // System.out.println(JavaParserFacade.get(TYPESOLVER).solve(o1).getCorrespondingDeclaration().getType());
// parse("com/github/javaparser/ast/stmt/CatchClause");
// parse("com/github/javaparser/ast/stmt/ContinueStmt");
// parse("com/github/javaparser/ast/stmt/DoStmt");
// parse("com/github/javaparser/ast/stmt/EmptyStmt");
// parse("com/github/javaparser/ast/stmt/ExplicitConstructorInvocationStmt");
// parse("com/github/javaparser/ast/stmt/ExpressionStmt");
// parse("com/github/javaparser/ast/stmt/ForStmt");
// parse("com/github/javaparser/ast/stmt/ForeachStmt");
// parse("com/github/javaparser/ast/stmt/IfStmt");
// parse("com/github/javaparser/ast/stmt/LabeledStmt");
// parse("com/github/javaparser/ast/stmt/ReturnStmt");
// parse("com/github/javaparser/ast/stmt/Statement");
// parse("com/github/javaparser/ast/stmt/SwitchEntryStmt");
// parse("com/github/javaparser/ast/stmt/SwitchStmt");
// parse("com/github/javaparser/ast/stmt/SynchronizedStmt");
// parse("com/github/javaparser/ast/stmt/ThrowStmt");
// parse("com/github/javaparser/ast/stmt/TryStmt");
// parse("com/github/javaparser/ast/stmt/TypeDeclarationStmt");
// parse("com/github/javaparser/ast/stmt/WhileStmt");
// } // }
// //
// @Test // @Test
// public void parseAstExprs() throws IOException, ParseException { // public void o2TypeIsCorrect() throws IOException, ParseException {
// parse("com/github/javaparser/ast/expr/AnnotationExpr"); // CompilationUnit cu = parse("com/github/javaparser/utils/PositionUtils");
// parse("com/github/javaparser/ast/expr/ArrayAccessExpr"); // NameExpr o2 = Navigator.findAllNodesOfGivenClass(cu, NameExpr.class).stream().filter(it -> it.getName()!=null && it.getName().equals("o2")).findFirst().get();
// parse("com/github/javaparser/ast/expr/ArrayCreationExpr"); // System.out.println(JavaParserFacade.get(TYPESOLVER).solve(o2).getCorrespondingDeclaration().getType());
// 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");
// } // }
// //
// // To calculate the type of o1 and o2 I need to first calculate the type of the lambda
// @Test // @Test
// public void parseAstBody() throws IOException, ParseException { // public void lambdaTypeIsCorrect() throws IOException, ParseException {
// parse("com/github/javaparser/ast/body/AnnotationDeclaration"); // CompilationUnit cu = parse("com/github/javaparser/utils/PositionUtils");
// parse("com/github/javaparser/ast/body/AnnotationMemberDeclaration"); // LambdaExpr lambda = Navigator.findAllNodesOfGivenClass(cu, LambdaExpr.class).stream().filter(it -> it.getRange().begin.line == 50).findFirst().get();
// parse("com/github/javaparser/ast/body/BodyDeclaration"); // System.out.println(JavaParserFacade.get(TYPESOLVER).getType(lambda));
// 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");
// } // }


@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<T>", 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());
}

} }

0 comments on commit ea621e4

Please sign in to comment.