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.junit.BeforeClass; import org.junit.Test; /** * Contains test cases testing the debugging of operations defined on the String * type. * * @author Claas Wilke */ public class TestDebugIfExpressions extends AbstractDebuggerTest { @BeforeClass public static void setUp() throws Exception { AbstractDebuggerTest.setUp(); } @Test public void testIfExpressionStepInto01() throws Exception { String oclResource = "resources/expressions/if01.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 if expression. */ assertCurrentLine(5, debugger); assertStackSize(2, debugger); assertStackName(CallStackConstants.IF_EXPRESSION, debugger); assertVariableNumber(1, debugger); assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger); debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger); /* Debugger at boolean expression 'true'. */ assertCurrentLine(5, debugger); assertStackSize(3, debugger); assertStackName(CallStackConstants.BOOLEAN_LITERAL + " (true)", debugger); assertVariableNumber(1, debugger); assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger); debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger); /* Debugger at integer literal '1'. */ assertCurrentLine(6, debugger); assertStackSize(3, debugger); assertStackName(CallStackConstants.INTEGER_LITERAL + " (1)", debugger); /* 'oclCondition' should be on the stack. */ assertVariableNumber(2, debugger); assertVariableExist(OclDebugger.OCL_IF_CONDITION_RESULT_VATRIABLE_NAME, debugger); assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger); debugStepAndWaitFor(DebugStep.STEP_INTO, DebugEvent.SUSPENDED, debugger); /* Debugger after if expression. */ 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 testIfExpressionStepOver01() throws Exception { String oclResource = "resources/expressions/if01.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 if expression. */ assertCurrentLine(5, debugger); assertStackSize(2, debugger); assertStackName(CallStackConstants.IF_EXPRESSION, debugger); assertVariableNumber(1, debugger); assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger); debugStepAndWaitFor(DebugStep.STEP_OVER, DebugEvent.SUSPENDED, debugger); /* Debugger after if expression. */ 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 testIfExpressionStepReturn01() throws Exception { String oclResource = "resources/expressions/if01.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 if expression. */ assertCurrentLine(5, debugger); assertStackSize(2, debugger); assertStackName(CallStackConstants.IF_EXPRESSION, debugger); assertVariableNumber(1, debugger); assertVariableExist(OclDebugger.SELF_VARIABLE_NAME, debugger); debugStepAndWaitFor(DebugStep.STEP_RETURN, DebugEvent.SUSPENDED, debugger); /* Debugger after if expression. */ 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); } }