@Test public void testGetFieldTypeExisting() { class Foo<A> { List<A> elements; } TypeSolver typeSolver = new ReflectionTypeSolver(); ReferenceTypeImpl ref = new ReferenceTypeImpl(new ReflectionClassDeclaration(Foo.class, typeSolver), typeSolver); assertEquals(true, ref.getFieldType("elements").isPresent()); assertEquals(true, ref.getFieldType("elements").get().isReferenceType()); assertEquals(List.class.getCanonicalName(), ref.getFieldType("elements").get().asReferenceType().getQualifiedName()); assertEquals(1, ref.getFieldType("elements").get().asReferenceType().typeParametersValues().size()); assertEquals(true, ref.getFieldType("elements").get().asReferenceType().typeParametersValues().get(0).isTypeVariable()); assertEquals("A", ref.getFieldType("elements").get().asReferenceType().typeParametersValues().get(0).asTypeParameter().getName()); ref = new ReferenceTypeImpl(new ReflectionClassDeclaration(Foo.class, typeSolver), ImmutableList.of(new ReferenceTypeImpl(new ReflectionClassDeclaration(String.class, typeSolver), typeSolver)), typeSolver); assertEquals(true, ref.getFieldType("elements").isPresent()); assertEquals(true, ref.getFieldType("elements").get().isReferenceType()); assertEquals(List.class.getCanonicalName(), ref.getFieldType("elements").get().asReferenceType().getQualifiedName()); assertEquals(1, ref.getFieldType("elements").get().asReferenceType().typeParametersValues().size()); assertEquals(true, ref.getFieldType("elements").get().asReferenceType().typeParametersValues().get(0).isReferenceType()); assertEquals(String.class.getCanonicalName(), ref.getFieldType("elements").get().asReferenceType().typeParametersValues().get(0).asReferenceType().getQualifiedName()); }
@Test public void testGetFieldTypeUnexisting() { class Foo<A> { List<A> elements; } TypeSolver typeSolver = new ReflectionTypeSolver(); ReferenceTypeImpl ref = new ReferenceTypeImpl(new ReflectionClassDeclaration(Foo.class, typeSolver), typeSolver); assertEquals(false, ref.getFieldType("bar").isPresent()); ref = new ReferenceTypeImpl(new ReflectionClassDeclaration(Foo.class, typeSolver), ImmutableList.of(new ReferenceTypeImpl(new ReflectionClassDeclaration(String.class, typeSolver), typeSolver)), typeSolver); assertEquals(false, ref.getFieldType("bar").isPresent()); }
@Test public void testGetAllGenericFields() throws IOException, ParseException { TypeSolver typeSolver = new ReflectionTypeSolver(); CompilationUnit cu = JavaParser.parse(adaptPath(new File("src/test/resources/GenericFields.java.txt"))); JavaParserClassDeclaration classDeclaration = new JavaParserClassDeclaration(Navigator.demandClass(cu, "CB"), typeSolver); assertEquals(3, classDeclaration.getAllFields().size()); ReferenceTypeImpl rtClassDeclaration = new ReferenceTypeImpl(classDeclaration, typeSolver); assertEquals("s", classDeclaration.getAllFields().get(0).getName()); assertEquals(string, classDeclaration.getAllFields().get(0).getType()); assertEquals(string, rtClassDeclaration.getFieldType("s").get()); assertEquals("t", classDeclaration.getAllFields().get(1).getName()); assertEquals("java.util.List<java.lang.Boolean>", classDeclaration.getAllFields().get(1).getType().describe()); assertEquals(listOfBoolean, rtClassDeclaration.getFieldType("t").get()); assertEquals("i", classDeclaration.getAllFields().get(2).getName()); assertEquals(ResolvedPrimitiveType.INT, classDeclaration.getAllFields().get(2).getType()); assertEquals(ResolvedPrimitiveType.INT, rtClassDeclaration.getFieldType("i").get()); }