1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-25 01:45:33 +02:00

Bug 397715 - Update JUnit tests to verify value of change memory and

expression.

Change-Id: I75a9dc166ae3287973d8b32e20cc121ea842cd27
Reviewed-on: https://git.eclipse.org/r/9964
Reviewed-by: Marc Khouzam <marc.khouzam@ericsson.com>
IP-Clean: Marc Khouzam <marc.khouzam@ericsson.com>
Tested-by: Marc Khouzam <marc.khouzam@ericsson.com>
This commit is contained in:
Marc Khouzam 2013-01-28 12:55:12 -05:00
parent 3b431d7bcf
commit f0b7098f00
2 changed files with 71 additions and 6 deletions

View file

@ -30,6 +30,7 @@ import org.eclipse.cdt.dsf.debug.service.IExpressions;
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.FormattedValueDMContext;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.FormattedValueDMData;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues.IFormattedDataDMContext;
import org.eclipse.cdt.dsf.debug.service.IProcesses.IProcessDMContext;
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMContext;
@ -432,6 +433,26 @@ public class SyncUtil {
return fSession.getExecutor().submit(callable).get();
}
public static String getExpressionValue(final IExpressionDMContext exprDmc, final String format)
throws Throwable {
Query<String> query = new Query<String>() {
@Override
protected void execute(final DataRequestMonitor<String> rm) {
FormattedValueDMContext valueDmc = fExpressions.getFormattedValueContext(exprDmc, format);
fExpressions.getFormattedExpressionValue(valueDmc,
new ImmediateDataRequestMonitor<FormattedValueDMData>(rm) {
@Override
protected void handleSuccess() {
rm.done(getData().getFormattedValue());
}
});
}
};
fSession.getExecutor().execute(query);
return query.get();
}
public static FormattedValueDMContext getFormattedValue(
final IFormattedValues service, final IFormattedDataDMContext dmc, final String formatId) throws Throwable
{

View file

@ -27,6 +27,7 @@ import org.eclipse.cdt.dsf.datamodel.IDMEvent;
import org.eclipse.cdt.dsf.debug.service.IExpressions;
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMAddress;
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
import org.eclipse.cdt.dsf.debug.service.IFormattedValues;
import org.eclipse.cdt.dsf.debug.service.IMemory;
import org.eclipse.cdt.dsf.debug.service.IMemory.IMemoryChangedEvent;
import org.eclipse.cdt.dsf.debug.service.IMemory.IMemoryDMContext;
@ -147,14 +148,24 @@ public class GDBConsoleSynchronizingTest_7_6 extends BaseTestCase {
IExpressionDMAddress data = query.get();
IMemoryDMContext memoryDmc = DMContexts.getAncestorOfType(frameDmc, IMemoryDMContext.class);
readMemory(memoryDmc, data.getAddress(), data.getSize());
readMemory(memoryDmc, data.getAddress(), 1);
fEventsReceived.clear();
queueConsoleCommand("set variable i=100");
final String newValue = "100";
queueConsoleCommand("set variable i=" + newValue);
IMemoryChangedEvent memoryEvent = waitForEvent(IMemoryChangedEvent.class);
assertEquals(1, memoryEvent.getAddresses().length);
assertEquals(data.getAddress(), memoryEvent.getAddresses()[0]);
// Now verify the memory service knows the new memory value
MemoryByte[] memory = readMemory(memoryDmc, data.getAddress(), 1);
assertEquals(newValue, Byte.toString(memory[0].getValue()));
// Now verify the expressions service knows the new value
String exprValue = SyncUtil.getExpressionValue(exprDmc, IFormattedValues.DECIMAL_FORMAT);
assertEquals(newValue, exprValue);
}
/**
@ -181,11 +192,22 @@ public class GDBConsoleSynchronizingTest_7_6 extends BaseTestCase {
IExpressionDMAddress data = query.get();
fEventsReceived.clear();
queueConsoleCommand("set variable i=100");
final String newValue = "100";
queueConsoleCommand("set variable i=" + newValue);
IMemoryChangedEvent memoryEvent = waitForEvent(IMemoryChangedEvent.class);
assertEquals(1, memoryEvent.getAddresses().length);
assertEquals(data.getAddress(), memoryEvent.getAddresses()[0]);
// Now verify the memory service knows the new memory value
IMemoryDMContext memoryDmc = DMContexts.getAncestorOfType(frameDmc, IMemoryDMContext.class);
MemoryByte[] memory = readMemory(memoryDmc, data.getAddress(), 1);
assertEquals(newValue, Byte.toString(memory[0].getValue()));
// Now verify the expressions service knows the new value
String exprValue = SyncUtil.getExpressionValue(exprDmc, IFormattedValues.DECIMAL_FORMAT);
assertEquals(newValue, exprValue);
}
/**
@ -212,11 +234,22 @@ public class GDBConsoleSynchronizingTest_7_6 extends BaseTestCase {
IExpressionDMAddress data = query.get();
fEventsReceived.clear();
queueConsoleCommand("print i=100");
final String newValue = "100";
queueConsoleCommand("print i=" + newValue);
IMemoryChangedEvent memoryEvent = waitForEvent(IMemoryChangedEvent.class);
assertEquals(1, memoryEvent.getAddresses().length);
assertEquals(data.getAddress(), memoryEvent.getAddresses()[0]);
// Now verify the memory service knows the new memory value
IMemoryDMContext memoryDmc = DMContexts.getAncestorOfType(frameDmc, IMemoryDMContext.class);
MemoryByte[] memory = readMemory(memoryDmc, data.getAddress(), 1);
assertEquals(newValue, Byte.toString(memory[0].getValue()));
// Now verify the expressions service knows the new value
String exprValue = SyncUtil.getExpressionValue(exprDmc, IFormattedValues.DECIMAL_FORMAT);
assertEquals(newValue, exprValue);
}
/**
@ -242,11 +275,22 @@ public class GDBConsoleSynchronizingTest_7_6 extends BaseTestCase {
IExpressionDMAddress data = query.get();
fEventsReceived.clear();
queueConsoleCommand("set {int}&i=100");
final String newValue = "100";
queueConsoleCommand("set {int}&i=" + newValue);
IMemoryChangedEvent memoryEvent = waitForEvent(IMemoryChangedEvent.class);
assertEquals(1, memoryEvent.getAddresses().length);
assertEquals(data.getAddress(), memoryEvent.getAddresses()[0]);
// Now verify the memory service knows the new memory value
IMemoryDMContext memoryDmc = DMContexts.getAncestorOfType(frameDmc, IMemoryDMContext.class);
MemoryByte[] memory = readMemory(memoryDmc, data.getAddress(), 1);
assertEquals(newValue, Byte.toString(memory[0].getValue()));
// Now verify the expressions service knows the new value
String exprValue = SyncUtil.getExpressionValue(exprDmc, IFormattedValues.DECIMAL_FORMAT);
assertEquals(newValue, exprValue);
}
//////////////////////////////////////////////////////////////////////////////////////