Last sync 2016.04.01
[deliverable/titan.core.git] / regression_test / XML / NegativeTest / uni.ttcn
CommitLineData
970ed795 1/******************************************************************************
d44e3c4f 2 * Copyright (c) 2000-2016 Ericsson Telecom AB
970ed795
EL
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
d44e3c4f 7 *
8 * Contributors:
9 * Balasko, Jeno
10 * Raduly, Csaba
11 *
970ed795
EL
12 ******************************************************************************/
13module uni
14{
15
16import from ReadXml all;
17import from rec { type Neg; function check_match; };
18
19type union U {
20 integer i,
21 charstring s,
22 record {
23 boolean b,
24 float f
25 } r
26};
27
28external function encU(in U u) return octetstring
29with { extension "prototype(convert) encode(XER:XER_EXTENDED)" };
30
31const U c_plain := {
32 s := "Howdy"
33}
34
35template Nodes t_plain := {
36 // node type , depth, name , value
37 { XML_READER_TYPE_ELEMENT , 0, "U", "", "" },
38 { XML_READER_TYPE_ELEMENT , 1, "s", "", "" },
39 { XML_READER_TYPE_TEXT , 2, "#text", "Howdy", "" },
40 { XML_READER_TYPE_END_ELEMENT, 1, "s", "", "" },
41 { XML_READER_TYPE_END_ELEMENT, 0, "U", "", "" }
42}
43
44type octetstring myoctetstring;
45
46const U c_replace_other := {
47 s := "Howdy"
48}
49with {
50 // Replacing i when s is selected: NOP
51 erroneous (i) "value := 'BABEFACE'O "
52}
53
54const U c_plain_r := {
55 r := { true, 3.141592 }
56}
57
58template Nodes t_plain_r := {
59 // node type , depth, name , value
60 { XML_READER_TYPE_ELEMENT , 0, "U", "", "" },
61 { XML_READER_TYPE_ELEMENT , 1, "r", "", "" },
62
63 { XML_READER_TYPE_ELEMENT , 2, "b", "", "" },
64 { XML_READER_TYPE_TEXT , 3, "#text", "true", "" },
65 { XML_READER_TYPE_END_ELEMENT, 2, "b", "", "" },
66
67 { XML_READER_TYPE_ELEMENT , 2, "f", "", "" },
68 { XML_READER_TYPE_TEXT , 3, "#text", "3.141592", "" },
69 { XML_READER_TYPE_END_ELEMENT, 2, "f", "", "" },
70
71 { XML_READER_TYPE_END_ELEMENT, 1, "r", "", "" },
72 { XML_READER_TYPE_END_ELEMENT, 0, "U", "", "" }
73}
74
75testcase u_plain() runs on Neg
76{
77 var octetstring o;
78 var Nodes nodes;
79
80 o := encU(c_plain);
81 nodes := gather(o, ignore_ws);
82 check_match(nodes, t_plain);
83
84 o := encU(c_replace_other);
85 nodes := gather(o, ignore_ws);
86 // Result unaffected by modifying a non-selected alternative
87 check_match(nodes, t_plain);
88
89 o := encU(c_plain_r);
90 nodes := gather(o, ignore_ws);
91 check_match(nodes, t_plain_r);
92}
93
94/*-------------------- REPLACE --------------------*/
95
96const U c_replace := {
97 s := "Howdy"
98}
99with {
100 erroneous (s) "value := 'BABEFACE'O "
101}
102
103const U c_replace2 := { // "named"
104 s := "Howdy"
105}
106with {
107 erroneous (s) "value := myoctetstring : 'BABEFACE'O "
108}
109
110template Nodes t_replace := {
111 // node type , depth, name , value
112 { XML_READER_TYPE_ELEMENT , 0, "U", "", "" },
113 { XML_READER_TYPE_ELEMENT , 1, "OCTET_STRING", "", "" },
114 { XML_READER_TYPE_TEXT , 2, "#text", "BABEFACE", "" },
115 { XML_READER_TYPE_END_ELEMENT, 1, "OCTET_STRING", "", "" },
116 { XML_READER_TYPE_END_ELEMENT, 0, "U", "", "" }
117}
118
119template Nodes t_replace2 := {
120 // node type , depth, name , value
121 { XML_READER_TYPE_ELEMENT , 0, "U", "", "" },
122 { XML_READER_TYPE_ELEMENT , 1, "myoctetstring", "", "" },
123 { XML_READER_TYPE_TEXT , 2, "#text", "BABEFACE", "" },
124 { XML_READER_TYPE_END_ELEMENT, 1, "myoctetstring", "", "" },
125 { XML_READER_TYPE_END_ELEMENT, 0, "U", "", "" }
126}
127
128const U c_replace_raw := {
129 s := "Howdy"
130}
131with {
132 //before no-no with union ): erroneous (i) "before := 'BABEFACE'O "
133 erroneous (s) "value(raw) := 'E29795E280BFE280BFE29795'O "
134}
135
136//const U c_replace_raw := {
137// s := "Howdy"
138//}
139//with {
140// erroneous (s) "value(raw) := '111000101001011110010101111000101000000010111111111000101000000010111111111000101001011110010101'B "
141//}
142// Alas, this is not accepted; bitstring can only be used as an erroneous raw value for RAW or PER, not XER
143
144template Nodes t_replace_raw := {
145 // node type , depth, name , value
146 { XML_READER_TYPE_ELEMENT , 0, "U", "", "" },
147
148 { XML_READER_TYPE_TEXT , 1, "#text", "\n" & "\xE2\x97\x95" & "\xE2\x80\xBF" & "\xE2\x80\xBF" & "\xE2\x97\x95" /* & "\t\t"*/, "" },
149
150 { XML_READER_TYPE_END_ELEMENT, 0, "U", "", "" }
151}
152
153testcase u_replace() runs on Neg
154{
155 var octetstring o;
156 var Nodes nodes;
157
158 o := encU(c_replace);
159 nodes := gather(o, ignore_ws);
160 check_match(nodes, t_replace);
161
162 o := encU(c_replace2);
163 nodes := gather(o, ignore_ws);
164 check_match(nodes, t_replace2);
165
166 o := encU(c_replace_raw);
167 nodes := gather(o, ignore_ws);
168 check_match(nodes, t_replace_raw);
169}
170
171// -- -- -- -- -- -- -- -- before embedded field
172
173const U c_before_r_f := c_plain_r
174with {
175 erroneous (r.f) "before := myoctetstring : 'BABEFACE'O"
176}
177
178template Nodes t_before_r_f modifies t_plain_r :=
179{
180 -,-,-,-,-, // <U>, <r>, <b>, #text, </b>
181 // perturbation: an extra element
182 { XML_READER_TYPE_ELEMENT , 2, "myoctetstring", "", "" }, //5
183 { XML_READER_TYPE_TEXT , 3, "#text", "BABEFACE", "" },
184 { XML_READER_TYPE_END_ELEMENT, 2, "myoctetstring", "", "" },
185 t_plain_r[5],
186 t_plain_r[6],
187 t_plain_r[7],
188 t_plain_r[8],
189 t_plain_r[9]
190}
191
192testcase u_before_embedded() runs on Neg
193{
194 var octetstring o;
195 var Nodes nodes;
196
197 o := encU(c_before_r_f);
198 nodes := gather(o, ignore_ws);
199 check_match(nodes, t_before_r_f);
200}
201
202// Do not forget to add the testcase to the one and only control part in rec_of.ttcn
203}
204with {
205 encode "XML"
206}
This page took 0.046373 seconds and 5 git commands to generate.