package org.dresdenocl.debug.test.unit;
import java.io.File;
import org.dresdenocl.debug.OclDebugger;
import org.dresdenocl.debug.test.AbstractDebuggerTest;
import org.dresdenocl.debug.test.CallStackConstants;
import org.dresdenocl.debug.test.DebugTestPlugin;
import org.dresdenocl.interpreter.internal.OclInterpreter;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Contains test cases testing the debugging of operations defined on the String
* type.
*
* @author Claas Wilke
*/
public class TestDebugConstraintKinds extends AbstractDebuggerTest {
@BeforeClass
public static void setUp() throws Exception {
AbstractDebuggerTest.setUp();
}
@Test
public void testBodyStepInto01() throws Exception {
String oclResource = "resources/constraintkind/body/body01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testBodyStepInto02() throws Exception {
String oclResource = "resources/constraintkind/body/body02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testBodyStepOver01() throws Exception {
String oclResource = "resources/constraintkind/body/body01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testBodyStepOver02() throws Exception {
String oclResource = "resources/constraintkind/body/body02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testBodyStepReturn01() throws Exception {
String oclResource = "resources/constraintkind/body/body01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testBodyStepReturn02() throws Exception {
String oclResource = "resources/constraintkind/body/body02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepInto01() throws Exception {
String oclResource = "resources/constraintkind/def/def01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepInto02() throws Exception {
String oclResource = "resources/constraintkind/def/def02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepInto03() throws Exception {
String oclResource = "resources/constraintkind/def/def03.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepInto04() throws Exception {
String oclResource = "resources/constraintkind/def/def04.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepInto05() throws Exception {
String oclResource = "resources/constraintkind/def/def05.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression 'definedProperty2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL
+ " (definedProperty2)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at variable call expression 'self'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.VARIABLE_CALL + " (self)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at definition 'definedProperty2'. */
assertCurrentLine(7, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at boolean literal 'true'. */
assertCurrentLine(8, debugger);
assertStackSize(4, debugger);
assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)",
debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after boolean literal 'true'. */
assertCurrentLine(7, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'definedProperty2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL
+ " (definedProperty2)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PROPERTY_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after property call expression 'definedProperty2'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepInto06() throws Exception {
// TODO Fix after bug fix.
String oclResource = "resources/constraintkind/def/def06.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'staticDefinedProperty2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL
+ " (staticDefinedProperty2)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at variable call expression 'self'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.VARIABLE_CALL + " (self)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at definition 'staticDefinedProperty2'. */
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
assertCurrentLine(7, debugger);
assertStackSize(3, debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at boolean literal 'true'. */
assertCurrentLine(8, debugger);
assertStackSize(4, debugger);
assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)",
debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after boolean literal 'true'. */
assertCurrentLine(7, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'staticDefinedProperty2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL
+ " (staticDefinedProperty2)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PROPERTY_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after property call expression 'staticDefinedProperty2'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepInto07() throws Exception {
String oclResource = "resources/constraintkind/def/def07.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression 'definedOperation2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL
+ " (definedOperation2)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at variable call expression 'self'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.VARIABLE_CALL + " (self)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at definition 'definedOperation2'. */
assertCurrentLine(7, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at boolean literal 'true'. */
assertCurrentLine(8, debugger);
assertStackSize(4, debugger);
assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)",
debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after boolean literal 'true'. */
assertCurrentLine(7, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression 'definedOperation2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL
+ " (definedOperation2)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression 'definedOperation2'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepInto08() throws Exception {
/* TODO Fix after bug fix. */
String oclResource = "resources/constraintkind/def/def08.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression 'staticDefinedOperation2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL
+ " (staticDefinedOperation2)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at variable call expression 'self'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.VARIABLE_CALL + " (self)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at definition 'staticDefinedOperation2'. */
assertCurrentLine(7, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at boolean literal 'true'. */
assertCurrentLine(8, debugger);
assertStackSize(4, debugger);
assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)",
debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after boolean literal 'true'. */
assertCurrentLine(7, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression 'definedOperation2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL
+ " (definedOperation2)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression 'definedOperation2'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepOver01() throws Exception {
String oclResource = "resources/constraintkind/def/def01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepOver02() throws Exception {
String oclResource = "resources/constraintkind/def/def02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepOver03() throws Exception {
String oclResource = "resources/constraintkind/def/def03.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepOver04() throws Exception {
String oclResource = "resources/constraintkind/def/def04.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepOver05() throws Exception {
String oclResource = "resources/constraintkind/def/def05.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'definedProperty2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL
+ " (definedProperty2)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'definedProperty2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL
+ " (definedProperty2)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PROPERTY_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after property call expression 'definedProperty2'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepOver07() throws Exception {
String oclResource = "resources/constraintkind/def/def07.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression 'definedOperation2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL
+ " (definedOperation2)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression 'definedOperation2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL
+ " (definedOperation2)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression 'definedOperation2'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepReturn01() throws Exception {
String oclResource = "resources/constraintkind/def/def01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepReturn02() throws Exception {
String oclResource = "resources/constraintkind/def/def02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepReturn03() throws Exception {
String oclResource = "resources/constraintkind/def/def03.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepReturn04() throws Exception {
String oclResource = "resources/constraintkind/def/def04.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionStepReturn05() throws Exception {
String oclResource = "resources/constraintkind/def/def05.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'definedProperty2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL
+ " (definedProperty2)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after property call expression 'definedProperty2'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDefinitionReturnOver07() throws Exception {
String oclResource = "resources/constraintkind/def/def07.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression 'definedOperation2'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL
+ " (definedOperation2)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after operation call expression 'definedOperation2'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDeriveStepInto01() throws Exception {
String oclResource = "resources/constraintkind/derive/derive01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDeriveStepInto02() throws Exception {
String oclResource = "resources/constraintkind/derive/derive02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDeriveStepOver01() throws Exception {
String oclResource = "resources/constraintkind/derive/derive01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDeriveStepOver02() throws Exception {
String oclResource = "resources/constraintkind/derive/derive02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDeriveStepReturn01() throws Exception {
String oclResource = "resources/constraintkind/derive/derive01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testDeriveStepReturn02() throws Exception {
String oclResource = "resources/constraintkind/derive/derive02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testInitStepInto01() throws Exception {
String oclResource = "resources/constraintkind/initial/init01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testInitStepInto02() throws Exception {
String oclResource = "resources/constraintkind/initial/init02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at iterator expression 'any'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testInitStepOver01() throws Exception {
String oclResource = "resources/constraintkind/initial/init01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testInitStepOver02() throws Exception {
String oclResource = "resources/constraintkind/initial/init02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testInitStepReturn01() throws Exception {
String oclResource = "resources/constraintkind/initial/init01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testInvariantStepInto01() throws Exception {
String oclResource = "resources/constraintkind/inv/inv01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at boolean expression 'true'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)",
debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after boolean expression 'true'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testInitStepReturn02() throws Exception {
String oclResource = "resources/constraintkind/initial/init02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer expression '42'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (42)", debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after integer exp '42'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testInvariantStepReturn01() throws Exception {
String oclResource = "resources/constraintkind/inv/inv01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at boolean expression 'true'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)",
debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after boolean expression 'true'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testInvariantStepOver01() throws Exception {
String oclResource = "resources/constraintkind/inv/inv01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at boolean expression 'true'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)",
debugger);
assertVariableNumber(1, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after boolean expression 'true'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPostconditionStepInto01() throws Exception {
String oclResource = "resources/constraintkind/post/post01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'integer'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL + " (integer)",
debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at variable call expression 'self'. */
assertCurrentLine(5, debugger);
assertStackSize(4, debugger);
assertStackName(CallStackConstants.VARIABLE_CALL + " (self)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'integer'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL + " (integer)",
debugger);
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PROPERTY_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at integer literal expression. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.INTEGER_LITERAL + " (10)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(5, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression '<>'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPostconditionStepInto02() throws Exception {
String oclResource = "resources/constraintkind/post/post02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Add result variable. */
debugger.setEnviromentVariable(OclInterpreter.RESULT_VARIABLE_NAME,
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Boolean(true)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '='. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (=)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at variable call expression 'result'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.VARIABLE_CALL + " (result)",
debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at boolean literal expression. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)",
debugger);
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '='. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (=)", debugger);
assertVariableNumber(5, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '='. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (=)", debugger);
assertVariableNumber(6, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression '='. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPostconditionStepInto03() throws Exception {
// FIXME fix when bug was fixed.
String oclResource = "resources/constraintkind/post/post03.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '='. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (=)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'parent'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL + " (parent)",
debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at variable call expression 'self'. */
assertCurrentLine(5, debugger);
assertStackSize(4, debugger);
assertStackName(CallStackConstants.VARIABLE_CALL + " (self)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at property call expression 'parent'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.PROPERTY_CALL + " (parent)",
debugger);
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PROPERTY_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at boolean literal expression. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)",
debugger);
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '='. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (=)", debugger);
assertVariableNumber(5, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '='. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (=)", debugger);
assertVariableNumber(6, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression '='. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPostconditionStepOver01() throws Exception {
String oclResource = "resources/constraintkind/post/post01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(5, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression '<>'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPostconditionStepOver02() throws Exception {
String oclResource = "resources/constraintkind/post/post02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Add result variable. */
debugger.setEnviromentVariable(OclInterpreter.RESULT_VARIABLE_NAME,
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Boolean(true)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '='. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (=)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '='. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (=)", debugger);
assertVariableNumber(6, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression '='. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPostconditionStepReturn01() throws Exception {
String oclResource = "resources/constraintkind/post/post01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after operation call expression '<>'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPostconditionStepReturn02() throws Exception {
String oclResource = "resources/constraintkind/post/post02.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Add result variable. */
debugger.setEnviromentVariable(OclInterpreter.RESULT_VARIABLE_NAME,
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Boolean(true)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '='. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (=)", debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after operation call expression '='. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist(OclDebugger.RESULT_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPreconditionStepInto01() throws Exception {
String oclResource = "resources/constraintkind/pre/pre01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at variable call expression 'anInt'. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.VARIABLE_CALL + " (anInt)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at undefined literal expression. */
assertCurrentLine(5, debugger);
assertStackSize(3, debugger);
assertStackName(CallStackConstants.UNDEFINED_LITERAL, debugger);
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(4, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(5, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression '<>'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_INTO,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPreconditionStepOver01() throws Exception {
String oclResource = "resources/constraintkind/pre/pre01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(5, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_CALL_SOURCE_VATRIABLE_NAME,
debugger);
assertVariableExist(OclDebugger.OCL_PARAMETER_VALUE_VARIBALE + "1",
debugger);
assertVariableExist(OclDebugger.OCL_OPERATION_CALL_RESULT, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger);
/* Debugger after operation call expression '<>'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_OVER,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
@Test
public void testPreconditionStepReturn01() throws Exception {
String oclResource = "resources/constraintkind/pre/pre01.ocl";
OclDebugger debugger = generateDebugger(oclResource);
waitForEvent(DebugEvent.STARTED);
waitForEvent(DebugEvent.SUSPENDED);
/* Add parameter value for 'anInt'. */
debugger.setEnviromentVariable("anInt",
modelInstanceUnderTest.getModelInstanceFactory()
.createModelInstanceElement(new Integer(42)));
/* Start debugging. */
File resourceFile = getFile(oclResource, DebugTestPlugin.PLUGIN_ID);
debugger.addLineBreakPoint(resourceFile.getAbsolutePath(), 5);
debugStepAndWaitFor(DebugStep.RESUME, DebugEvent.SUSPENDED, debugger);
/* Debugger at operation call expression '<>'. */
assertCurrentLine(5, debugger);
assertStackSize(2, debugger);
assertStackName(CallStackConstants.OPERATION_CALL + " (<>)", debugger);
assertVariableNumber(2, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED,
debugger);
/* Debugger after operation call expression '<>'. */
assertCurrentLine(4, debugger);
assertStackSize(1, debugger);
assertStackName(CallStackConstants.EXPRESSION_IN_OCL, debugger);
/* 'result' should be on the stack. */
assertVariableNumber(3, debugger);
assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger);
assertVariableExist("anInt", debugger);
assertVariableExist(OclDebugger.OCL_RESULT_VATRIABLE_NAME, debugger);
debugStepAndWaitFor(DebugStep.STEP_RETURN,
DebugEvent.CONSTRAINT_INTERPRETED, debugger);
}
}