blob: a445fafac6fad4b6de5643bede831e3bedeb234f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2012 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.debug.tests.sourcelookup;
import org.eclipse.debug.core.model.IBreakpoint;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.debug.core.IJavaLineBreakpoint;
import org.eclipse.jdt.debug.core.IJavaReferenceType;
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.JavaDebugUtils;
/**
* Tests resolution of Java debug model type into Java model types.
*/
public class TypeResolutionTests extends AbstractDebugTest {
public TypeResolutionTests(String name) {
super(name);
}
public void testTypeAA() throws Exception {
resolve(65, "EvalNestedTypeTests$A$AA");
}
public void testTypeAB() throws Exception {
resolve(94, "EvalNestedTypeTests$A$AB");
}
public void testTypeAC() throws Exception {
resolve(120, "EvalNestedTypeTests$A$AC");
}
public void testAnonTypeA1() throws Exception {
resolve(145, "EvalNestedTypeTests$A$1");
}
public void testTypeAE() throws Exception {
resolve(179, "EvalNestedTypeTests$A$AE");
}
public void testAnonTypeA2() throws Exception {
resolve(203, "EvalNestedTypeTests$A$2");
}
public void testTypeBB() throws Exception {
resolve(252, "EvalNestedTypeTests$B$BB");
}
public void testTypeBC() throws Exception {
resolve(279, "EvalNestedTypeTests$B$BC");
}
public void testAnonTypeB() throws Exception {
resolve(304, "EvalNestedTypeTests$B$1");
}
public void testTypeB() throws Exception {
resolve(312, "EvalNestedTypeTests$B");
}
public void testTypeCB() throws Exception {
resolve(354, "EvalNestedTypeTests$C$CB");
}
public void testTypeCC() throws Exception {
resolve(381, "EvalNestedTypeTests$C$CC");
}
public void testAnonTypeC1() throws Exception {
resolve(406, "EvalNestedTypeTests$C$1");
}
public void testAnonTypeDB() throws Exception {
resolve(455, "EvalNestedTypeTests$1$DB");
}
public void testAnonTypeDC() throws Exception {
resolve(481, "EvalNestedTypeTests$1$DC");
}
public void testAnonType11() throws Exception {
resolve(506, "EvalNestedTypeTests$1$1");
}
public void testTopLevelType() throws Exception {
resolve(523, "EvalNestedTypeTests");
}
public void testTypeEB() throws Exception {
resolve(566, "EvalNestedTypeTests$E$EB");
}
public void testTypeEC() throws Exception {
resolve(592, "EvalNestedTypeTests$E$EC");
}
public void testAnonTypeE1() throws Exception {
resolve(616, "EvalNestedTypeTests$E$1");
}
public void testAnonTypeFB() throws Exception {
resolve(664, "EvalNestedTypeTests$2$FB");
}
public void testAnonTypeFC() throws Exception {
resolve(690, "EvalNestedTypeTests$2$FC");
}
public void testAnonType21() throws Exception {
resolve(714, "EvalNestedTypeTests$2$1");
}
/**
* Performs a resolution test. Debugs to a breakpoint and resolves the
* declaring type of the stack frame.
*
* @param line breakpoint line number
* @param expectedName expected fully qualified name of resolved type
* @throws Exception on failure
*/
protected void resolve(int line, String expectedName) throws Exception {
String typeName = "EvalNestedTypeTests";
IJavaLineBreakpoint bp = createLineBreakpoint(line, typeName);
IJavaThread thread= null;
try {
thread= launchToBreakpoint(typeName, false);
assertNotNull("Breakpoint not hit within timeout period", thread);
IBreakpoint hit = getBreakpoint(thread);
assertEquals("Wrong breakpoint", bp, hit);
IJavaStackFrame frame = (IJavaStackFrame) thread.getTopStackFrame();
IJavaReferenceType referenceType = frame.getReferenceType();
IType type = JavaDebugUtils.resolveType(referenceType);
assertNotNull("failed to resolve type", type);
assertEquals("Wrong type", expectedName, type.getFullyQualifiedName());
} finally {
terminateAndRemove(thread);
removeAllBreakpoints();
}
}
}