diff options
| author | gayanper | 2020-04-29 18:14:44 +0000 |
|---|---|---|
| committer | gayanper | 2020-04-29 18:15:34 +0000 |
| commit | cf32e05491d7e904dc7656d3442ea829f321e688 (patch) | |
| tree | 366163998c7e5a93374b6aad9af4700bf42b1fe0 | |
| parent | 62bfd38e3c777285d709e2266c6d1fee2badd55d (diff) | |
| download | eclipse.jdt.debug-cf32e05491d7e904dc7656d3442ea829f321e688.tar.gz eclipse.jdt.debug-cf32e05491d7e904dc7656d3442ea829f321e688.tar.xz eclipse.jdt.debug-cf32e05491d7e904dc7656d3442ea829f321e688.zip | |
Bug 562079 - Add unit tests for RemoteEvaluationsI20200501-0520
Change-Id: I6237533602fb1f1b3f74e06bada54c2a9f172673
Signed-off-by: gayanper <gayanper@gmail.com>
3 files changed, 95 insertions, 0 deletions
diff --git a/org.eclipse.jdt.debug.tests/java8/RemoteEvaluator.java b/org.eclipse.jdt.debug.tests/java8/RemoteEvaluator.java new file mode 100644 index 000000000..fe4c53c1b --- /dev/null +++ b/org.eclipse.jdt.debug.tests/java8/RemoteEvaluator.java @@ -0,0 +1,23 @@ +import java.util.Arrays; +import java.util.function.Predicate; + +public class RemoteEvaluator { + public static final Predicate<String> P_EMPTY = s -> s.isEmpty(); + + public static void main(String[] args) { + (new RemoteEvaluator()).exec(); + } + + public void exec() { + (new Inner()).run(); + } + + class Inner { + private final Predicate<String> Q_EMPTY = s -> s.isEmpty(); + + public void run() { + String y = "111"; + Arrays.asList("111", "222", "aaa").stream().filter(a -> a.equals(y)).count(); + } + } +} diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java index 537c152c7..45a356c4b 100644 --- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java +++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AbstractDebugTest.java @@ -475,6 +475,7 @@ public abstract class AbstractDebugTest extends TestCase implements IEvaluation cfgs.add(createLaunchConfiguration(jp, "Bug560392")); cfgs.add(createLaunchConfiguration(jp, "Bug561715")); cfgs.add(createLaunchConfiguration(jp, "Bug562056")); + cfgs.add(createLaunchConfiguration(jp, "RemoteEvaluator")); loaded18 = true; waitForBuild(); } diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/RemoteEvaluatorTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/RemoteEvaluatorTests.java new file mode 100644 index 000000000..4ea384592 --- /dev/null +++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/eval/RemoteEvaluatorTests.java @@ -0,0 +1,71 @@ +/******************************************************************************* + * Copyright (c) 2020 Gayan Perera and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Gayan Perera - initial API and implementation + *******************************************************************************/ +package org.eclipse.jdt.debug.tests.eval; + +import org.eclipse.debug.core.model.IValue; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.debug.core.IJavaThread; +import org.eclipse.jdt.debug.tests.AbstractDebugTest; + +public class RemoteEvaluatorTests extends AbstractDebugTest { + private IJavaThread javaThread; + + public RemoteEvaluatorTests(String name) { + super(name); + } + + public void testEvaluate_InInnerScope_FieldInOuterScope() throws Exception { + debugWithBreakpoint("RemoteEvaluator", 20); + + String code = "java.util.Arrays.asList(\"a\", \"b\", \"ac\").stream().filter(v -> RemoteEvaluator.P_EMPTY.test(v)).count()"; + IValue value = evaluate(code); + + assertNotNull("result is null", value); + assertEquals("count is not 0", "0", value.getValueString()); + } + + + public void testEvaluate_InOuterScope_FieldInSameScope() throws Exception { + debugWithBreakpoint("RemoteEvaluator", 12); + IValue value = evaluate("java.util.Arrays.asList(\"a\", \"b\", \"ac\").stream().filter(v -> RemoteEvaluator.P_EMPTY.test(v)).count()"); + + assertNotNull("result is null", value); + assertEquals("count is not 0", "0", value.getValueString()); + } + + @Override + protected IJavaProject getProjectContext() { + return get18Project(); + } + + private void debugWithBreakpoint(String testClass, int lineNumber) throws Exception { + createLineBreakpoint(lineNumber, testClass); + javaThread = launchToBreakpoint(testClass); + assertNotNull("The program did not suspend", javaThread); + } + + private IValue evaluate(String snippet) throws Exception { + return doEval(javaThread, snippet); + } + + @Override + protected void tearDown() throws Exception { + try { + terminateAndRemove(javaThread); + } finally { + super.tearDown(); + removeAllBreakpoints(); + } + } +} |
