package spoon.test.reflect.visitor; import org.junit.Assert; import org.junit.Test; import spoon.reflect.declaration.CtEnum; import spoon.reflect.factory.TypeFactory; import spoon.reflect.reference.CtTypeReference; import spoon.reflect.visitor.Query; import spoon.reflect.visitor.filter.ReferenceTypeFilter; import java.util.List; import static spoon.testing.utils.ModelUtils.build; public class ReferenceQueryTest { @Test public void getAllTypeReferencesInEnum() throws Exception { CtEnum<ReferenceQueryTestEnum> testEnum = build("spoon.test.reflect.visitor", "ReferenceQueryTestEnum"); List< CtTypeReference<?> > enumTypeRefs = Query.getElements(testEnum, new ReferenceTypeFilter< CtTypeReference<?> >(CtTypeReference.class)); TypeFactory typeFactory = testEnum.getFactory().Type(); for (Class<?> c : new Class<?>[]{Integer.class, Long.class, Boolean.class, Number.class, String.class, Void.class}) { Assert.assertTrue("the reference query on the enum should return all the types defined in the enum declaration", enumTypeRefs.contains(typeFactory.createReference(c))); } } }