aboutsummaryrefslogtreecommitdiffstats
path: root/dcevm/src
diff options
context:
space:
mode:
authorIvan Dubrov <idubrov@guidewire.com>2015-08-27 13:42:12 -0700
committerIvan Dubrov <idubrov@guidewire.com>2015-08-27 13:42:12 -0700
commit089a8a01852467414314592ba342713e2b71ad6d (patch)
tree29369c64efe9de09d9eff07219f593455637d82e /dcevm/src
parentc1fa645a6e0b8a06bf100facbf8e89259fa1f026 (diff)
downloaddcevm-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.java81
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