/******************************************************************************* | |
* Copyright (c) 2009, 2010 Nokia 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: | |
* Nokia - Initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.cdt.debug.edc.debugger.tests; | |
import org.eclipse.cdt.debug.edc.internal.formatter.FormatExtensionManager; | |
import org.eclipse.cdt.dsf.debug.service.IExpressions2.CastInfo; | |
import org.junit.After; | |
import org.junit.Before; | |
import org.junit.Test; | |
/** | |
* Tests of expression evaluation using cast operators. | |
* | |
* Additional checks for code where variables are in registers. | |
*/ | |
public class ExpressionsCasting2 extends BaseExpressionTest { | |
private static final String YOU_SHOULD_BE_SEEING_THIS_TEXT = "\"You should be seeing this text!\""; | |
/* (non-Javadoc) | |
* @see org.eclipse.cdt.debug.edc.debugger.tests.SimpleDebuggerTest#getRequiredLaunchConfigurationType() | |
*/ | |
@Override | |
protected String getRequiredLaunchConfigurationType() { | |
return "com.nokia.cdt.debug.launch.systemTRKLaunch"; | |
} | |
boolean formatterSetting; | |
@Before | |
public void turnOnFormatter() { | |
formatterSetting = FormatExtensionManager.instance().isEnabled(); | |
FormatExtensionManager.instance().setEnabled(true); | |
} | |
@After | |
public void restoreFormatter() { | |
FormatExtensionManager.instance().setEnabled(formatterSetting); | |
} | |
@Test | |
public void testCastingRegisters() throws Exception { | |
if (launch == null) { | |
System.out.println("== testCastingRegisters() reporting PASSED but will be skipped."); | |
return; | |
} | |
openSnapshotAndWaitForSuspendedContext(1); | |
// these variables are in registers | |
checkCastedExpr(null, YOU_SHOULD_BE_SEEING_THIS_TEXT, "aArg2", new CastInfo("TPtr8*")); | |
checkCastedExpr(null, YOU_SHOULD_BE_SEEING_THIS_TEXT, "aArg3", new CastInfo("TPtr8*")); | |
checkCastedExpr(null, YOU_SHOULD_BE_SEEING_THIS_TEXT, "aArg3", new CastInfo("TPtr8&")); | |
// cast value in register directly to float, don't complain about "& of register" | |
checkCastedExpr(null, "5.962985E-39", "aArg2", new CastInfo("float")); | |
} | |
@Test | |
public void testCastingArraysInRegisters() throws Exception { | |
if (launch == null) { | |
System.out.println("== testCastingArraysInRegisters() reporting PASSED but will be skipped."); | |
return; | |
} | |
openSnapshotAndWaitForSuspendedContext(1); | |
// these variables are in registers, don't complain about "& of register" | |
CastInfo arrayCast = new CastInfo("TPtr8*", 0, 2); | |
checkCastedChildExpr(null, YOU_SHOULD_BE_SEEING_THIS_TEXT, "aArg3", arrayCast, "aArg3[0]"); | |
} | |
@Override | |
public String getAlbumName() { | |
return "RegisterFrameTestsBlackFlagRVCT.dsa"; | |
} | |
} |