/*************************************************** ** @author STF 475 ** @version 0.0.1 ** @purpose 9:5.1.1, Verify that two schemas with no target namespace are correctly translated ** @verdict pass accept, ttcn3verdict:pass ***************************************************/ // The following requirements are tested: // A single XML Schema may be composed of a single or several schema element information // items, and shall be translated to one or more TTCN-3 modules, corresponding to schema // components that have the same target namespace. For XSD schemas with the same target // namespace (including absence of the target namespace) exactly one TTCN-3 module shall // be generated. // The names of the TTCN 3 modules generated based on this clause shall be the result of // applying the name transformation rules in clause 5.2.2 to ... the predefined name // "NoTargetNamespace". module Pos_050101_namespaces_004 { import from NoTargetNamespace language "XSD" all; template MyType m_msg := 4; 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_Pos_050101_namespaces_004() 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, "Pos_050101_namespaces_004.xml", { "Pos_050101_namespaces_004.xsd", "Pos_050101_namespaces_004_1.xsd" }, v_matchError)) { alt { // match decoded value to pass test [] p.receive(m_msg) { 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_Pos_050101_namespaces_004(), 5.0); } }