diff options
author | Ivan Dubrov <idubrov@guidewire.com> | 2015-08-27 13:42:12 -0700 |
---|---|---|
committer | Ivan Dubrov <idubrov@guidewire.com> | 2015-08-27 13:42:12 -0700 |
commit | 089a8a01852467414314592ba342713e2b71ad6d (patch) | |
tree | 29369c64efe9de09d9eff07219f593455637d82e /dcevm/src | |
parent | c1fa645a6e0b8a06bf100facbf8e89259fa1f026 (diff) | |
download | dcevm-089a8a01852467414314592ba342713e2b71ad6d.tar.gz dcevm-089a8a01852467414314592ba342713e2b71ad6d.zip |
Fixing issue when lambda method could not be foundlight-jdk8u51+3
closes #81
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 |