package org.jboss.resteasy.test.cdi; import org.jboss.resteasy.test.cdi.extensions.resource.CDIExtensionsBoston; import org.jboss.resteasy.test.cdi.extensions.resource.CDIExtensionsBostonHolder; import org.jboss.resteasy.test.cdi.extensions.resource.CDIExtensionsBostonlLeaf; import org.jboss.resteasy.test.cdi.extensions.resource.CDIExtensionsResource; import org.jboss.resteasy.test.cdi.injection.resource.CDIInjectionBookResource; import org.jboss.resteasy.test.cdi.util.Utilities; import org.junit.Test; import javax.enterprise.context.RequestScoped; import javax.enterprise.context.SessionScoped; import javax.enterprise.util.AnnotationLiteral; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.logging.Logger; import static junit.framework.TestCase.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** * @tpSubChapter Util tests * @tpChapter Unit tests * @tpTestCaseDetails Basic unit test for Utilities class used for many CDI integration tests. * @tpSince RESTEasy 3.0.16 */ public class UtilitiesTest { private static Logger log = Logger.getLogger(UtilitiesTest.class.getName()); @RequestScoped @CDIExtensionsBoston static class C { } /** * @tpTestDetails Test for getQualifiers method. * @tpSince RESTEasy 3.0.16 */ @Test public void testGetQualifiers() { log.info("entering testGetQualifiers()"); Set<Annotation> qualifiers = Utilities.getQualifiers(C.class); log.info("qualifiers: " + qualifiers); assertEquals("Wrong count of qualifieers", 1, qualifiers.size()); HashSet<Class<?>> qualifierClasses = new HashSet<Class<?>>(); Iterator<Annotation> it = qualifiers.iterator(); while (it.hasNext()) { Annotation a = it.next(); log.info("a type: " + a.annotationType()); qualifierClasses.add(a.annotationType()); } assertTrue("CDIExtensionsBoston is not qualifier", qualifierClasses.contains(CDIExtensionsBoston.class)); log.info("testAnnotation() PASSES"); } /** * @tpTestDetails Test for hasQualifier method. * @tpSince RESTEasy 3.0.16 */ @Test public void testHasQualifier() { log.info("entering testHasQualifier()"); assertTrue("CDIInjectionBookResource should have qualifier", Utilities.hasQualifier(CDIInjectionBookResource.class, RequestScoped.class)); assertTrue("CDIExtensionsBostonHolder should have boston qualifier", Utilities.isBoston(CDIExtensionsBostonHolder.class)); assertTrue("CDIExtensionsBostonlLeaf should have boston qualifier", Utilities.isBoston(CDIExtensionsBostonlLeaf.class)); assertFalse("CDIExtensionsResource should not have boston qualifier", Utilities.isBoston(CDIExtensionsResource.class)); } interface i1 { } interface i2 extends i1 { } static class c1 implements i1 { } static class c2 extends c1 implements i2 { } /** * @tpTestDetails Test for getTypeClosure method. * @tpSince RESTEasy 3.0.16 */ @Test public void testTypeClosure() throws Exception { log.info("entering testTypeClosure()"); Set<Type> set = Utilities.getTypeClosure(c2.class); log.info("Set: " + set); assertEquals("Set of getTypeClosure for c2 class don't contains correct classes", 5, set.size()); assertTrue("Set of getTypeClosure for c2 class don't contains correct classes", set.contains(i1.class) && set.contains(i2.class) && set.contains(c1.class) && set.contains(c2.class) && set.contains(Object.class)); } /** * @tpTestDetails Test for isAnnotationPresent method. * @tpSince RESTEasy 3.0.16 */ @SuppressWarnings("serial") @Test public void testAnnotationPresent() throws Exception { assertTrue("Wrong annotations for CDIExtensionsBoston class", Utilities.isAnnotationPresent(C.class, new AnnotationLiteral<CDIExtensionsBoston>() { }.annotationType())); assertTrue("Wrong annotations for AnnotationLiteral class", Utilities.isAnnotationPresent(C.class, new AnnotationLiteral<RequestScoped>() { }.annotationType())); assertFalse("Wrong annotations for SessionScoped class", Utilities.isAnnotationPresent(C.class, new AnnotationLiteral<SessionScoped>() { }.annotationType())); } }