Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/***************************************************
** @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);
}
}