Home | History | Annotate | Download | only in declarations
      1 /*
      2  * Copyright 2016 Federico Tomassetti
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  * http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.github.javaparser.symbolsolver.javaparsermodel.declarations;
     18 
     19 import com.github.javaparser.symbolsolver.AbstractTest;
     20 import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
     21 import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver;
     22 import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver;
     23 import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
     24 import org.junit.Before;
     25 import org.junit.Test;
     26 
     27 import java.io.File;
     28 
     29 import static org.junit.Assert.assertEquals;
     30 
     31 public class JavaParserEnumDeclarationTest extends AbstractTest {
     32 
     33     private TypeSolver typeSolver;
     34 
     35     @Before
     36     public void setup() {
     37         File srcNewCode = adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-core"));
     38         CombinedTypeSolver combinedTypeSolverNewCode = new CombinedTypeSolver();
     39         combinedTypeSolverNewCode.add(new ReflectionTypeSolver());
     40         combinedTypeSolverNewCode.add(new JavaParserTypeSolver(srcNewCode));
     41         combinedTypeSolverNewCode.add(new JavaParserTypeSolver(adaptPath(new File("src/test/test_sourcecode/javaparser_new_src/javaparser-generated-sources"))));
     42         typeSolver = combinedTypeSolverNewCode;
     43     }
     44 
     45     ///
     46     /// Test misc
     47     ///
     48 
     49     @Test
     50     public void testIsClass() {
     51         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
     52         assertEquals(false, modifier.isClass());
     53     }
     54 
     55     @Test
     56     public void testIsInterface() {
     57         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
     58         assertEquals(false, modifier.isInterface());
     59     }
     60 
     61     @Test
     62     public void testIsEnum() {
     63         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
     64         assertEquals(true, modifier.isEnum());
     65     }
     66 
     67     @Test
     68     public void testIsTypeVariable() {
     69         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
     70         assertEquals(false, modifier.isTypeParameter());
     71     }
     72 
     73     @Test
     74     public void testIsType() {
     75         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
     76         assertEquals(true, modifier.isType());
     77     }
     78 
     79     @Test
     80     public void testAsType() {
     81         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
     82         assertEquals(modifier, modifier.asType());
     83     }
     84 
     85     @Test(expected = UnsupportedOperationException.class)
     86     public void testAsClass() {
     87         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
     88         modifier.asClass();
     89     }
     90 
     91     @Test(expected = UnsupportedOperationException.class)
     92     public void testAsInterface() {
     93         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
     94         modifier.asInterface();
     95     }
     96 
     97     @Test
     98     public void testAsEnum() {
     99         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
    100         assertEquals(modifier, modifier.asEnum());
    101     }
    102 
    103     @Test
    104     public void testGetPackageName() {
    105         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
    106         assertEquals("com.github.javaparser.ast", modifier.getPackageName());
    107     }
    108 
    109     @Test
    110     public void testGetClassName() {
    111         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
    112         assertEquals("Modifier", modifier.getClassName());
    113     }
    114 
    115     @Test
    116     public void testGetQualifiedName() {
    117         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
    118         assertEquals("com.github.javaparser.ast.Modifier", modifier.getQualifiedName());
    119     }
    120 
    121     ///
    122     /// Test ancestors
    123     ///
    124 
    125     /*@Test
    126     public void testGetSuperclassWithoutTypeParameters() {
    127         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
    128         assertEquals("com.github.javaparser.ast.Node", compilationUnit.getSuperClass().getQualifiedName());
    129     }
    130 
    131     @Test
    132     public void testGetSuperclassWithTypeParameters() {
    133         JavaParserClassDeclaration compilationUnit = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    134         assertEquals("com.github.javaparser.ast.body.BodyDeclaration", compilationUnit.getSuperClass().getQualifiedName());
    135         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", compilationUnit.getSuperClass().typeParametersMap().getValueBySignature("com.github.javaparser.ast.body.BodyDeclaration.T").get().asReferenceType().getQualifiedName());
    136     }
    137 
    138     @Test
    139     public void testGetAllSuperclassesWithoutTypeParameters() {
    140         JavaParserClassDeclaration cu = (JavaParserClassDeclaration) typeSolver.solveType("com.github.javaparser.ast.CompilationUnit");
    141         assertEquals(ImmutableSet.of("com.github.javaparser.ast.Node", "java.lang.Object"), cu.getAllSuperClasses().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
    142     }
    143 
    144     @Test
    145     public void testGetAllSuperclassesWithTypeParameters() {
    146         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    147         assertEquals(3, constructorDeclaration.getAllSuperClasses().size());
    148 
    149         ReferenceType ancestor = null;
    150 
    151         ancestor = constructorDeclaration.getAllSuperClasses().get(0);
    152         assertEquals("com.github.javaparser.ast.body.BodyDeclaration", ancestor.getQualifiedName());
    153         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.body.BodyDeclaration.T").get().asReferenceType().getQualifiedName());
    154 
    155         ancestor = constructorDeclaration.getAllSuperClasses().get(1);
    156         assertEquals("com.github.javaparser.ast.Node", ancestor.getQualifiedName());
    157 
    158         ancestor = constructorDeclaration.getAllSuperClasses().get(2);
    159         assertEquals("java.lang.Object", ancestor.getQualifiedName());
    160     }
    161 
    162     @Test
    163     public void testGetInterfacesWithoutParameters() {
    164         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
    165         assertEquals(ImmutableSet.of(), compilationUnit.getInterfaces().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
    166 
    167         JavaParserClassDeclaration coid = (JavaParserClassDeclaration) typeSolver.solveType("com.github.javaparser.ast.body.ClassOrInterfaceDeclaration");
    168         assertEquals(ImmutableSet.of("com.github.javaparser.ast.DocumentableNode"), coid.getInterfaces().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
    169     }
    170 
    171     @Test
    172     public void testGetInterfacesWithParameters() {
    173         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    174         assertEquals(7, constructorDeclaration.getInterfaces().size());
    175 
    176         ReferenceType interfaze = null;
    177 
    178         interfaze = constructorDeclaration.getInterfaces().get(0);
    179         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc", interfaze.getQualifiedName());
    180         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.T").get().asReferenceType().getQualifiedName());
    181 
    182         interfaze = constructorDeclaration.getInterfaces().get(1);
    183         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithDeclaration", interfaze.getQualifiedName());
    184 
    185         interfaze = constructorDeclaration.getInterfaces().get(2);
    186         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithName", interfaze.getQualifiedName());
    187         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithName.T").get().asReferenceType().getQualifiedName());
    188 
    189         interfaze = constructorDeclaration.getInterfaces().get(3);
    190         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers", interfaze.getQualifiedName());
    191         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.T").get().asReferenceType().getQualifiedName());
    192 
    193         interfaze = constructorDeclaration.getInterfaces().get(4);
    194         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithParameters", interfaze.getQualifiedName());
    195         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithParameters.T").get().asReferenceType().getQualifiedName());
    196 
    197         interfaze = constructorDeclaration.getInterfaces().get(5);
    198         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable", interfaze.getQualifiedName());
    199         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.T").get().asReferenceType().getQualifiedName());
    200 
    201         interfaze = constructorDeclaration.getInterfaces().get(6);
    202         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt", interfaze.getQualifiedName());
    203         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.T").get().asReferenceType().getQualifiedName());
    204     }
    205 
    206     @Test
    207     public void testGetAllInterfacesWithoutParameters() {
    208         JavaParserEnumDeclaration modifier = (JavaParserEnumDeclaration) typeSolver.solveType("com.github.javaparser.ast.Modifier");
    209         assertEquals(ImmutableSet.of("java.lang.Cloneable"), compilationUnit.getAllInterfaces().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
    210 
    211         JavaParserClassDeclaration coid = (JavaParserClassDeclaration) typeSolver.solveType("com.github.javaparser.ast.body.ClassOrInterfaceDeclaration");
    212         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()));
    213     }
    214 
    215     @Test
    216     public void testGetAllInterfacesWithParameters() {
    217         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    218         assertEquals(9, constructorDeclaration.getAllInterfaces().size());
    219 
    220         ReferenceType interfaze = null;
    221 
    222         interfaze = constructorDeclaration.getAllInterfaces().get(0);
    223         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc", interfaze.getQualifiedName());
    224         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.T").get().asReferenceType().getQualifiedName());
    225 
    226         interfaze = constructorDeclaration.getAllInterfaces().get(1);
    227         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithDeclaration", interfaze.getQualifiedName());
    228 
    229         interfaze = constructorDeclaration.getAllInterfaces().get(2);
    230         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithName", interfaze.getQualifiedName());
    231         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithName.T").get().asReferenceType().getQualifiedName());
    232 
    233         interfaze = constructorDeclaration.getAllInterfaces().get(3);
    234         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers", interfaze.getQualifiedName());
    235         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.T").get().asReferenceType().getQualifiedName());
    236 
    237         interfaze = constructorDeclaration.getAllInterfaces().get(4);
    238         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithParameters", interfaze.getQualifiedName());
    239         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithParameters.T").get().asReferenceType().getQualifiedName());
    240 
    241         interfaze = constructorDeclaration.getAllInterfaces().get(5);
    242         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable", interfaze.getQualifiedName());
    243         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.T").get().asReferenceType().getQualifiedName());
    244 
    245         interfaze = constructorDeclaration.getAllInterfaces().get(6);
    246         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt", interfaze.getQualifiedName());
    247         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.T").get().asReferenceType().getQualifiedName());
    248 
    249         interfaze = constructorDeclaration.getAllInterfaces().get(7);
    250         assertEquals("java.lang.Cloneable", interfaze.getQualifiedName());
    251 
    252         interfaze = constructorDeclaration.getAllInterfaces().get(8);
    253         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations", interfaze.getQualifiedName());
    254         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", interfaze.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.T").get().asReferenceType().getQualifiedName());
    255     }
    256 
    257     @Test
    258     public void testGetAncestorsWithTypeParameters() {
    259         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    260         assertEquals(8, constructorDeclaration.getAncestors().size());
    261 
    262         ReferenceType ancestor = null;
    263 
    264         ancestor = constructorDeclaration.getAncestors().get(0);
    265         assertEquals("com.github.javaparser.ast.body.BodyDeclaration", ancestor.getQualifiedName());
    266         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.body.BodyDeclaration.T").get().asReferenceType().getQualifiedName());
    267 
    268         ancestor = constructorDeclaration.getAncestors().get(1);
    269         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc", ancestor.getQualifiedName());
    270         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.T").get().asReferenceType().getQualifiedName());
    271 
    272         ancestor = constructorDeclaration.getAncestors().get(2);
    273         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithDeclaration", ancestor.getQualifiedName());
    274 
    275         ancestor = constructorDeclaration.getAncestors().get(3);
    276         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithName", ancestor.getQualifiedName());
    277         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithName.T").get().asReferenceType().getQualifiedName());
    278 
    279         ancestor = constructorDeclaration.getAncestors().get(4);
    280         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers", ancestor.getQualifiedName());
    281         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.T").get().asReferenceType().getQualifiedName());
    282 
    283         ancestor = constructorDeclaration.getAncestors().get(5);
    284         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithParameters", ancestor.getQualifiedName());
    285         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithParameters.T").get().asReferenceType().getQualifiedName());
    286 
    287         ancestor = constructorDeclaration.getAncestors().get(6);
    288         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable", ancestor.getQualifiedName());
    289         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.T").get().asReferenceType().getQualifiedName());
    290 
    291         ancestor = constructorDeclaration.getAncestors().get(7);
    292         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt", ancestor.getQualifiedName());
    293         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.T").get().asReferenceType().getQualifiedName());
    294     }
    295 
    296     @Test
    297     public void testGetAllAncestorsWithoutTypeParameters() {
    298         JavaParserClassDeclaration cu = (JavaParserClassDeclaration) typeSolver.solveType("com.github.javaparser.ast.CompilationUnit");
    299         assertEquals(ImmutableSet.of("java.lang.Cloneable", "com.github.javaparser.ast.Node", "java.lang.Object"), cu.getAllAncestors().stream().map(i -> i.getQualifiedName()).collect(Collectors.toSet()));
    300     }
    301 
    302     @Test
    303     public void testGetAllAncestorsWithTypeParameters() {
    304         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    305         assertEquals(12, constructorDeclaration.getAllAncestors().size());
    306 
    307         ReferenceType ancestor = null;
    308 
    309         ancestor = constructorDeclaration.getAllAncestors().get(0);
    310         assertEquals("com.github.javaparser.ast.body.BodyDeclaration", ancestor.getQualifiedName());
    311         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.body.BodyDeclaration.T").get().asReferenceType().getQualifiedName());
    312 
    313         ancestor = constructorDeclaration.getAllAncestors().get(1);
    314         assertEquals("com.github.javaparser.ast.Node", ancestor.getQualifiedName());
    315 
    316         ancestor = constructorDeclaration.getAllAncestors().get(2);
    317         assertEquals("java.lang.Cloneable", ancestor.getQualifiedName());
    318 
    319         ancestor = constructorDeclaration.getAllAncestors().get(3);
    320         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations", ancestor.getQualifiedName());
    321         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.T").get().asReferenceType().getQualifiedName());
    322 
    323         ancestor = constructorDeclaration.getAllAncestors().get(4);
    324         assertEquals("java.lang.Object", ancestor.getQualifiedName());
    325 
    326         ancestor = constructorDeclaration.getAllAncestors().get(5);
    327         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc", ancestor.getQualifiedName());
    328         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.T").get().asReferenceType().getQualifiedName());
    329 
    330         ancestor = constructorDeclaration.getAllAncestors().get(6);
    331         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithDeclaration", ancestor.getQualifiedName());
    332 
    333         ancestor = constructorDeclaration.getAllAncestors().get(7);
    334         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithName", ancestor.getQualifiedName());
    335         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithName.T").get().asReferenceType().getQualifiedName());
    336 
    337         ancestor = constructorDeclaration.getAllAncestors().get(8);
    338         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers", ancestor.getQualifiedName());
    339         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.T").get().asReferenceType().getQualifiedName());
    340 
    341         ancestor = constructorDeclaration.getAllAncestors().get(9);
    342         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithParameters", ancestor.getQualifiedName());
    343         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithParameters.T").get().asReferenceType().getQualifiedName());
    344 
    345         ancestor = constructorDeclaration.getAllAncestors().get(10);
    346         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable", ancestor.getQualifiedName());
    347         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.T").get().asReferenceType().getQualifiedName());
    348 
    349         ancestor = constructorDeclaration.getAllAncestors().get(11);
    350         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt", ancestor.getQualifiedName());
    351         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration", ancestor.typeParametersMap().getValueBySignature("com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.T").get().asReferenceType().getQualifiedName());
    352     }
    353 
    354     ///
    355     /// Test fields
    356     ///
    357 
    358     @Test
    359     public void testGetFieldForExistingField() {
    360         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    361 
    362         FieldDeclaration fieldDeclaration = null;
    363 
    364         // declared field
    365         fieldDeclaration = constructorDeclaration.getField("modifiers");
    366         assertEquals("modifiers", fieldDeclaration.getName());
    367         assertEquals("java.util.EnumSet", fieldDeclaration.getType().asReferenceType().getQualifiedName());
    368         assertEquals(AccessLevel.PRIVATE, fieldDeclaration.accessLevel());
    369         assertEquals(false, fieldDeclaration.isStatic());
    370 
    371         // inherited field
    372         fieldDeclaration = constructorDeclaration.getField("annotations");
    373         assertEquals("annotations", fieldDeclaration.getName());
    374         assertEquals("java.util.List", fieldDeclaration.getType().asReferenceType().getQualifiedName());
    375         assertEquals(AccessLevel.PRIVATE, fieldDeclaration.accessLevel());
    376     }
    377 
    378     @Test(expected = UnsolvedSymbolException.class)
    379     public void testGetFieldForUnexistingField() {
    380         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    381 
    382         constructorDeclaration.getField("unexisting");
    383     }
    384 
    385     @Test
    386     public void testGetAllFields() {
    387         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    388 
    389         List<FieldDeclaration> allFields = constructorDeclaration.getAllFields();
    390         assertEquals(16, allFields.size());
    391 
    392         FieldDeclaration fieldDeclaration = null;
    393 
    394         fieldDeclaration = allFields.get(0);
    395         assertEquals("modifiers", fieldDeclaration.getName());
    396 
    397         fieldDeclaration = allFields.get(1);
    398         assertEquals("typeParameters", fieldDeclaration.getName());
    399 
    400         fieldDeclaration = allFields.get(2);
    401         assertEquals("name", fieldDeclaration.getName());
    402 
    403         fieldDeclaration = allFields.get(3);
    404         assertEquals("parameters", fieldDeclaration.getName());
    405 
    406         fieldDeclaration = allFields.get(4);
    407         assertEquals("throws_", fieldDeclaration.getName());
    408 
    409         fieldDeclaration = allFields.get(5);
    410         assertEquals("body", fieldDeclaration.getName());
    411 
    412         fieldDeclaration = allFields.get(6);
    413         assertEquals("annotations", fieldDeclaration.getName());
    414 
    415         fieldDeclaration = allFields.get(7);
    416         assertEquals("NODE_BY_BEGIN_POSITION", fieldDeclaration.getName());
    417 
    418         fieldDeclaration = allFields.get(8);
    419         assertEquals("range", fieldDeclaration.getName());
    420 
    421         fieldDeclaration = allFields.get(9);
    422         assertEquals("parentNode", fieldDeclaration.getName());
    423 
    424         fieldDeclaration = allFields.get(10);
    425         assertEquals("childrenNodes", fieldDeclaration.getName());
    426 
    427         fieldDeclaration = allFields.get(11);
    428         assertEquals("orphanComments", fieldDeclaration.getName());
    429 
    430         fieldDeclaration = allFields.get(12);
    431         assertEquals("userData", fieldDeclaration.getName());
    432 
    433         fieldDeclaration = allFields.get(13);
    434         assertEquals("comment", fieldDeclaration.getName());
    435 
    436         fieldDeclaration = allFields.get(14);
    437         assertEquals("ABSOLUTE_BEGIN_LINE", fieldDeclaration.getName());
    438 
    439         fieldDeclaration = allFields.get(15);
    440         assertEquals("ABSOLUTE_END_LINE", fieldDeclaration.getName());
    441     }
    442 
    443     @Test
    444     public void testGetAllStaticFields() {
    445         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    446 
    447         List<FieldDeclaration> allFields = constructorDeclaration.getAllStaticFields();
    448         assertEquals(3, allFields.size());
    449 
    450         FieldDeclaration fieldDeclaration = null;
    451 
    452         fieldDeclaration = allFields.get(0);
    453         assertEquals("NODE_BY_BEGIN_POSITION", fieldDeclaration.getName());
    454 
    455         fieldDeclaration = allFields.get(1);
    456         assertEquals("ABSOLUTE_BEGIN_LINE", fieldDeclaration.getName());
    457 
    458         fieldDeclaration = allFields.get(2);
    459         assertEquals("ABSOLUTE_END_LINE", fieldDeclaration.getName());
    460     }
    461 
    462     @Test
    463     public void testGetAllNonStaticFields() {
    464         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    465 
    466         List<FieldDeclaration> allFields = constructorDeclaration.getAllNonStaticFields();
    467         assertEquals(13, allFields.size());
    468 
    469         FieldDeclaration fieldDeclaration = null;
    470 
    471         fieldDeclaration = allFields.get(0);
    472         assertEquals("modifiers", fieldDeclaration.getName());
    473 
    474         fieldDeclaration = allFields.get(1);
    475         assertEquals("typeParameters", fieldDeclaration.getName());
    476 
    477         fieldDeclaration = allFields.get(2);
    478         assertEquals("name", fieldDeclaration.getName());
    479 
    480         fieldDeclaration = allFields.get(3);
    481         assertEquals("parameters", fieldDeclaration.getName());
    482 
    483         fieldDeclaration = allFields.get(4);
    484         assertEquals("throws_", fieldDeclaration.getName());
    485 
    486         fieldDeclaration = allFields.get(5);
    487         assertEquals("body", fieldDeclaration.getName());
    488 
    489         fieldDeclaration = allFields.get(6);
    490         assertEquals("annotations", fieldDeclaration.getName());
    491 
    492         fieldDeclaration = allFields.get(7);
    493         assertEquals("range", fieldDeclaration.getName());
    494 
    495         fieldDeclaration = allFields.get(8);
    496         assertEquals("parentNode", fieldDeclaration.getName());
    497 
    498         fieldDeclaration = allFields.get(9);
    499         assertEquals("childrenNodes", fieldDeclaration.getName());
    500 
    501         fieldDeclaration = allFields.get(10);
    502         assertEquals("orphanComments", fieldDeclaration.getName());
    503 
    504         fieldDeclaration = allFields.get(11);
    505         assertEquals("userData", fieldDeclaration.getName());
    506 
    507         fieldDeclaration = allFields.get(12);
    508         assertEquals("comment", fieldDeclaration.getName());
    509     }
    510 
    511     @Test
    512     public void testGetDeclaredFields() {
    513         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    514 
    515         List<FieldDeclaration> allFields = constructorDeclaration.getDeclaredFields();
    516         assertEquals(6, allFields.size());
    517 
    518         FieldDeclaration fieldDeclaration = null;
    519 
    520         fieldDeclaration = allFields.get(0);
    521         assertEquals("modifiers", fieldDeclaration.getName());
    522 
    523         fieldDeclaration = allFields.get(1);
    524         assertEquals("typeParameters", fieldDeclaration.getName());
    525 
    526         fieldDeclaration = allFields.get(2);
    527         assertEquals("name", fieldDeclaration.getName());
    528 
    529         fieldDeclaration = allFields.get(3);
    530         assertEquals("parameters", fieldDeclaration.getName());
    531 
    532         fieldDeclaration = allFields.get(4);
    533         assertEquals("throws_", fieldDeclaration.getName());
    534 
    535         fieldDeclaration = allFields.get(5);
    536         assertEquals("body", fieldDeclaration.getName());
    537     }
    538 
    539     ///
    540     /// Test methods
    541     ///
    542 
    543     @Test
    544     public void testGetDeclaredMethods() {
    545         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    546 
    547         Set<MethodDeclaration> allMethods = constructorDeclaration.getDeclaredMethods();
    548         assertEquals(20, allMethods.size());
    549 
    550         List<MethodDeclaration> sortedMethods = allMethods.stream()
    551                 .sorted((o1, o2) -> o1.getQualifiedSignature().compareTo(o2.getQualifiedSignature()))
    552                 .collect(Collectors.toList());
    553 
    554         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)", sortedMethods.get(0).getQualifiedSignature());
    555         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)", sortedMethods.get(1).getQualifiedSignature());
    556         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getBody()", sortedMethods.get(2).getQualifiedSignature());
    557         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString()", sortedMethods.get(3).getQualifiedSignature());
    558         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString(boolean, boolean)", sortedMethods.get(4).getQualifiedSignature());
    559         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString(boolean, boolean, boolean)", sortedMethods.get(5).getQualifiedSignature());
    560         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getJavaDoc()", sortedMethods.get(6).getQualifiedSignature());
    561         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getModifiers()", sortedMethods.get(7).getQualifiedSignature());
    562         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getName()", sortedMethods.get(8).getQualifiedSignature());
    563         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getNameExpr()", sortedMethods.get(9).getQualifiedSignature());
    564         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getParameters()", sortedMethods.get(10).getQualifiedSignature());
    565         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getThrows()", sortedMethods.get(11).getQualifiedSignature());
    566         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.getTypeParameters()", sortedMethods.get(12).getQualifiedSignature());
    567         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setBody(com.github.javaparser.ast.stmt.BlockStmt)", sortedMethods.get(13).getQualifiedSignature());
    568         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setModifiers(java.util.EnumSet<com.github.javaparser.ast.Modifier>)", sortedMethods.get(14).getQualifiedSignature());
    569         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setName(java.lang.String)", sortedMethods.get(15).getQualifiedSignature());
    570         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setNameExpr(com.github.javaparser.ast.expr.NameExpr)", sortedMethods.get(16).getQualifiedSignature());
    571         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setParameters(java.util.List<com.github.javaparser.ast.body.Parameter>)", sortedMethods.get(17).getQualifiedSignature());
    572         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setThrows(java.util.List<com.github.javaparser.ast.type.ReferenceType>)", sortedMethods.get(18).getQualifiedSignature());
    573         assertEquals("com.github.javaparser.ast.body.ConstructorDeclaration.setTypeParameters(java.util.List<com.github.javaparser.ast.type.TypeParameter>)", sortedMethods.get(19).getQualifiedSignature());
    574     }
    575 
    576     @Test
    577     public void testGetAllMethods() {
    578         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    579 
    580         Set<MethodUsage> allMethods = constructorDeclaration.getAllMethods();
    581 
    582         List<MethodUsage> sortedMethods = allMethods.stream()
    583                 .sorted((o1, o2) -> o1.getQualifiedSignature().compareTo(o2.getQualifiedSignature()))
    584                 .collect(Collectors.toList());
    585 
    586         List<String> signatures = sortedMethods.stream().map(m -> m.getQualifiedSignature()).collect(Collectors.toList());
    587 
    588         assertEquals(ImmutableList.of("com.github.javaparser.ast.Node.addOrphanComment(com.github.javaparser.ast.comments.Comment)",
    589                 "com.github.javaparser.ast.Node.clone()",
    590                 "com.github.javaparser.ast.Node.contains(com.github.javaparser.ast.Node)",
    591                 "com.github.javaparser.ast.Node.equals(java.lang.Object)",
    592                 "com.github.javaparser.ast.Node.getAllContainedComments()",
    593                 "com.github.javaparser.ast.Node.getBegin()",
    594                 "com.github.javaparser.ast.Node.getChildrenNodes()",
    595                 "com.github.javaparser.ast.Node.getComment()",
    596                 "com.github.javaparser.ast.Node.getEnd()",
    597                 "com.github.javaparser.ast.Node.getNodesByType(java.lang.Class<N>)",
    598                 "com.github.javaparser.ast.Node.getOrphanComments()",
    599                 "com.github.javaparser.ast.Node.getParentNode()",
    600                 "com.github.javaparser.ast.Node.getParentNodeOfType(java.lang.Class<T>)",
    601                 "com.github.javaparser.ast.Node.getRange()",
    602                 "com.github.javaparser.ast.Node.getUserData(com.github.javaparser.ast.UserDataKey<M>)",
    603                 "com.github.javaparser.ast.Node.hasComment()",
    604                 "com.github.javaparser.ast.Node.hashCode()",
    605                 "com.github.javaparser.ast.Node.isPositionedAfter(com.github.javaparser.Position)",
    606                 "com.github.javaparser.ast.Node.isPositionedBefore(com.github.javaparser.Position)",
    607                 "com.github.javaparser.ast.Node.setAsParentNodeOf(com.github.javaparser.ast.Node)",
    608                 "com.github.javaparser.ast.Node.setAsParentNodeOf(java.util.List<? extends com.github.javaparser.ast.Node>)",
    609                 "com.github.javaparser.ast.Node.setBegin(com.github.javaparser.Position)",
    610                 "com.github.javaparser.ast.Node.setBlockComment(java.lang.String)",
    611                 "com.github.javaparser.ast.Node.setComment(com.github.javaparser.ast.comments.Comment)",
    612                 "com.github.javaparser.ast.Node.setEnd(com.github.javaparser.Position)",
    613                 "com.github.javaparser.ast.Node.setLineComment(java.lang.String)",
    614                 "com.github.javaparser.ast.Node.setParentNode(com.github.javaparser.ast.Node)",
    615                 "com.github.javaparser.ast.Node.setRange(com.github.javaparser.Range)",
    616                 "com.github.javaparser.ast.Node.setUserData(com.github.javaparser.ast.UserDataKey<M>, M)",
    617                 "com.github.javaparser.ast.Node.toString()",
    618                 "com.github.javaparser.ast.Node.toStringWithoutComments()",
    619                 "com.github.javaparser.ast.Node.tryAddImportToParentCompilationUnit(java.lang.Class<?>)",
    620                 "com.github.javaparser.ast.body.BodyDeclaration.getAnnotations()",
    621                 "com.github.javaparser.ast.body.BodyDeclaration.setAnnotations(java.util.List<com.github.javaparser.ast.expr.AnnotationExpr>)",
    622                 "com.github.javaparser.ast.body.ConstructorDeclaration.accept(com.github.javaparser.ast.visitor.GenericVisitor<R, A>, A)",
    623                 "com.github.javaparser.ast.body.ConstructorDeclaration.accept(com.github.javaparser.ast.visitor.VoidVisitor<A>, A)",
    624                 "com.github.javaparser.ast.body.ConstructorDeclaration.getBody()",
    625                 "com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString()",
    626                 "com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString(boolean, boolean)",
    627                 "com.github.javaparser.ast.body.ConstructorDeclaration.getDeclarationAsString(boolean, boolean, boolean)",
    628                 "com.github.javaparser.ast.body.ConstructorDeclaration.getJavaDoc()",
    629                 "com.github.javaparser.ast.body.ConstructorDeclaration.getModifiers()",
    630                 "com.github.javaparser.ast.body.ConstructorDeclaration.getName()",
    631                 "com.github.javaparser.ast.body.ConstructorDeclaration.getNameExpr()",
    632                 "com.github.javaparser.ast.body.ConstructorDeclaration.getParameters()",
    633                 "com.github.javaparser.ast.body.ConstructorDeclaration.getThrows()",
    634                 "com.github.javaparser.ast.body.ConstructorDeclaration.getTypeParameters()",
    635                 "com.github.javaparser.ast.body.ConstructorDeclaration.setBody(com.github.javaparser.ast.stmt.BlockStmt)",
    636                 "com.github.javaparser.ast.body.ConstructorDeclaration.setModifiers(java.util.EnumSet<com.github.javaparser.ast.Modifier>)",
    637                 "com.github.javaparser.ast.body.ConstructorDeclaration.setName(java.lang.String)",
    638                 "com.github.javaparser.ast.body.ConstructorDeclaration.setNameExpr(com.github.javaparser.ast.expr.NameExpr)",
    639                 "com.github.javaparser.ast.body.ConstructorDeclaration.setParameters(java.util.List<com.github.javaparser.ast.body.Parameter>)",
    640                 "com.github.javaparser.ast.body.ConstructorDeclaration.setThrows(java.util.List<com.github.javaparser.ast.type.ReferenceType>)",
    641                 "com.github.javaparser.ast.body.ConstructorDeclaration.setTypeParameters(java.util.List<com.github.javaparser.ast.type.TypeParameter>)",
    642                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>)",
    643                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addAnnotation(java.lang.String)",
    644                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addMarkerAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>)",
    645                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addMarkerAnnotation(java.lang.String)",
    646                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addSingleMemberAnnotation(java.lang.Class<? extends java.lang.annotation.Annotation>, java.lang.String)",
    647                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.addSingleMemberAnnotation(java.lang.String, java.lang.String)",
    648                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.getAnnotationByClass(java.lang.Class<? extends java.lang.annotation.Annotation>)",
    649                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.getAnnotationByName(java.lang.String)",
    650                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.isAnnotationPresent(java.lang.Class<? extends java.lang.annotation.Annotation>)",
    651                 "com.github.javaparser.ast.nodeTypes.NodeWithAnnotations.isAnnotationPresent(java.lang.String)",
    652                 "com.github.javaparser.ast.nodeTypes.NodeWithBlockStmt.createBody()",
    653                 "com.github.javaparser.ast.nodeTypes.NodeWithJavaDoc.setJavaDocComment(java.lang.String)",
    654                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.addModifier(com.github.javaparser.ast.Modifier...)",
    655                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isAbstract()",
    656                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isFinal()",
    657                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isNative()",
    658                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isPrivate()",
    659                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isProtected()",
    660                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isPublic()",
    661                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isStatic()",
    662                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isStrictfp()",
    663                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isSynchronized()",
    664                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isTransient()",
    665                 "com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isVolatile()",
    666                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.addAndGetParameter(com.github.javaparser.ast.body.Parameter)",
    667                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.addAndGetParameter(com.github.javaparser.ast.type.Type, java.lang.String)",
    668                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.addAndGetParameter(java.lang.Class<?>, java.lang.String)",
    669                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.addAndGetParameter(java.lang.String, java.lang.String)",
    670                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.addParameter(com.github.javaparser.ast.body.Parameter)",
    671                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.addParameter(com.github.javaparser.ast.type.Type, java.lang.String)",
    672                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.addParameter(java.lang.Class<?>, java.lang.String)",
    673                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.addParameter(java.lang.String, java.lang.String)",
    674                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.getParamByName(java.lang.String)",
    675                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.getParamByType(java.lang.Class<?>)",
    676                 "com.github.javaparser.ast.nodeTypes.NodeWithParameters.getParamByType(java.lang.String)",
    677                 "com.github.javaparser.ast.nodeTypes.NodeWithThrowable.addThrows(com.github.javaparser.ast.type.ReferenceType)",
    678                 "com.github.javaparser.ast.nodeTypes.NodeWithThrowable.addThrows(java.lang.Class<? extends java.lang.Throwable>)",
    679                 "com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.Class<? extends java.lang.Throwable>)",
    680                 "com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.String)",
    681                 "java.lang.Object.finalize()",
    682                 "java.lang.Object.getClass()",
    683                 "java.lang.Object.notify()",
    684                 "java.lang.Object.notifyAll()",
    685                 "java.lang.Object.registerNatives()",
    686                 "java.lang.Object.wait()",
    687                 "java.lang.Object.wait(long)",
    688                 "java.lang.Object.wait(long, int)"), signatures);
    689     }
    690 
    691     ///
    692     /// Test constructors
    693     ///
    694 
    695     @Test
    696     public void testGetConstructors() {
    697         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    698 
    699         List<ConstructorDeclaration> constructors = constructorDeclaration.getConstructors();
    700         assertEquals(4, constructors.size());
    701 
    702         assertEquals("ConstructorDeclaration()", constructors.get(0).getSignature());
    703         assertEquals("ConstructorDeclaration(java.util.EnumSet<com.github.javaparser.ast.Modifier>, java.lang.String)", constructors.get(1).getSignature());
    704         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());
    705         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());
    706     }
    707 
    708     ///
    709     /// Resolution
    710     ///
    711 
    712     //SymbolReference<MethodDeclaration> solveMethod(String name, List<Type> parameterTypes);
    713     @Test
    714     public void testSolveMethodExisting() {
    715         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    716 
    717         SymbolReference<MethodDeclaration> res = null;
    718 
    719         res = constructorDeclaration.solveMethod("isStatic", ImmutableList.of());
    720         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithModifiers.isStatic()", res.getCorrespondingDeclaration().getQualifiedSignature());
    721 
    722         res = constructorDeclaration.solveMethod("isThrows", ImmutableList.of(ReflectionFactory.typeUsageFor(RuntimeException.class.getClass(), typeSolverNewCode)));
    723         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.Class<? extends java.lang.Throwable>)", res.getCorrespondingDeclaration().getQualifiedSignature());
    724 
    725         res = constructorDeclaration.solveMethod("isThrows", ImmutableList.of(ReflectionFactory.typeUsageFor(String.class, typeSolverNewCode)));
    726         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.String)", res.getCorrespondingDeclaration().getQualifiedSignature());
    727 
    728         // This is solved because it is raw
    729         res = constructorDeclaration.solveMethod("isThrows", ImmutableList.of(ReflectionFactory.typeUsageFor(Class.class, typeSolverNewCode)));
    730         assertEquals("com.github.javaparser.ast.nodeTypes.NodeWithThrowable.isThrows(java.lang.Class<? extends java.lang.Throwable>)", res.getCorrespondingDeclaration().getQualifiedSignature());
    731     }
    732 
    733     @Test
    734     public void testSolveMethodNotExisting() {
    735         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    736 
    737         SymbolReference<MethodDeclaration> res = null;
    738 
    739         res = constructorDeclaration.solveMethod("unexistingMethod", ImmutableList.of());
    740         assertEquals(false, res.isSolved());
    741 
    742         res = constructorDeclaration.solveMethod("isStatic", ImmutableList.of(PrimitiveType.BOOLEAN));
    743         assertEquals(false, res.isSolved());
    744     }
    745 
    746     @Test
    747     public void testSolveMethodNotExistingBecauseOfTypeParameters() {
    748         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    749 
    750         SymbolReference<MethodDeclaration> res = null;
    751 
    752         ReferenceType stringType = (ReferenceType) ReflectionFactory.typeUsageFor(String.class, typeSolverNewCode);
    753         ReferenceType rawClassType = (ReferenceType) ReflectionFactory.typeUsageFor(Class.class, typeSolverNewCode);
    754         ReferenceType classOfStringType = (ReferenceType) rawClassType.replaceTypeVariables("T", stringType);
    755         res = constructorDeclaration.solveMethod("isThrows", ImmutableList.of(classOfStringType));
    756         assertEquals(false, res.isSolved());
    757     }
    758 
    759     @Test
    760     public void testSolveSymbolUnexisting() {
    761         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    762 
    763         SymbolReference<? extends ValueDeclaration> res = constructorDeclaration.solveSymbol("unexisting", typeSolver);
    764         assertEquals(false, res.isSolved());
    765     }
    766 
    767     @Test
    768     public void testSolveSymbolToDeclaredField() {
    769         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    770 
    771         SymbolReference<? extends ValueDeclaration> res = constructorDeclaration.solveSymbol("name", typeSolver);
    772         assertEquals(true, res.isSolved());
    773         assertEquals(true, res.getCorrespondingDeclaration().isField());
    774     }
    775 
    776     @Test
    777     public void testSolveSymbolToInheritedPublicField() {
    778         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    779 
    780         SymbolReference<? extends ValueDeclaration> res = constructorDeclaration.solveSymbol("NODE_BY_BEGIN_POSITION", typeSolver);
    781         assertEquals(true, res.isSolved());
    782         assertEquals(true, res.getCorrespondingDeclaration().isField());
    783     }
    784 
    785     @Test
    786     public void testSolveSymbolToInheritedPrivateField() {
    787         JavaParserClassDeclaration constructorDeclaration = (JavaParserClassDeclaration) typeSolverNewCode.solveType("com.github.javaparser.ast.body.ConstructorDeclaration");
    788 
    789         SymbolReference<? extends ValueDeclaration> res = constructorDeclaration.solveSymbol("parentNode", typeSolver);
    790         assertEquals(false, res.isSolved());
    791     }
    792 
    793     ///
    794     /// Assignability
    795     ///
    796 
    797     // boolean isAssignableBy(Type type);
    798 
    799     // boolean canBeAssignedTo(TypeDeclaration other)
    800 
    801     // boolean isAssignableBy(TypeDeclaration other);
    802 
    803     ///
    804     /// Annotations
    805     ///
    806 
    807     // hasDirectlyAnnotation
    808 
    809     // hasAnnotation
    810 
    811     ///
    812     ///
    813     ///
    814 
    815     // List<TypeParameterDeclaration> getTypeParameters();
    816 
    817     // AccessLevel accessLevel();
    818 
    819     ///
    820     /// Containment
    821     ///
    822 
    823     // Set<TypeDeclaration> internalTypes()
    824 
    825     // Optional<TypeDeclaration> containerType()*/
    826 }
    827