public void testBasicAnonymousClass() throws Exception { Function h = new Function() { @Override public Object apply(Object x) { return x; } }; assertEquals(42, h.apply(42)); }
public void testBasicFunction() throws Exception { Function f = x -> x; assertEquals(42, f.apply(42)); Function<Integer, Integer> f2 = x -> x; assertEquals((Integer) 42, f2.apply(42)); Function f3 = x -> { int y = 42; return y; }; assertEquals(42, f3.apply(null)); FourToOne<String, Double, Integer, Boolean, String> appendFour = (a, b, c, d) -> a + b + c + d; assertEquals("Foo4.214true", appendFour.apply("Foo", 4.2, 14, true)); }
// Tests outer reference resolution, and that inner fields are being correctly resolved for // lambdas with implicit blocks. public void testAdditionInLambda() throws Exception { Function f = new Function<Integer, Integer>() { @Override public Integer apply(Integer x) { return x + 20; } }; assertEquals(42, f.apply(22)); Function<Integer, Integer> g = x -> { return x + 20; }; assertEquals((Integer) 42, g.apply(22)); Function<Integer, Integer> h = x -> x + 20; assertEquals((Integer) 42, h.apply(22)); }
public void testStaticFunctions() throws Exception { assertEquals(42, staticF.apply(42)); }