use of org.eclipse.titan.designer.AST.TTCN3.statements.StatementBlock_Statement in project titan.EclipsePlug-ins by eclipse.
the class ReturnVisitor method visit.
@Override
public int visit(final IVisitableNode node) {
// certain YES
if (node instanceof Return_Statement) {
certainty = ReturnCertainty.YES;
return V_ABORT;
}
//
if (node instanceof StatementBlock || node instanceof StatementList) {
final StatementBlockVisitor blockVis = new StatementBlockVisitor();
node.accept(blockVis);
certainty = blockVis.getCertainty();
return V_SKIP;
}
// custom statements
if (node instanceof While_Statement || node instanceof DoWhile_Statement || node instanceof For_Statement) {
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
// conditional blocks: maximum MAYBE
certainty = branchMerger.getCertainty().or(ReturnCertainty.NO);
return V_SKIP;
}
if (node instanceof If_Statement) {
final If_Statement ifs = (If_Statement) node;
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
if (ifs.getStatementBlock() != null) {
// must enter one block: maximum YES
certainty = branchMerger.getCertainty();
} else {
// conditional blocks: maximum MAYBE
certainty = branchMerger.getCertainty().or(ReturnCertainty.NO);
}
return V_SKIP;
}
if (node instanceof Alt_Statement) {
final AltGuards ags = ((Alt_Statement) node).getAltGuards();
final BranchMerger branchMerger = new BranchMerger();
ags.accept(branchMerger);
if (ags.hasElse()) {
// must enter one block: maximum YES
certainty = branchMerger.getCertainty();
} else {
// conditional blocks: maximum MAYBE
certainty = branchMerger.getCertainty().or(ReturnCertainty.NO);
}
return V_SKIP;
}
if (node instanceof Interleave_Statement) {
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
// conditional block: maximum MAYBE
certainty = branchMerger.getCertainty().or(ReturnCertainty.NO);
return V_SKIP;
}
if (node instanceof StatementBlock_Statement) {
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
// must enter block: maximum YES
certainty = branchMerger.getCertainty();
return V_SKIP;
}
if (node instanceof SelectCase_Statement) {
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
// must enter one block: maximum YES
certainty = branchMerger.getCertainty();
return V_SKIP;
}
return V_ABORT;
}
use of org.eclipse.titan.designer.AST.TTCN3.statements.StatementBlock_Statement in project titan.EclipsePlug-ins by eclipse.
the class Def_Testcase_Writer method writeTestCaseFunction.
public String writeTestCaseFunction(StatementBlock tcStatementBlock) {
int testcaseSize = tcStatementBlock.getSize();
for (int j = 0; j < testcaseSize; j++) {
if (tcStatementBlock.getStatementByIndex(j) instanceof Definition_Statement) {
Definition_Statement tc_defStatement = (Definition_Statement) tcStatementBlock.getStatementByIndex(j);
defCounter++;
defValueCounter++;
writeDefinitionStatement(tc_defStatement);
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Assignment_Statement) {
Assignment_Statement tc_assignStatement = (Assignment_Statement) tcStatementBlock.getStatementByIndex(j);
assignCounter++;
testCaseString.append(writeAssignmentStatement(tc_assignStatement));
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Connect_Statement) {
Connect_Statement tc_connectStatement = (Connect_Statement) tcStatementBlock.getStatementByIndex(j);
connectCounter++;
writeConnectStatement(tc_connectStatement);
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Unknown_Start_Statement) {
Unknown_Start_Statement tc_startStatement = (Unknown_Start_Statement) tcStatementBlock.getStatementByIndex(j);
writeUnknownStartStatement(tc_startStatement);
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Done_Statement) {
testCaseString.append("hc.done(\"all component\");" + "\r\n");
// TODO: where is all coming from?
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Map_Statement) {
Map_Statement tc_mapStatement = (Map_Statement) tcStatementBlock.getStatementByIndex(j);
mapCounter++;
writeMapStatement(tc_mapStatement);
} else if (tcStatementBlock.getStatementByIndex(j) instanceof If_Statement) {
If_Statement tc_ifStatement = (If_Statement) tcStatementBlock.getStatementByIndex(j);
tcIfConditionCounter++;
writeIfStatement(tc_ifStatement);
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Setverdict_Statement) {
Setverdict_Statement tc_setVerdictStatement = (Setverdict_Statement) tcStatementBlock.getStatementByIndex(j);
writeSetVerdictStatement(tc_setVerdictStatement);
} else if (tcStatementBlock.getStatementByIndex(j) instanceof DoWhile_Statement) {
doWhileCounter++;
DoWhile_Statement doWhileStatement = (DoWhile_Statement) tcStatementBlock.getStatementByIndex(j);
String test = doWhileStatement.getExpression().toString();
testCaseString.append("do{" + "\r\n");
this.writeTestCaseFunction(doWhileStatement.getStatementBlock());
testCaseString.append("while(" + doWhileExpressions.get(doWhileCounter) + ".getValue());\r\n");
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Send_Statement) {
Send_Statement tc_SendStatement = (Send_Statement) tcStatementBlock.getStatementByIndex(j);
sendCounter++;
testCaseString.append(writeSendStatement(tc_SendStatement));
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Receive_Port_Statement) {
Receive_Port_Statement tc_ReceiveStatement = (Receive_Port_Statement) tcStatementBlock.getStatementByIndex(j);
receiveCounter++;
blockStatementBlockStatementWriter = true;
testCaseString.append(writeReceiveStatement(tc_ReceiveStatement));
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Unknown_Stop_Statement) {
Unknown_Stop_Statement tc_StopStatement = (Unknown_Stop_Statement) tcStatementBlock.getStatementByIndex(j);
writeUnknownStopStatement(tc_StopStatement);
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Alt_Statement) {
altStatementCounter++;
altStatements.get(altStatementCounter).setTimerInfo(isThereAStartedTimer, currentTimerName);
testCaseString.append(altStatements.get(altStatementCounter).getJavaSource());
} else if (tcStatementBlock.getStatementByIndex(j) instanceof Disconnect_Statement) {
Disconnect_Statement tc_disconnectStatement = (Disconnect_Statement) tcStatementBlock.getStatementByIndex(j);
disconnectCounter++;
writeDisconnectStatement(tc_disconnectStatement);
} else if ((tcStatementBlock.getStatementByIndex(j) instanceof StatementBlock_Statement) && !blockStatementBlockStatementWriter) {
StatementBlock_Statement tc_statementBlockStatement = (StatementBlock_Statement) tcStatementBlock.getStatementByIndex(j);
blockStatementBlockStatementWriter = false;
testCaseString.append("{\r\n");
blockWriter = true;
writeTestCaseFunction(tc_statementBlockStatement.getStatementBlock());
blockWriter = false;
testCaseString.append("}\r\n");
}
}
if (!blockWriter) {
testCaseString.append("}" + "\r\n");
}
return testCaseString.toString();
}
Aggregations