package spoon.test.limits.utils; import org.junit.Test; import spoon.reflect.declaration.CtClass; import spoon.reflect.declaration.CtNamedElement; import spoon.reflect.visitor.filter.NameFilter; import spoon.reflect.visitor.filter.TypeFilter; import java.util.List; import static org.junit.Assert.assertEquals; import static spoon.testing.utils.ModelUtils.build; public class InternalTest { @Test public void testInternalClasses() throws Exception { CtClass<?> type = build("spoon.test.limits.utils", "ContainInternalClass"); assertEquals("ContainInternalClass", type.getSimpleName()); List<CtClass<?>> classes = type.getElements(new TypeFilter<CtClass<?>>( CtClass.class)); assertEquals(4, classes.size()); CtClass<?> c1 = classes.get(1); assertEquals("InternalClass", c1.getSimpleName()); assertEquals( "spoon.test.limits.utils.ContainInternalClass$InternalClass", c1.getQualifiedName()); assertEquals("spoon.test.limits.utils", c1.getPackage() .getQualifiedName()); assertEquals( spoon.test.limits.utils.ContainInternalClass.InternalClass.class, c1.getActualClass()); CtClass<?> c2 = classes.get(2); assertEquals("InsideInternalClass", c2.getSimpleName()); assertEquals( "spoon.test.limits.utils.ContainInternalClass$InternalClass$InsideInternalClass", c2.getQualifiedName()); assertEquals( spoon.test.limits.utils.ContainInternalClass.InternalClass.InsideInternalClass.class, c2.getActualClass()); } @Test public void testStaticFinalFieldInAnonymousClass() throws Exception { CtClass<?> type = build("spoon.test.limits.utils", "ContainInternalClass"); List<CtClass<?>> classes = type.getElements(new TypeFilter<CtClass<?>>( CtClass.class)); CtClass<?> c3 = classes.get(3); List<CtNamedElement> fields = c3 .getElements(new NameFilter<CtNamedElement>("serialVersionUID")); assertEquals(1, fields.size()); } }