package org.jboss.weld.tests.lambda; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.lang.reflect.Method; import java.util.List; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.Archive; import org.jboss.shrinkwrap.api.BeanArchive; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.weld.test.util.Utils; import org.junit.Test; import org.junit.runner.RunWith; /** * * @author Martin Kouba * @see WELD-1644 */ @RunWith(Arquillian.class) public class LambdaConstructsTest { @Deployment public static Archive<?> createTestArchive() { return ShrinkWrap.create(BeanArchive.class, Utils.getDeploymentNameAsHash(LambdaConstructsTest.class)).addPackage(LambdaConstructsTest.class.getPackage()); } @Test public void testLambda(LambdaBean lambdaBean) { List<Integer> data = lambdaBean.ping(); assertEquals(3, data.size()); assertEquals(Integer.valueOf(1), data.get(0)); assertEquals(Integer.valueOf(5), data.get(1)); assertEquals(Integer.valueOf(10), data.get(2)); } @Test public void testLambdaStream(LambdaBean lambdaBean) { List<String> data = lambdaBean.pingStream(); assertEquals(3, data.size()); assertEquals("1", data.get(0)); assertEquals("5", data.get(1)); assertEquals("10", data.get(2)); } @Test public void testLambdaInstanceMethod(LambdaBean lambdaBean) { List<Integer> data = lambdaBean.lambdaAsInstanceMethod(); assertEquals(1, data.size()); assertEquals(Integer.valueOf(10), data.get(0)); } @Test public void testLambdaInstanceMethod02(LambdaBean lambdaBean) { List<Integer> data = lambdaBean.lambdaAsInstanceMethod02(); assertEquals(3, data.size()); assertNull(data.get(0)); assertNull(data.get(1)); assertNull(data.get(2)); } @Test public void testGenericReturnType() throws NoSuchMethodException, SecurityException { Class<LambdaBean> clazz = LambdaBean.class; for (Method method : clazz.getDeclaredMethods()) { if (method.isSynthetic()) { assertNotNull("Null generic return type: " + method.getName(), method.getGenericReturnType()); } } } }