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); } }