X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Ftesting%2FTestCase.cpp;h=455c61b5d2c87ffb1a24590f5327b5340c70c540;hb=398d53cb90e9f25dc89a46396225eef981f0ab24;hp=d048dfc2284d47334001f7e1d8154816d5850196;hpb=bfedf5aed2670ccd65405c0ff96539ccb88b8f23;p=anna.git diff --git a/source/testing/TestCase.cpp b/source/testing/TestCase.cpp index d048dfc..455c61b 100644 --- a/source/testing/TestCase.cpp +++ b/source/testing/TestCase.cpp @@ -304,9 +304,24 @@ void TestCase::addSendxml2c(const anna::DataBlock &db, anna::diameter::comm::Ori 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(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); }