/******************************************************************************* * 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(); } } }