/******************************************************************************* | |
* Copyright (c) 2019 IBM Corporation 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: | |
* Paul Pazderski - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.jdt.debug.tests.ui.presentation; | |
import org.eclipse.debug.core.model.ILineBreakpoint; | |
import org.eclipse.debug.core.model.IVariable; | |
import org.eclipse.debug.ui.IDebugModelPresentation; | |
import org.eclipse.jdt.core.IJavaProject; | |
import org.eclipse.jdt.debug.core.IJavaStackFrame; | |
import org.eclipse.jdt.debug.core.IJavaThread; | |
import org.eclipse.jdt.debug.tests.AbstractDebugTest; | |
import org.eclipse.jdt.internal.debug.core.logicalstructures.JDILambdaVariable; | |
import org.eclipse.jdt.internal.debug.core.model.LambdaUtils; | |
import org.eclipse.jdt.internal.debug.ui.JDIModelPresentation; | |
/** | |
* Tests for some of the methods of the model presentation requiring/using Java 1.8 features. | |
* | |
* @see JDIModelPresentation | |
* @see ModelPresentationTests | |
*/ | |
public class ModelPresentationTests18 extends AbstractDebugTest { | |
/** | |
* Constructor | |
*/ | |
public ModelPresentationTests18() { | |
super("Model Presentation tests using Java 1.8 features"); | |
} | |
@Override | |
protected IJavaProject getProjectContext() { | |
return get18Project(); | |
} | |
/** | |
* Tests a closure/lambda variable text including variable type name. | |
* | |
* Test for Bug 542989. | |
* | |
* @throws Exception | |
*/ | |
public void testClosureVariableText() throws Exception { | |
String typeName = "ClosureVariableTest_Bug542989"; | |
ILineBreakpoint bp = createLineBreakpoint(18, typeName); | |
JDIModelPresentation pres = new JDIModelPresentation(); | |
IJavaThread thread = null; | |
try { | |
thread = launchToLineBreakpoint(typeName, bp); | |
IJavaStackFrame frame = (IJavaStackFrame) thread.getTopStackFrame(); | |
assertTrue("Did not stopped in lambda context.", LambdaUtils.isLambdaFrame(frame)); | |
String closureVariableName = new JDILambdaVariable(null).getName(); | |
IVariable closure = findVariable(frame, closureVariableName); | |
assertNotNull("Could not find variable '" + closureVariableName + "'", closure); | |
pres.setAttribute(IDebugModelPresentation.DISPLAY_VARIABLE_TYPE_NAMES, Boolean.TRUE); | |
String text = pres.getText(closure); | |
assertNotNull(text); | |
} finally { | |
terminateAndRemove(thread); | |
removeAllBreakpoints(); | |
pres.dispose(); | |
} | |
} | |
} |