diff options
Diffstat (limited to 'dcevm/src')
-rw-r--r-- | dcevm/src/test/java8/com/github/dcevm/test/lambdas/LambdaTest.java | 81 |
1 files changed, 77 insertions, 4 deletions
diff --git a/dcevm/src/test/java8/com/github/dcevm/test/lambdas/LambdaTest.java b/dcevm/src/test/java8/com/github/dcevm/test/lambdas/LambdaTest.java index efacdbbc..90134954 100644 --- a/dcevm/src/test/java8/com/github/dcevm/test/lambdas/LambdaTest.java +++ b/dcevm/src/test/java8/com/github/dcevm/test/lambdas/LambdaTest.java @@ -24,16 +24,15 @@ package com.github.dcevm.test.lambdas; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.*; import java.util.concurrent.Callable; +import java.util.function.Consumer; import static com.github.dcevm.test.util.HotSwapTestHelper.__toVersion__; import static com.github.dcevm.test.util.HotSwapTestHelper.__version__; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; /** * Tests for lambda expressions. @@ -66,4 +65,78 @@ public class LambdaTest { assertEquals(30, (int) lambda.call()); assertEquals(40, (int) lambda2.call()); } + + // version 0 + public static class LambdaC2 { + public int i = 0; + + public void doit() { + LambdaTest.methodWithLambdaParam(integer -> i += integer); + } + } + + // version 1 + public static class LambdaC2___1 { + int i = 0; + + public void doit() { + LambdaTest.methodWithLambdaParam(integer -> i -= integer); + } + } + + public static void methodWithLambdaParam(Consumer<Integer> consumer) { + consumer.accept(1); + } + + @Test + public void testMethodLambda2() throws Exception { + assert __version__() == 0; + + final LambdaC2 instance = new LambdaC2(); + instance.doit(); + Assert.assertEquals(1, instance.i); + + __toVersion__(1); + + instance.doit(); + Assert.assertEquals(0, instance.i); + } + + // version 0 + public static class LambdaC3 { + public int i = 0; + public Consumer<Integer> l = x -> i += x; + + public void doit() { + LambdaTest.methodWithLambdaParam(l); + } + } + + // version 1 + public static class LambdaC3___1 { + int i = 0; + public Consumer<Integer> l = null; + + public void doit() { + LambdaTest.methodWithLambdaParam(l); + } + } + + @Test + public void testMethodLambda3() throws Exception { + assert __version__() == 0; + + final LambdaC3 instance = new LambdaC3(); + instance.doit(); + Assert.assertEquals(1, instance.i); + + __toVersion__(1); + + try { + instance.doit(); + fail("Should get NoSuchMethodError as method implementing lambda should be gone in version 1"); + } catch (NoSuchMethodError e) { + // Ok! + } + } }
\ No newline at end of file |