Commit 95907b35 authored by urbant's avatar urbant
Browse files

New macros

parent 599fec5e
/**
* @desc The timeout given in seconds after which the test case will be stopped.
*/
modulepar float PX_TC_EXECUTION_TIMEOUT := 5.0;
type universal charstring Raw;
type universal charstring File;
type record of File FileList;
type port P message {
inout all;
}
type component C {
port P p;
}
/**
* @desc lexical compare the charstring p_textToMatch with the contents of the reference XML file and returns true if they represent the same XML structure
* @param p_textToMatch text to be compared with the UTF-8 contents of the XML file
* @param p_referenceXmlFile the XML file
* @param p_xsdFileList the list of XSD files
* @param p_matchError the error result in case it did not match
* @param p_referenceTTCN3File the file of the TTCN-3 test module. This path is used to find the reference XML file relative to this path, by keeping the TTCN-3 code file system independent.
* @return true if p_textToMatch and the contents of p_referenceXmlFile represent the same XML structure
*/
external function matchFile(Raw p_textToMatch, File p_referenceXmlFile, FileList p_xsdFileList, out universal charstring p_matchError, File p_referenceTTCN3File := __FILE__) return boolean;
testcase TC_${module}() runs on C system C {
var Raw v_rcv;
var universal charstring v_matchError;
map(self:p, system:p);
// encode the message
p.send(m_msg);
alt {
// compare the encoded message with the reference XML file
[] p.check(receive(Raw:?) -> value v_rcv) {
log("XML message ", v_rcv);
if (matchFile(v_rcv, "${module}.xml", ${xsdFileList}, v_matchError)) {
alt {
// match decoded value to pass test
[] p.receive(m_rcv) { // The value has been changed by the encoder or decoder (in a predictable way)
setverdict(pass, "Decoded value matches encoded template and reference XML");
}
[] p.receive {
setverdict(fail, "XML decoding failure");
}
}
} else {
setverdict(fail, v_matchError);
}
}
[] p.receive {
setverdict(fail, "Raw decoding failure");
}
}
}
control {
execute(TC_${module}(), PX_TC_EXECUTION_TIMEOUT);
}
/**
* @desc The timeout given in seconds after which the test case will be stopped.
*/
modulepar float PX_TC_EXECUTION_TIMEOUT := 5.0;
type universal charstring Raw;
type universal charstring File;
type record of File FileList;
type port P message {
inout all;
}
type component C {
port P p;
}
/**
* @desc lexical compare the charstring p_textToMatch with the contents of the reference XML file and returns true if they represent the same XML structure
* @param p_textToMatch text to be compared with the UTF-8 contents of the XML file
* @param p_referenceXmlFile the XML file
* @param p_xsdFileList the list of XSD files
* @param p_matchError the error result in case it did not match
* @param p_referenceTTCN3File the file of the TTCN-3 test module. This path is used to find the reference XML file relative to this path, by keeping the TTCN-3 code file system independent.
* @return true if p_textToMatch and the contents of p_referenceXmlFile represent the same XML structure
*/
external function matchFile(Raw p_textToMatch, File p_referenceXmlFile, FileList p_xsdFileList, out universal charstring p_matchError, File p_referenceTTCN3File := __FILE__) return boolean;
testcase TC_${module}() runs on C system C {
var Raw v_rcv;
var universal charstring v_matchError;
map(self:p, system:p);
// encode the message
p.send(m_msg);
alt {
// compare the encoded message with the reference XML file
[] p.receive(Raw:?) -> value v_rcv {
log("XML message ", v_rcv);
// TODO: in order to enable the check, a validation tool update needed so that it can work without schemas
//if (matchFile(v_rcv, "${module}.xml", {}, v_matchError)) {
setverdict(pass, "Decoded value matches reference XML");
//} else {
// setverdict(fail, v_matchError);
//}
}
[] p.receive {
setverdict(fail, "Raw decoding failure");
}
}
}
control {
execute(TC_${module}(), PX_TC_EXECUTION_TIMEOUT);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment