package org.jboss.resteasy.test.util; import org.jboss.resteasy.spi.MarshalledEntity; import org.jboss.resteasy.test.util.resource.TypesTestProvider; import org.jboss.resteasy.test.util.resource.TypesTestProviderSubclass; import org.jboss.resteasy.util.Types; import org.junit.Test; import javax.ws.rs.ext.ExceptionMapper; import java.lang.reflect.Type; import static org.junit.Assert.assertEquals; /** * @tpSubChapter Util tests * @tpChapter Unit tests * @tpTestCaseDetails Test for Types class. * @tpSince RESTEasy 3.0.16 */ public class TypesBuiltInTest { /** * @tpTestDetails Check getActualTypeArgumentsOfAnInterface method of Types class for basic provider. * @tpSince RESTEasy 3.0.16 */ @Test public void testGetInterfaceArgumentFromSimpleType() { Type[] parameters = Types.getActualTypeArgumentsOfAnInterface(TypesTestProvider.class, ExceptionMapper.class); assertEquals("Wrong count of parameters", 1, parameters.length); assertEquals("Wrong type of exception", NullPointerException.class, (Class<?>) parameters[0]); parameters = Types.getActualTypeArgumentsOfAnInterface(TypesTestProvider.class, MarshalledEntity.class); assertEquals("Wrong count of parameters", 1, parameters.length); assertEquals("Wrong type of parameter", Integer.class, (Class<?>) parameters[0]); } /** * @tpTestDetails Check getActualTypeArgumentsOfAnInterface method of Types class for provider with parent class. * Provider subclasses are not defined by the spec, but we need to be able to recognize them for proxied providers to be identified. * @tpSince RESTEasy 3.0.16 */ @Test public void testGetInterfaceArgumentFromSubclass() { Type[] parameters = Types.getActualTypeArgumentsOfAnInterface(TypesTestProviderSubclass.class, ExceptionMapper.class); assertEquals("Wrong count of parameters", 1, parameters.length); assertEquals("Wrong type of exception", NullPointerException.class, (Class<?>) parameters[0]); parameters = Types.getActualTypeArgumentsOfAnInterface(TypesTestProviderSubclass.class, MarshalledEntity.class); assertEquals("Wrong count of parameters", 1, parameters.length); assertEquals("Wrong type of parameter", Integer.class, (Class<?>) parameters[0]); } }