blob: cf5e5802bd31aacf3712dcf01ec762326e33db98 [file] [log] [blame]
/*
* Copyright 2016 Federico Tomassetti
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.javaparser.symbolsolver.javaparsermodel.declarations;
import com.github.javaparser.symbolsolver.AbstractTest;
import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver;
import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver;
import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import static org.junit.Assert.assertEquals;
public class JavaParserInterfaceDeclarationTest extends AbstractTest {
private TypeSolver typeSolver;
@Before
public void setup() {
File srcNewCode = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core"));
CombinedTypeSolver combinedTypeSolverNewCode = new CombinedTypeSolver();
combinedTypeSolverNewCode.add(new ReflectionTypeSolver());
combinedTypeSolverNewCode.add(new JavaParserTypeSolver(srcNewCode));
combinedTypeSolverNewCode.add(new JavaParserTypeSolver(adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-generated-sources"))));
typeSolver = combinedTypeSolverNewCode;
}
///
/// Test misc
///
@Test
public void testIsClass() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(false, nodeWithAnnotations.isClass());
}
@Test
public void testIsInterface() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(true, nodeWithAnnotations.isInterface());
}
@Test
public void testIsEnum() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(false, nodeWithAnnotations.isEnum());
}
@Test
public void testIsTypeVariable() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(false, nodeWithAnnotations.isTypeParameter());
}
@Test
public void testIsType() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(true, nodeWithAnnotations.isType());
}
@Test
public void testAsType() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(nodeWithAnnotations, nodeWithAnnotations.asType());
}
@Test(expected = UnsupportedOperationException.class)
public void testAsClass() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(nodeWithAnnotations, nodeWithAnnotations.asClass());
}
@Test
public void testAsInterface() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(nodeWithAnnotations, nodeWithAnnotations.asInterface());
}
@Test(expected = UnsupportedOperationException.class)
public void testAsEnum() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
nodeWithAnnotations.asEnum();
}
@Test
public void testGetPackageName() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals("com.github.javaparser.ast.nodeTypes", nodeWithAnnotations.getPackageName());
}
@Test
public void testGetClassName() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals("NodeWithAnnotations", nodeWithAnnotations.getClassName());
}
@Test
public void testGetQualifiedName() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations", nodeWithAnnotations.getQualifiedName());
}
///
/// Test ancestors
///
/*@Test
public void testGetSuperclassWithoutTypeParameters() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals("com.github.javaparser.ast.Node", compilationUnit.getSuperClass().getQualifiedName());
}
@Test
public void testGetSuperclassWithTypeParameters() {
JavaParserClassDeclaration compilationUnit = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
assertEquals("com.github.javaparser.ast.body.BodyDeclaration", compilationUnit.getSuperClass().getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", compilationUnit.getSuperClass().typeParametersMap().getValueBySignature("com.github.javaparser.ast.body.BodyDeclaration.T").get().asReferenceType().getQualifiedName());
}
@Test
public void testGetAllSuperclassesWithoutTypeParameters() {
JavaParserClassDeclaration cu = (JavaParserClassDeclaration) typeSolver.solveType("com.github.javaparser.ast.CompilationUnit");
assertEquals(ImmutableSet.of("com.github.javaparser.ast.Node", "java.lang.Object"), cu.getAllSuperClasses().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
}
@Test
public void testGetAllSuperclassesWithTypeParameters() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
assertEquals(3, constructorDeclaration.getAllSuperClasses().size());
ReferenceType ancestor = null;
ancestor = constructorDeclaration.getAllSuperClasses().get(0);
assertEquals("com.github.javaparser.ast.body.BodyDeclaration", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.body.BodyDeclaration.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAllSuperClasses().get(1);
assertEquals("com.github.javaparser.ast.Node", ancestor.getQualifiedName());
ancestor = constructorDeclaration.getAllSuperClasses().get(2);
assertEquals("java.lang.Object", ancestor.getQualifiedName());
}
@Test
public void testGetInterfacesWithoutParameters() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(ImmutableSet.of(), compilationUnit.getInterfaces().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
JavaParserClassDeclaration coid = (JavaParserClassDeclaration) typeSolver.solveType("com.github.javaparser.ast.body.ClassOrInterfaceDeclaration");
assertEquals(ImmutableSet.of("com.github.javaparser.ast.DocumentableNode"), coid.getInterfaces().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
}
@Test
public void testGetInterfacesWithParameters() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
assertEquals(7, constructorDeclaration.getInterfaces().size());
ReferenceType interfaze = null;
interfaze = constructorDeclaration.getInterfaces().get(0);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getInterfaces().get(1);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithDeclaration", interfaze.getQualifiedName());
interfaze = constructorDeclaration.getInterfaces().get(2);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithName", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithName.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getInterfaces().get(3);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getInterfaces().get(4);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithParameters", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithParameters.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getInterfaces().get(5);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getInterfaces().get(6);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.T").get().asReferenceType().getQualifiedName());
}
@Test
public void testGetAllInterfacesWithoutParameters() {
JavaParserInterfaceDeclaration nodeWithAnnotations = (JavaParserInterfaceDeclaration) typeSolver.solveType("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations");
assertEquals(ImmutableSet.of("java.lang.Cloneable"), compilationUnit.getAllInterfaces().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
JavaParserClassDeclaration coid = (JavaParserClassDeclaration) typeSolver.solveType("com.github.javaparser.ast.body.ClassOrInterfaceDeclaration");
assertEquals(ImmutableSet.of("java.lang.Cloneable", "com.github.javaparser.ast.NamedNode", "com.github.javaparser.ast.body.AnnotableNode", "com.github.javaparser.ast.DocumentableNode"), coid.getAllInterfaces().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
}
@Test
public void testGetAllInterfacesWithParameters() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
assertEquals(9, constructorDeclaration.getAllInterfaces().size());
ReferenceType interfaze = null;
interfaze = constructorDeclaration.getAllInterfaces().get(0);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getAllInterfaces().get(1);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithDeclaration", interfaze.getQualifiedName());
interfaze = constructorDeclaration.getAllInterfaces().get(2);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithName", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithName.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getAllInterfaces().get(3);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getAllInterfaces().get(4);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithParameters", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithParameters.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getAllInterfaces().get(5);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getAllInterfaces().get(6);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.T").get().asReferenceType().getQualifiedName());
interfaze = constructorDeclaration.getAllInterfaces().get(7);
assertEquals("java.lang.Cloneable", interfaze.getQualifiedName());
interfaze = constructorDeclaration.getAllInterfaces().get(8);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations", interfaze.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.T").get().asReferenceType().getQualifiedName());
}
@Test
public void testGetAncestorsWithTypeParameters() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
assertEquals(8, constructorDeclaration.getAncestors().size());
ReferenceType ancestor = null;
ancestor = constructorDeclaration.getAncestors().get(0);
assertEquals("com.github.javaparser.ast.body.BodyDeclaration", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.body.BodyDeclaration.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAncestors().get(1);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAncestors().get(2);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithDeclaration", ancestor.getQualifiedName());
ancestor = constructorDeclaration.getAncestors().get(3);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithName", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithName.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAncestors().get(4);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAncestors().get(5);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithParameters", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithParameters.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAncestors().get(6);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAncestors().get(7);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.T").get().asReferenceType().getQualifiedName());
}
@Test
public void testGetAllAncestorsWithoutTypeParameters() {
JavaParserClassDeclaration cu = (JavaParserClassDeclaration) typeSolver.solveType("com.github.javaparser.ast.CompilationUnit");
assertEquals(ImmutableSet.of("java.lang.Cloneable", "com.github.javaparser.ast.Node", "java.lang.Object"), cu.getAllAncestors().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
}
@Test
public void testGetAllAncestorsWithTypeParameters() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
assertEquals(12, constructorDeclaration.getAllAncestors().size());
ReferenceType ancestor = null;
ancestor = constructorDeclaration.getAllAncestors().get(0);
assertEquals("com.github.javaparser.ast.body.BodyDeclaration", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.body.BodyDeclaration.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(1);
assertEquals("com.github.javaparser.ast.Node", ancestor.getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(2);
assertEquals("java.lang.Cloneable", ancestor.getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(3);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(4);
assertEquals("java.lang.Object", ancestor.getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(5);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(6);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithDeclaration", ancestor.getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(7);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithName", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithName.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(8);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(9);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithParameters", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithParameters.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(10);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.T").get().asReferenceType().getQualifiedName());
ancestor = constructorDeclaration.getAllAncestors().get(11);
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt", ancestor.getQualifiedName());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.T").get().asReferenceType().getQualifiedName());
}
///
/// Test fields
///
@Test
public void testGetFieldForExistingField() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
FieldDeclaration fieldDeclaration = null;
// declared field
fieldDeclaration = constructorDeclaration.getField("modifiers");
assertEquals("modifiers", fieldDeclaration.getName());
assertEquals("java.util.EnumSet", fieldDeclaration.getType().asReferenceType().getQualifiedName());
assertEquals(AccessLevel.PRIVATE, fieldDeclaration.accessLevel());
assertEquals(false, fieldDeclaration.isStatic());
// inherited field
fieldDeclaration = constructorDeclaration.getField("annotations");
assertEquals("annotations", fieldDeclaration.getName());
assertEquals("java.util.List", fieldDeclaration.getType().asReferenceType().getQualifiedName());
assertEquals(AccessLevel.PRIVATE, fieldDeclaration.accessLevel());
}
@Test(expected = UnsolvedSymbolException.class)
public void testGetFieldForUnexistingField() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
constructorDeclaration.getField("unexisting");
}
@Test
public void testGetAllFields() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
List<FieldDeclaration> allFields = constructorDeclaration.getAllFields();
assertEquals(16, allFields.size());
FieldDeclaration fieldDeclaration = null;
fieldDeclaration = allFields.get(0);
assertEquals("modifiers", fieldDeclaration.getName());
fieldDeclaration = allFields.get(1);
assertEquals("typeParameters", fieldDeclaration.getName());
fieldDeclaration = allFields.get(2);
assertEquals("name", fieldDeclaration.getName());
fieldDeclaration = allFields.get(3);
assertEquals("parameters", fieldDeclaration.getName());
fieldDeclaration = allFields.get(4);
assertEquals("throws_", fieldDeclaration.getName());
fieldDeclaration = allFields.get(5);
assertEquals("body", fieldDeclaration.getName());
fieldDeclaration = allFields.get(6);
assertEquals("annotations", fieldDeclaration.getName());
fieldDeclaration = allFields.get(7);
assertEquals("NODE_BY_BEGIN_POSITION", fieldDeclaration.getName());
fieldDeclaration = allFields.get(8);
assertEquals("range", fieldDeclaration.getName());
fieldDeclaration = allFields.get(9);
assertEquals("parentNode", fieldDeclaration.getName());
fieldDeclaration = allFields.get(10);
assertEquals("childrenNodes", fieldDeclaration.getName());
fieldDeclaration = allFields.get(11);
assertEquals("orphanComments", fieldDeclaration.getName());
fieldDeclaration = allFields.get(12);
assertEquals("userData", fieldDeclaration.getName());
fieldDeclaration = allFields.get(13);
assertEquals("comment", fieldDeclaration.getName());
fieldDeclaration = allFields.get(14);
assertEquals("ABSOLUTE_BEGIN_LINE", fieldDeclaration.getName());
fieldDeclaration = allFields.get(15);
assertEquals("ABSOLUTE_END_LINE", fieldDeclaration.getName());
}
@Test
public void testGetAllStaticFields() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
List<FieldDeclaration> allFields = constructorDeclaration.getAllStaticFields();
assertEquals(3, allFields.size());
FieldDeclaration fieldDeclaration = null;
fieldDeclaration = allFields.get(0);
assertEquals("NODE_BY_BEGIN_POSITION", fieldDeclaration.getName());
fieldDeclaration = allFields.get(1);
assertEquals("ABSOLUTE_BEGIN_LINE", fieldDeclaration.getName());
fieldDeclaration = allFields.get(2);
assertEquals("ABSOLUTE_END_LINE", fieldDeclaration.getName());
}
@Test
public void testGetAllNonStaticFields() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
List<FieldDeclaration> allFields = constructorDeclaration.getAllNonStaticFields();
assertEquals(13, allFields.size());
FieldDeclaration fieldDeclaration = null;
fieldDeclaration = allFields.get(0);
assertEquals("modifiers", fieldDeclaration.getName());
fieldDeclaration = allFields.get(1);
assertEquals("typeParameters", fieldDeclaration.getName());
fieldDeclaration = allFields.get(2);
assertEquals("name", fieldDeclaration.getName());
fieldDeclaration = allFields.get(3);
assertEquals("parameters", fieldDeclaration.getName());
fieldDeclaration = allFields.get(4);
assertEquals("throws_", fieldDeclaration.getName());
fieldDeclaration = allFields.get(5);
assertEquals("body", fieldDeclaration.getName());
fieldDeclaration = allFields.get(6);
assertEquals("annotations", fieldDeclaration.getName());
fieldDeclaration = allFields.get(7);
assertEquals("range", fieldDeclaration.getName());
fieldDeclaration = allFields.get(8);
assertEquals("parentNode", fieldDeclaration.getName());
fieldDeclaration = allFields.get(9);
assertEquals("childrenNodes", fieldDeclaration.getName());
fieldDeclaration = allFields.get(10);
assertEquals("orphanComments", fieldDeclaration.getName());
fieldDeclaration = allFields.get(11);
assertEquals("userData", fieldDeclaration.getName());
fieldDeclaration = allFields.get(12);
assertEquals("comment", fieldDeclaration.getName());
}
@Test
public void testGetDeclaredFields() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
List<FieldDeclaration> allFields = constructorDeclaration.getDeclaredFields();
assertEquals(6, allFields.size());
FieldDeclaration fieldDeclaration = null;
fieldDeclaration = allFields.get(0);
assertEquals("modifiers", fieldDeclaration.getName());
fieldDeclaration = allFields.get(1);
assertEquals("typeParameters", fieldDeclaration.getName());
fieldDeclaration = allFields.get(2);
assertEquals("name", fieldDeclaration.getName());
fieldDeclaration = allFields.get(3);
assertEquals("parameters", fieldDeclaration.getName());
fieldDeclaration = allFields.get(4);
assertEquals("throws_", fieldDeclaration.getName());
fieldDeclaration = allFields.get(5);
assertEquals("body", fieldDeclaration.getName());
}
///
/// Test methods
///
@Test
public void testGetDeclaredMethods() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
Set<MethodDeclaration> allMethods = constructorDeclaration.getDeclaredMethods();
assertEquals(20, allMethods.size());
List<MethodDeclaration> sortedMethods = allMethods.stream()
.sorted((o1, o2) -> o1.getQualifiedSignature().compareTo(o2.getQualifiedSignature()))
.collect(Collectors.toList());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)", sortedMethods.get(0).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)", sortedMethods.get(1).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getBody()", sortedMethods.get(2).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString()", sortedMethods.get(3).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString(boolean, boolean)", sortedMethods.get(4).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString(boolean, boolean, boolean)", sortedMethods.get(5).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getJavaDoc()", sortedMethods.get(6).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getModifiers()", sortedMethods.get(7).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getName()", sortedMethods.get(8).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getNameExpr()", sortedMethods.get(9).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getParameters()", sortedMethods.get(10).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getThrows()", sortedMethods.get(11).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getTypeParameters()", sortedMethods.get(12).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setBody(com.github.javaparser.ast.stmt.BlockStmt)", sortedMethods.get(13).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setModifiers(java.util.EnumSet<com.github.javaparser.ast.Modifier>)", sortedMethods.get(14).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setName(java.lang.String)", sortedMethods.get(15).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setNameExpr(com.github.javaparser.ast.expr.NameExpr)", sortedMethods.get(16).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setParameters(java.util.List<com.github.javaparser.ast.body.Parameter>)", sortedMethods.get(17).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setThrows(java.util.List<com.github.javaparser.ast.type.ReferenceType>)", sortedMethods.get(18).getQualifiedSignature());
assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setTypeParameters(java.util.List<com.github.javaparser.ast.type.TypeParameter>)", sortedMethods.get(19).getQualifiedSignature());
}
@Test
public void testGetAllMethods() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
Set<MethodUsage> allMethods = constructorDeclaration.getAllMethods();
List<MethodUsage> sortedMethods = allMethods.stream()
.sorted((o1, o2) -> o1.getQualifiedSignature().compareTo(o2.getQualifiedSignature()))
.collect(Collectors.toList());
List<String> signatures = sortedMethods.stream().map(m -> m.getQualifiedSignature()).collect(Collectors.toList());
assertEquals(ImmutableList.of("com.github.javaparser.ast.Node.addOrphanComment(com.github.javaparser.ast.comments.Comment)",
"com.github.javaparser.ast.Node.clone()",
"com.github.javaparser.ast.Node.contains(com.github.javaparser.ast.Node)",
"com.github.javaparser.ast.Node.equals(java.lang.Object)",
"com.github.javaparser.ast.Node.getAllContainedComments()",
"com.github.javaparser.ast.Node.getBegin()",
"com.github.javaparser.ast.Node.getChildrenNodes()",
"com.github.javaparser.ast.Node.getComment()",
"com.github.javaparser.ast.Node.getEnd()",
"com.github.javaparser.ast.Node.getNodesByType(java.lang.Class<N>)",
"com.github.javaparser.ast.Node.getOrphanComments()",
"com.github.javaparser.ast.Node.getParentNode()",
"com.github.javaparser.ast.Node.getParentNodeOfType(java.lang.Class<T>)",
"com.github.javaparser.ast.Node.getRange()",
"com.github.javaparser.ast.Node.getUserData(com.github.javaparser.ast.UserDataKey<M>)",
"com.github.javaparser.ast.Node.hasComment()",
"com.github.javaparser.ast.Node.hashCode()",
"com.github.javaparser.ast.Node.isPositionedAfter(com.github.javaparser.Position)",
"com.github.javaparser.ast.Node.isPositionedBefore(com.github.javaparser.Position)",
"com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)",
"com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)",
"com.github.javaparser.ast.Node.setBegin(com.github.javaparser.Position)",
"com.github.javaparser.ast.Node.setBlockComment(java.lang.String)",
"com.github.javaparser.ast.Node.setComment(com.github.javaparser.ast.comments.Comment)",
"com.github.javaparser.ast.Node.setEnd(com.github.javaparser.Position)",
"com.github.javaparser.ast.Node.setLineComment(java.lang.String)",
"com.github.javaparser.ast.Node.setParentNode(com.github.javaparser.ast.Node)",
"com.github.javaparser.ast.Node.setRange(com.github.javaparser.Range)",
"com.github.javaparser.ast.Node.setUserData(com.github.javaparser.ast.UserDataKey<M>, M)",
"com.github.javaparser.ast.Node.toString()",
"com.github.javaparser.ast.Node.toStringWithoutComments()",
"com.github.javaparser.ast.Node.tryAddImportToParentCompilationUnit(java.lang.Class<?>)",
"com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()",
"com.github.javaparser.ast.body.BodyDeclaration.setAnnotations(java.util.List<com.github.javaparser.ast.expr.AnnotationExpr>)",
"com.github.javaparser.ast.body.ConstructorDeclaration.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)",
"com.github.javaparser.ast.body.ConstructorDeclaration.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)",
"com.github.javaparser.ast.body.ConstructorDeclaration.getBody()",
"com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString()",
"com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString(boolean, boolean)",
"com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString(boolean, boolean, boolean)",
"com.github.javaparser.ast.body.ConstructorDeclaration.getJavaDoc()",
"com.github.javaparser.ast.body.ConstructorDeclaration.getModifiers()",
"com.github.javaparser.ast.body.ConstructorDeclaration.getName()",
"com.github.javaparser.ast.body.ConstructorDeclaration.getNameExpr()",
"com.github.javaparser.ast.body.ConstructorDeclaration.getParameters()",
"com.github.javaparser.ast.body.ConstructorDeclaration.getThrows()",
"com.github.javaparser.ast.body.ConstructorDeclaration.getTypeParameters()",
"com.github.javaparser.ast.body.ConstructorDeclaration.setBody(com.github.javaparser.ast.stmt.BlockStmt)",
"com.github.javaparser.ast.body.ConstructorDeclaration.setModifiers(java.util.EnumSet<com.github.javaparser.ast.Modifier>)",
"com.github.javaparser.ast.body.ConstructorDeclaration.setName(java.lang.String)",
"com.github.javaparser.ast.body.ConstructorDeclaration.setNameExpr(com.github.javaparser.ast.expr.NameExpr)",
"com.github.javaparser.ast.body.ConstructorDeclaration.setParameters(java.util.List<com.github.javaparser.ast.body.Parameter>)",
"com.github.javaparser.ast.body.ConstructorDeclaration.setThrows(java.util.List<com.github.javaparser.ast.type.ReferenceType>)",
"com.github.javaparser.ast.body.ConstructorDeclaration.setTypeParameters(java.util.List<com.github.javaparser.ast.type.TypeParameter>)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addAnnotation(java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addMarkerAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addMarkerAnnotation(java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addSingleMemberAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>, java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addSingleMemberAnnotation(java.lang.String, java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.getAnnotationByClass(java.lang.Class<? extends java.lang.annotation.Annotation>)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.getAnnotationByName(java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>)",
"com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.isAnnotationPresent(java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.createBody()",
"com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.setJavaDocComment(java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.addModifier(com.github.javaparser.ast.Modifier...)",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isAbstract()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isFinal()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isNative()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isPrivate()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isProtected()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isPublic()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isStatic()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isStrictfp()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isSynchronized()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isTransient()",
"com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isVolatile()",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.addAndGetParameter(com.github.javaparser.ast.body.Parameter)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.addAndGetParameter(com.github.javaparser.ast.type.Type, java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.addAndGetParameter(java.lang.Class<?>, java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.addAndGetParameter(java.lang.String, java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.addParameter(com.github.javaparser.ast.body.Parameter)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.addParameter(com.github.javaparser.ast.type.Type, java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.addParameter(java.lang.Class<?>, java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.addParameter(java.lang.String, java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.getParamByName(java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.getParamByType(java.lang.Class<?>)",
"com.github.javaparser.ast.nodeTypes.NodeWithParameters.getParamByType(java.lang.String)",
"com.github.javaparser.ast.nodeTypes.NodeWithThrowable.addThrows(com.github.javaparser.ast.type.ReferenceType)",
"com.github.javaparser.ast.nodeTypes.NodeWithThrowable.addThrows(java.lang.Class<? extends java.lang.Throwable>)",
"com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.Class<? extends java.lang.Throwable>)",
"com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.String)",
"java.lang.Object.finalize()",
"java.lang.Object.getClass()",
"java.lang.Object.notify()",
"java.lang.Object.notifyAll()",
"java.lang.Object.registerNatives()",
"java.lang.Object.wait()",
"java.lang.Object.wait(long)",
"java.lang.Object.wait(long, int)"), signatures);
}
///
/// Test constructors
///
@Test
public void testGetConstructors() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
List<ConstructorDeclaration> constructors = constructorDeclaration.getConstructors();
assertEquals(4, constructors.size());
assertEquals("ConstructorDeclaration()", constructors.get(0).getSignature());
assertEquals("ConstructorDeclaration(java.util.EnumSet<com.github.javaparser.ast.Modifier>, java.lang.String)", constructors.get(1).getSignature());
assertEquals("ConstructorDeclaration(java.util.EnumSet<com.github.javaparser.ast.Modifier>, java.util.List<com.github.javaparser.ast.expr.AnnotationExpr>, java.util.List<com.github.javaparser.ast.type.TypeParameter>, java.lang.String, java.util.List<com.github.javaparser.ast.body.Parameter>, java.util.List<com.github.javaparser.ast.type.ReferenceType>, com.github.javaparser.ast.stmt.BlockStmt)", constructors.get(2).getSignature());
assertEquals("ConstructorDeclaration(com.github.javaparser.Range, java.util.EnumSet<com.github.javaparser.ast.Modifier>, java.util.List<com.github.javaparser.ast.expr.AnnotationExpr>, java.util.List<com.github.javaparser.ast.type.TypeParameter>, java.lang.String, java.util.List<com.github.javaparser.ast.body.Parameter>, java.util.List<com.github.javaparser.ast.type.ReferenceType>, com.github.javaparser.ast.stmt.BlockStmt)", constructors.get(3).getSignature());
}
///
/// Resolution
///
//SymbolReference<MethodDeclaration> solveMethod(String name, List<Type> parameterTypes);
@Test
public void testSolveMethodExisting() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
SymbolReference<MethodDeclaration> res = null;
res = constructorDeclaration.solveMethod("isStatic", ImmutableList.of());
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isStatic()", res.getCorrespondingDeclaration().getQualifiedSignature());
res = constructorDeclaration.solveMethod("isThrows", ImmutableList.of(ReflectionFactory.typeUsageFor(RuntimeException.class.getClass(), typeSolverNewCode)));
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.Class<? extends java.lang.Throwable>)", res.getCorrespondingDeclaration().getQualifiedSignature());
res = constructorDeclaration.solveMethod("isThrows", ImmutableList.of(ReflectionFactory.typeUsageFor(String.class, typeSolverNewCode)));
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.String)", res.getCorrespondingDeclaration().getQualifiedSignature());
// This is solved because it is raw
res = constructorDeclaration.solveMethod("isThrows", ImmutableList.of(ReflectionFactory.typeUsageFor(Class.class, typeSolverNewCode)));
assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.Class<? extends java.lang.Throwable>)", res.getCorrespondingDeclaration().getQualifiedSignature());
}
@Test
public void testSolveMethodNotExisting() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
SymbolReference<MethodDeclaration> res = null;
res = constructorDeclaration.solveMethod("unexistingMethod", ImmutableList.of());
assertEquals(false, res.isSolved());
res = constructorDeclaration.solveMethod("isStatic", ImmutableList.of(PrimitiveType.BOOLEAN));
assertEquals(false, res.isSolved());
}
@Test
public void testSolveMethodNotExistingBecauseOfTypeParameters() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
SymbolReference<MethodDeclaration> res = null;
ReferenceType stringType = (ReferenceType) ReflectionFactory.typeUsageFor(String.class, typeSolverNewCode);
ReferenceType rawClassType = (ReferenceType) ReflectionFactory.typeUsageFor(Class.class, typeSolverNewCode);
ReferenceType classOfStringType = (ReferenceType) rawClassType.replaceTypeVariables("T", stringType);
res = constructorDeclaration.solveMethod("isThrows", ImmutableList.of(classOfStringType));
assertEquals(false, res.isSolved());
}
@Test
public void testSolveSymbolUnexisting() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
SymbolReference<? extends ValueDeclaration> res = constructorDeclaration.solveSymbol("unexisting", typeSolver);
assertEquals(false, res.isSolved());
}
@Test
public void testSolveSymbolToDeclaredField() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
SymbolReference<? extends ValueDeclaration> res = constructorDeclaration.solveSymbol("name", typeSolver);
assertEquals(true, res.isSolved());
assertEquals(true, res.getCorrespondingDeclaration().isField());
}
@Test
public void testSolveSymbolToInheritedPublicField() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
SymbolReference<? extends ValueDeclaration> res = constructorDeclaration.solveSymbol("NODE_BY_BEGIN_POSITION", typeSolver);
assertEquals(true, res.isSolved());
assertEquals(true, res.getCorrespondingDeclaration().isField());
}
@Test
public void testSolveSymbolToInheritedPrivateField() {
JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
SymbolReference<? extends ValueDeclaration> res = constructorDeclaration.solveSymbol("parentNode", typeSolver);
assertEquals(false, res.isSolved());
}
///
/// Assignability
///
// boolean isAssignableBy(Type type);
// boolean canBeAssignedTo(TypeDeclaration other)
// boolean isAssignableBy(TypeDeclaration other);
///
/// Annotations
///
// hasDirectlyAnnotation
// hasAnnotation
///
///
///
// List<TypeParameterDeclaration> getTypeParameters();
// AccessLevel accessLevel();
///
/// Containment
///
// Set<TypeDeclaration> internalTypes()
// Optional<TypeDeclaration> containerType()*/
}