assertInitialized();
assertMessage(db, false /* to client */);
+ if (stepNumber != -1) {
+ const TestStep *stepReferred = getStep(stepNumber);
+ if (!stepReferred)
+ throw anna::RuntimeException(anna::functions::asString("Step number (%d) do not exists (test case %llu)", stepNumber, a_id), ANNA_FILE_LOCATION);
+
+ if (stepReferred->getType() != TestStep::Type::Wait)
+ throw anna::RuntimeException(anna::functions::asString("Step number (%d) must refer to a 'wait' step (test case %llu)", stepNumber, a_id), ANNA_FILE_LOCATION);
+
+ const TestCondition &tc = (static_cast<const TestStepWait*>(stepReferred))->getCondition();
+ if (tc.getCode() == "0") { // if regexp used, is not possible to detect this kind of errors
+ throw anna::RuntimeException(anna::functions::asString("Step number (%d) must refer to a 'wait for request' step (test case %llu)", stepNumber, a_id), ANNA_FILE_LOCATION);
+ }
+ }
+
TestStepSendxml2c *step = new TestStepSendxml2c(this);
step->setMsgDataBlock(db);
step->setOriginHost(host);
+ step->setWaitForRequestStepNumber(stepNumber); // -1 means, no reference
addStep(step);
}