use of org.eclipse.titan.designer.AST.TTCN3.statements.Assignment_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();
}
use of org.eclipse.titan.designer.AST.TTCN3.statements.Assignment_Statement in project titan.EclipsePlug-ins by eclipse.
the class ConsecutiveAssignments method process.
@Override
protected void process(final IVisitableNode node, final Problems problems) {
if (!(node instanceof StatementBlock)) {
return;
}
final CompilationTimeStamp timestamp = CompilationTimeStamp.getBaseTimestamp();
int count = 0;
boolean limitReached = false;
Location smellLoc = null;
Assignment_Statement lastAs = null;
Assignment toMatch = null;
final StatementBlock sb = (StatementBlock) node;
// iterate statements in block
for (int i = 0; i < sb.getSize(); i++) {
final Statement s = sb.getStatementByIndex(i);
if (!(s instanceof Assignment_Statement)) {
if (limitReached) {
smellLoc.setEndOffset(lastAs.getLocation().getEndOffset());
problems.report(smellLoc, ERROR_MESSAGE);
limitReached = false;
}
count = 0;
toMatch = null;
continue;
}
final Assignment_Statement as = (Assignment_Statement) s;
final Reference ref = as.getReference();
final Assignment a = ref.getRefdAssignment(timestamp, false);
if (a == null) {
if (limitReached) {
smellLoc.setEndOffset(lastAs.getLocation().getEndOffset());
problems.report(smellLoc, ERROR_MESSAGE);
limitReached = false;
}
count = 0;
toMatch = null;
continue;
}
// consecutive assignments: consecutive Assignment_Statements have the same definition
if (toMatch == null) {
toMatch = a;
} else if (toMatch != a) {
if (limitReached) {
smellLoc.setEndOffset(lastAs.getLocation().getEndOffset());
problems.report(smellLoc, ERROR_MESSAGE);
limitReached = false;
}
count = 0;
toMatch = a;
}
if (count == 0) {
smellLoc = new Location(as.getLocation());
}
lastAs = as;
count++;
if (count >= minCountToMark) {
limitReached = true;
}
}
if (limitReached) {
smellLoc.setEndOffset(lastAs.getLocation().getEndOffset());
problems.report(smellLoc, ERROR_MESSAGE);
}
}
Aggregations