Sync with 5.4.0
[deliverable/titan.core.git] / regression_test / XML / XER / Txerobjclass.ttcnpp
1 /******************************************************************************
2 * Copyright (c) 2000-2015 Ericsson Telecom AB
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
7 ******************************************************************************/
8 module Txerobjclass
9 {
10 modulepar boolean Txerobjclass_verbose := false;
11 #define verbose Txerobjclass_verbose
12
13 #include "../macros.ttcnin"
14
15 import from ObjectClass all;
16 import from ObjectClassWithSyntax all;
17 import from AsnValues all;
18
19 type component Tobjclass {}
20
21 external function flatten(inout universal charstring par) ;
22
23 const charstring add_str :=
24 "<MatOp>\n" &
25 "\t<op>add</op>\n" &
26 "\t<arg>\n" &
27 "\t\t<TwoMat>\n" &
28 "\t\t\t<left>\n" &
29 "\t\t\t\t<SEQUENCE_OF>\n" &
30 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
31 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
32 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
33 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
34 "\t\t\t\t</SEQUENCE_OF>\n" &
35 "\t\t\t\t<SEQUENCE_OF>\n" &
36 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
37 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
38 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
39 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
40 "\t\t\t\t</SEQUENCE_OF>\n" &
41 "\t\t\t\t<SEQUENCE_OF>\n" &
42 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
43 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
44 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
45 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
46 "\t\t\t\t</SEQUENCE_OF>\n" &
47 "\t\t\t\t<SEQUENCE_OF>\n" &
48 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
49 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
50 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
51 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
52 "\t\t\t\t</SEQUENCE_OF>\n" &
53 "\t\t\t</left>\n" &
54 "\t\t\t<right>\n" &
55 "\t\t\t\t<SEQUENCE_OF>\n" &
56 "\t\t\t\t\t<INTEGER>3</INTEGER>\n" &
57 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
58 "\t\t\t\t\t<INTEGER>4</INTEGER>\n" &
59 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
60 "\t\t\t\t</SEQUENCE_OF>\n" &
61 "\t\t\t\t<SEQUENCE_OF>\n" &
62 "\t\t\t\t\t<INTEGER>5</INTEGER>\n" &
63 "\t\t\t\t\t<INTEGER>9</INTEGER>\n" &
64 "\t\t\t\t\t<INTEGER>2</INTEGER>\n" &
65 "\t\t\t\t\t<INTEGER>6</INTEGER>\n" &
66 "\t\t\t\t</SEQUENCE_OF>\n" &
67 "\t\t\t\t<SEQUENCE_OF>\n" &
68 "\t\t\t\t\t<INTEGER>5</INTEGER>\n" &
69 "\t\t\t\t\t<INTEGER>3</INTEGER>\n" &
70 "\t\t\t\t\t<INTEGER>5</INTEGER>\n" &
71 "\t\t\t\t\t<INTEGER>8</INTEGER>\n" &
72 "\t\t\t\t</SEQUENCE_OF>\n" &
73 "\t\t\t\t<SEQUENCE_OF>\n" &
74 "\t\t\t\t\t<INTEGER>9</INTEGER>\n" &
75 "\t\t\t\t\t<INTEGER>7</INTEGER>\n" &
76 "\t\t\t\t\t<INTEGER>9</INTEGER>\n" &
77 "\t\t\t\t\t<INTEGER>3</INTEGER>\n" &
78 "\t\t\t\t</SEQUENCE_OF>\n" &
79 "\t\t\t</right>\n" &
80 "\t\t</TwoMat>\n" &
81 "\t</arg>\n" &
82 "\t<rez>\n" &
83 "\t\t<Matrix>\n" &
84 "\t\t\t<SEQUENCE_OF>\n" &
85 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
86 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
87 "\t\t\t\t<INTEGER>4</INTEGER>\n" &
88 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
89 "\t\t\t</SEQUENCE_OF>\n" &
90 "\t\t\t<SEQUENCE_OF>\n" &
91 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
92 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
93 "\t\t\t\t<INTEGER>2</INTEGER>\n" &
94 "\t\t\t\t<INTEGER>6</INTEGER>\n" &
95 "\t\t\t</SEQUENCE_OF>\n" &
96 "\t\t\t<SEQUENCE_OF>\n" &
97 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
98 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
99 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
100 "\t\t\t\t<INTEGER>8</INTEGER>\n" &
101 "\t\t\t</SEQUENCE_OF>\n" &
102 "\t\t\t<SEQUENCE_OF>\n" &
103 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
104 "\t\t\t\t<INTEGER>7</INTEGER>\n" &
105 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
106 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
107 "\t\t\t</SEQUENCE_OF>\n" &
108 "\t\t</Matrix>\n" &
109 "\t</rez>\n" &
110 "</MatOp>\n" &
111 "\n";
112
113 const charstring add_str_ws :=
114 "<MatOpWS>\n" &
115 "\t<op>add</op>\n" &
116 "\t<arg>\n" &
117 "\t\t<TwoMatWS>\n" &
118 "\t\t\t<left>\n" &
119 "\t\t\t\t<SEQUENCE_OF>\n" &
120 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
121 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
122 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
123 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
124 "\t\t\t\t</SEQUENCE_OF>\n" &
125 "\t\t\t\t<SEQUENCE_OF>\n" &
126 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
127 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
128 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
129 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
130 "\t\t\t\t</SEQUENCE_OF>\n" &
131 "\t\t\t\t<SEQUENCE_OF>\n" &
132 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
133 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
134 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
135 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
136 "\t\t\t\t</SEQUENCE_OF>\n" &
137 "\t\t\t\t<SEQUENCE_OF>\n" &
138 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
139 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
140 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
141 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
142 "\t\t\t\t</SEQUENCE_OF>\n" &
143 "\t\t\t</left>\n" &
144 "\t\t\t<right>\n" &
145 "\t\t\t\t<SEQUENCE_OF>\n" &
146 "\t\t\t\t\t<INTEGER>3</INTEGER>\n" &
147 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
148 "\t\t\t\t\t<INTEGER>4</INTEGER>\n" &
149 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
150 "\t\t\t\t</SEQUENCE_OF>\n" &
151 "\t\t\t\t<SEQUENCE_OF>\n" &
152 "\t\t\t\t\t<INTEGER>5</INTEGER>\n" &
153 "\t\t\t\t\t<INTEGER>9</INTEGER>\n" &
154 "\t\t\t\t\t<INTEGER>2</INTEGER>\n" &
155 "\t\t\t\t\t<INTEGER>6</INTEGER>\n" &
156 "\t\t\t\t</SEQUENCE_OF>\n" &
157 "\t\t\t\t<SEQUENCE_OF>\n" &
158 "\t\t\t\t\t<INTEGER>5</INTEGER>\n" &
159 "\t\t\t\t\t<INTEGER>3</INTEGER>\n" &
160 "\t\t\t\t\t<INTEGER>5</INTEGER>\n" &
161 "\t\t\t\t\t<INTEGER>8</INTEGER>\n" &
162 "\t\t\t\t</SEQUENCE_OF>\n" &
163 "\t\t\t\t<SEQUENCE_OF>\n" &
164 "\t\t\t\t\t<INTEGER>9</INTEGER>\n" &
165 "\t\t\t\t\t<INTEGER>7</INTEGER>\n" &
166 "\t\t\t\t\t<INTEGER>9</INTEGER>\n" &
167 "\t\t\t\t\t<INTEGER>3</INTEGER>\n" &
168 "\t\t\t\t</SEQUENCE_OF>\n" &
169 "\t\t\t</right>\n" &
170 "\t\t</TwoMatWS>\n" &
171 "\t</arg>\n" &
172 "\t<rez>\n" &
173 "\t\t<MatrixWS>\n" &
174 "\t\t\t<SEQUENCE_OF>\n" &
175 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
176 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
177 "\t\t\t\t<INTEGER>4</INTEGER>\n" &
178 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
179 "\t\t\t</SEQUENCE_OF>\n" &
180 "\t\t\t<SEQUENCE_OF>\n" &
181 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
182 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
183 "\t\t\t\t<INTEGER>2</INTEGER>\n" &
184 "\t\t\t\t<INTEGER>6</INTEGER>\n" &
185 "\t\t\t</SEQUENCE_OF>\n" &
186 "\t\t\t<SEQUENCE_OF>\n" &
187 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
188 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
189 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
190 "\t\t\t\t<INTEGER>8</INTEGER>\n" &
191 "\t\t\t</SEQUENCE_OF>\n" &
192 "\t\t\t<SEQUENCE_OF>\n" &
193 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
194 "\t\t\t\t<INTEGER>7</INTEGER>\n" &
195 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
196 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
197 "\t\t\t</SEQUENCE_OF>\n" &
198 "\t\t</MatrixWS>\n" &
199 "\t</rez>\n" &
200 "</MatOpWS>\n" &
201 "\n";
202
203 const charstring sub_str :=
204 "<MatOp>\n" &
205 "\t<op>subtract</op>\n" &
206 "\t<arg>\n" &
207 "\t\t<TwoMat>\n" &
208 "\t\t\t<left>\n" &
209 "\t\t\t\t<SEQUENCE_OF>\n" &
210 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
211 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
212 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
213 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
214 "\t\t\t\t</SEQUENCE_OF>\n" &
215 "\t\t\t\t<SEQUENCE_OF>\n" &
216 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
217 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
218 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
219 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
220 "\t\t\t\t</SEQUENCE_OF>\n" &
221 "\t\t\t\t<SEQUENCE_OF>\n" &
222 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
223 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
224 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
225 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
226 "\t\t\t\t</SEQUENCE_OF>\n" &
227 "\t\t\t\t<SEQUENCE_OF>\n" &
228 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
229 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
230 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
231 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
232 "\t\t\t\t</SEQUENCE_OF>\n" &
233 "\t\t\t</left>\n" &
234 "\t\t\t<right>\n" &
235 "\t\t\t\t<SEQUENCE_OF>\n" &
236 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
237 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
238 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
239 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
240 "\t\t\t\t</SEQUENCE_OF>\n" &
241 "\t\t\t\t<SEQUENCE_OF>\n" &
242 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
243 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
244 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
245 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
246 "\t\t\t\t</SEQUENCE_OF>\n" &
247 "\t\t\t\t<SEQUENCE_OF>\n" &
248 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
249 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
250 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
251 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
252 "\t\t\t\t</SEQUENCE_OF>\n" &
253 "\t\t\t\t<SEQUENCE_OF>\n" &
254 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
255 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
256 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
257 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
258 "\t\t\t\t</SEQUENCE_OF>\n" &
259 "\t\t\t</right>\n" &
260 "\t\t</TwoMat>\n" &
261 "\t</arg>\n" &
262 "\t<rez>\n" &
263 "\t\t<Matrix>\n" &
264 "\t\t\t<SEQUENCE_OF>\n" &
265 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
266 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
267 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
268 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
269 "\t\t\t</SEQUENCE_OF>\n" &
270 "\t\t\t<SEQUENCE_OF>\n" &
271 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
272 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
273 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
274 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
275 "\t\t\t</SEQUENCE_OF>\n" &
276 "\t\t\t<SEQUENCE_OF>\n" &
277 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
278 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
279 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
280 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
281 "\t\t\t</SEQUENCE_OF>\n" &
282 "\t\t\t<SEQUENCE_OF>\n" &
283 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
284 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
285 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
286 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
287 "\t\t\t</SEQUENCE_OF>\n" &
288 "\t\t</Matrix>\n" &
289 "\t</rez>\n" &
290 "</MatOp>\n" &
291 "\n";
292
293 const charstring inv_str :=
294 "<MatOp>\n" &
295 "\t<op>invert</op>\n" &
296 "\t<arg>\n" &
297 "\t\t<Matrix>\n" &
298 "\t\t\t<SEQUENCE_OF>\n" &
299 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
300 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
301 "\t\t\t\t<INTEGER>4</INTEGER>\n" &
302 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
303 "\t\t\t</SEQUENCE_OF>\n" &
304 "\t\t\t<SEQUENCE_OF>\n" &
305 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
306 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
307 "\t\t\t\t<INTEGER>2</INTEGER>\n" &
308 "\t\t\t\t<INTEGER>6</INTEGER>\n" &
309 "\t\t\t</SEQUENCE_OF>\n" &
310 "\t\t\t<SEQUENCE_OF>\n" &
311 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
312 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
313 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
314 "\t\t\t\t<INTEGER>8</INTEGER>\n" &
315 "\t\t\t</SEQUENCE_OF>\n" &
316 "\t\t\t<SEQUENCE_OF>\n" &
317 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
318 "\t\t\t\t<INTEGER>7</INTEGER>\n" &
319 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
320 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
321 "\t\t\t</SEQUENCE_OF>\n" &
322 "\t\t</Matrix>\n" &
323 "\t</arg>\n" &
324 "\t<rez>\n" &
325 "\t\t<Matrix>\n" &
326 "\t\t\t<SEQUENCE_OF>\n" &
327 "\t\t\t\t<INTEGER>-467</INTEGER>\n" &
328 "\t\t\t\t<INTEGER>-123</INTEGER>\n" &
329 "\t\t\t\t<INTEGER>79</INTEGER>\n" &
330 "\t\t\t\t<INTEGER>191</INTEGER>\n" &
331 "\t\t\t</SEQUENCE_OF>\n" &
332 "\t\t\t<SEQUENCE_OF>\n" &
333 "\t\t\t\t<INTEGER>171</INTEGER>\n" &
334 "\t\t\t\t<INTEGER>57</INTEGER>\n" &
335 "\t\t\t\t<INTEGER>-39</INTEGER>\n" &
336 "\t\t\t\t<INTEGER>-67</INTEGER>\n" &
337 "\t\t\t</SEQUENCE_OF>\n" &
338 "\t\t\t<SEQUENCE_OF>\n" &
339 "\t\t\t\t<INTEGER>326</INTEGER>\n" &
340 "\t\t\t\t<INTEGER>76</INTEGER>\n" &
341 "\t\t\t\t<INTEGER>-52</INTEGER>\n" &
342 "\t\t\t\t<INTEGER>-122</INTEGER>\n" &
343 "\t\t\t</SEQUENCE_OF>\n" &
344 "\t\t\t<SEQUENCE_OF>\n" &
345 "\t\t\t\t<INTEGER>24</INTEGER>\n" &
346 "\t\t\t\t<INTEGER>8</INTEGER>\n" &
347 "\t\t\t\t<INTEGER>10</INTEGER>\n" &
348 "\t\t\t\t<INTEGER>-18</INTEGER>\n" &
349 "\t\t\t</SEQUENCE_OF>\n" &
350 "\t\t</Matrix>\n" &
351 "\t</rez>\n" &
352 "</MatOp>\n" &
353 "\n";
354
355 const charstring inv_str_ws :=
356 "<MatOpWS>\n" &
357 "\t<op>invert</op>\n" &
358 "\t<arg>\n" &
359 "\t\t<MatrixWS>\n" &
360 "\t\t\t<SEQUENCE_OF>\n" &
361 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
362 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
363 "\t\t\t\t<INTEGER>4</INTEGER>\n" &
364 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
365 "\t\t\t</SEQUENCE_OF>\n" &
366 "\t\t\t<SEQUENCE_OF>\n" &
367 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
368 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
369 "\t\t\t\t<INTEGER>2</INTEGER>\n" &
370 "\t\t\t\t<INTEGER>6</INTEGER>\n" &
371 "\t\t\t</SEQUENCE_OF>\n" &
372 "\t\t\t<SEQUENCE_OF>\n" &
373 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
374 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
375 "\t\t\t\t<INTEGER>5</INTEGER>\n" &
376 "\t\t\t\t<INTEGER>8</INTEGER>\n" &
377 "\t\t\t</SEQUENCE_OF>\n" &
378 "\t\t\t<SEQUENCE_OF>\n" &
379 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
380 "\t\t\t\t<INTEGER>7</INTEGER>\n" &
381 "\t\t\t\t<INTEGER>9</INTEGER>\n" &
382 "\t\t\t\t<INTEGER>3</INTEGER>\n" &
383 "\t\t\t</SEQUENCE_OF>\n" &
384 "\t\t</MatrixWS>\n" &
385 "\t</arg>\n" &
386 "\t<rez>\n" &
387 "\t\t<MatrixWS>\n" &
388 "\t\t\t<SEQUENCE_OF>\n" &
389 "\t\t\t\t<INTEGER>-467</INTEGER>\n" &
390 "\t\t\t\t<INTEGER>-123</INTEGER>\n" &
391 "\t\t\t\t<INTEGER>79</INTEGER>\n" &
392 "\t\t\t\t<INTEGER>191</INTEGER>\n" &
393 "\t\t\t</SEQUENCE_OF>\n" &
394 "\t\t\t<SEQUENCE_OF>\n" &
395 "\t\t\t\t<INTEGER>171</INTEGER>\n" &
396 "\t\t\t\t<INTEGER>57</INTEGER>\n" &
397 "\t\t\t\t<INTEGER>-39</INTEGER>\n" &
398 "\t\t\t\t<INTEGER>-67</INTEGER>\n" &
399 "\t\t\t</SEQUENCE_OF>\n" &
400 "\t\t\t<SEQUENCE_OF>\n" &
401 "\t\t\t\t<INTEGER>326</INTEGER>\n" &
402 "\t\t\t\t<INTEGER>76</INTEGER>\n" &
403 "\t\t\t\t<INTEGER>-52</INTEGER>\n" &
404 "\t\t\t\t<INTEGER>-122</INTEGER>\n" &
405 "\t\t\t</SEQUENCE_OF>\n" &
406 "\t\t\t<SEQUENCE_OF>\n" &
407 "\t\t\t\t<INTEGER>24</INTEGER>\n" &
408 "\t\t\t\t<INTEGER>8</INTEGER>\n" &
409 "\t\t\t\t<INTEGER>10</INTEGER>\n" &
410 "\t\t\t\t<INTEGER>-18</INTEGER>\n" &
411 "\t\t\t</SEQUENCE_OF>\n" &
412 "\t\t</MatrixWS>\n" &
413 "\t</rez>\n" &
414 "</MatOpWS>\n" &
415 "\n";
416
417
418 DECLARE_XER_ENCODERS(ObjectClass.MatOp, matop);
419
420 testcase encode_objclass() runs on Tobjclass
421 {
422 var universal charstring expected;
423
424 expected := add_str;
425 CHECK_METHOD(bxer_enc_matop, ObjectClass.addition, expected);
426 flatten(expected);
427 CHECK_METHOD(cxer_enc_matop, ObjectClass.addition, expected & lf);
428
429 expected := inv_str;
430 CHECK_METHOD(bxer_enc_matop, ObjectClass.inversion, expected);
431 flatten(expected);
432 CHECK_METHOD(cxer_enc_matop, ObjectClass.inversion, expected & lf);
433 }
434
435 testcase decode_objclass() runs on Tobjclass
436 {
437 var ObjectClass.MatOp expected;
438
439 expected := ObjectClass.addition;
440 CHECK_DECODE2(matop, add_str, ObjectClass.MatOp, expected);
441
442 expected := ObjectClass.inversion;
443 CHECK_DECODE2(matop, inv_str, ObjectClass.MatOp, expected);
444 }
445
446
447 DECLARE_XER_ENCODERS(ObjectClassWithSyntax.MatOpWS, matopws);
448
449 testcase encode_objclass_syntax() runs on Tobjclass
450 {
451 var universal charstring expected;
452
453 expected := add_str_ws;
454 CHECK_METHOD(bxer_enc_matopws, ObjectClassWithSyntax.additionWS, expected);
455 flatten(expected);
456 CHECK_METHOD(cxer_enc_matopws, ObjectClassWithSyntax.additionWS, expected & lf);
457
458 expected := inv_str_ws;
459 CHECK_METHOD(bxer_enc_matopws, ObjectClassWithSyntax.inversionWS, expected);
460 flatten(expected);
461 CHECK_METHOD(cxer_enc_matopws, ObjectClassWithSyntax.inversionWS, expected & lf);
462 }
463
464 testcase decode_objclass_syntax() runs on Tobjclass
465 {
466 var ObjectClassWithSyntax.MatOpWS expected;
467
468 expected := ObjectClassWithSyntax.additionWS;
469 CHECK_DECODE2(matopws, add_str_ws, ObjectClassWithSyntax.MatOpWS, expected);
470
471 expected := ObjectClassWithSyntax.inversionWS;
472 CHECK_DECODE2(matopws, inv_str_ws, ObjectClassWithSyntax.MatOpWS, expected);
473 }
474
475 // hmstr stands for handmade-string, NOT hamster !
476 const charstring hmstr_mul :=
477 "<AMatOp>\n" &
478 "\t<oph>mul</oph>\n" &
479 "\t<argh>\n" &
480 "\t\t<twoMat>\n" &
481 "\t\t\t<left>\n" &
482 "\t\t\t\t<SEQUENCE_OF>\n" &
483 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
484 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
485 "\t\t\t\t</SEQUENCE_OF>\n" &
486 "\t\t\t\t<SEQUENCE_OF>\n" &
487 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
488 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
489 "\t\t\t\t</SEQUENCE_OF>\n" &
490 "\t\t\t</left>\n" &
491 "\t\t\t<right>\n" &
492 "\t\t\t\t<SEQUENCE_OF>\n" &
493 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
494 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
495 "\t\t\t\t</SEQUENCE_OF>\n" &
496 "\t\t\t\t<SEQUENCE_OF>\n" &
497 "\t\t\t\t\t<INTEGER>0</INTEGER>\n" &
498 "\t\t\t\t\t<INTEGER>1</INTEGER>\n" &
499 "\t\t\t\t</SEQUENCE_OF>\n" &
500 "\t\t\t</right>\n" &
501 "\t\t</twoMat>\n" &
502 "\t</argh>\n" &
503 "\t<rezh>\n" &
504 "\t\t<matrix>\n" &
505 "\t\t\t<SEQUENCE_OF>\n" &
506 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
507 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
508 "\t\t\t</SEQUENCE_OF>\n" &
509 "\t\t\t<SEQUENCE_OF>\n" &
510 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
511 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
512 "\t\t\t</SEQUENCE_OF>\n" &
513 "\t\t</matrix>\n" &
514 "\t</rezh>\n" &
515 "</AMatOp>\n" &
516 lf
517
518 const charstring hmstr_inv :=
519 "<AMatOp>\n" &
520 "\t<oph>inv</oph>\n" &
521 "\t<argh>\n" &
522 "\t\t<matrix>\n" &
523 "\t\t\t<SEQUENCE_OF>\n" &
524 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
525 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
526 "\t\t\t</SEQUENCE_OF>\n" &
527 "\t\t\t<SEQUENCE_OF>\n" &
528 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
529 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
530 "\t\t\t</SEQUENCE_OF>\n" &
531 "\t\t</matrix>\n" &
532 "\t</argh>\n" &
533 "\t<rezh>\n" &
534 "\t\t<matrix>\n" &
535 "\t\t\t<SEQUENCE_OF>\n" &
536 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
537 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
538 "\t\t\t</SEQUENCE_OF>\n" &
539 "\t\t\t<SEQUENCE_OF>\n" &
540 "\t\t\t\t<INTEGER>0</INTEGER>\n" &
541 "\t\t\t\t<INTEGER>1</INTEGER>\n" &
542 "\t\t\t</SEQUENCE_OF>\n" &
543 "\t\t</matrix>\n" &
544 "\t</rezh>\n" &
545 "</AMatOp>\n" &
546 lf
547
548 DECLARE_XER_ENCODERS(AMatOp, amatop);
549 DECLARE_EXER_ENCODERS(AMatOp,amatop)
550 DECLARE_XER_ENCODERS(ATwoMat, atwomat);
551 DECLARE_EXER_ENCODERS(ATwoMat,atwomat)
552
553 testcase encode_handmade() runs on Tobjclass
554 {
555 var universal charstring expected := hmstr_mul;
556 CHECK_METHOD(bxer_enc_amatop, ObjectClassWithSyntax.matmul, expected);
557 flatten(expected);
558 CHECK_METHOD(cxer_enc_amatop, ObjectClassWithSyntax.matmul, expected & lf);
559
560 expected := hmstr_inv;
561 CHECK_METHOD(bxer_enc_amatop, ObjectClassWithSyntax.matinv, expected);
562 flatten(expected);
563 CHECK_METHOD(cxer_enc_amatop, ObjectClassWithSyntax.matinv, expected & lf);
564 }
565
566 const charstring a2mstr :=
567 "<ATwoMat>\n" &
568 "\t<left>\n" &
569 "\t\t<SEQUENCE_OF>\n" &
570 "\t\t\t<INTEGER>0</INTEGER>\n" &
571 "\t\t\t<INTEGER>0</INTEGER>\n" &
572 "\t\t</SEQUENCE_OF>\n" &
573 "\t\t<SEQUENCE_OF>\n" &
574 "\t\t\t<INTEGER>0</INTEGER>\n" &
575 "\t\t\t<INTEGER>0</INTEGER>\n" &
576 "\t\t</SEQUENCE_OF>\n" &
577 "\t</left>\n" &
578 "\t<right>\n" &
579 "\t\t<SEQUENCE_OF>\n" &
580 "\t\t\t<INTEGER>1</INTEGER>\n" &
581 "\t\t\t<INTEGER>0</INTEGER>\n" &
582 "\t\t</SEQUENCE_OF>\n" &
583 "\t\t<SEQUENCE_OF>\n" &
584 "\t\t\t<INTEGER>0</INTEGER>\n" &
585 "\t\t\t<INTEGER>1</INTEGER>\n" &
586 "\t\t</SEQUENCE_OF>\n" &
587 "\t</right>\n" &
588 "</ATwoMat>\n" &
589 lf;
590
591 testcase decode_handmade() runs on Tobjclass
592 {
593 var ATwoMat a2m := { { {0,0}, {0,0} }, { {1,0}, {0,1} } }
594 CHECK_DECODE2(atwomat, a2mstr, ATwoMat, a2m);
595 // suffix, input, type, expected
596 CHECK_DECODE2(amatop, hmstr_mul, AMatOp, ObjectClassWithSyntax.matmul);
597 CHECK_DECODE2(amatop, hmstr_inv, AMatOp, ObjectClassWithSyntax.matinv);
598 }
599
600 control
601 {
602 execute(encode_handmade());
603 execute(decode_handmade());
604
605 execute(encode_objclass());
606 execute(decode_objclass());
607
608 execute(encode_objclass_syntax());
609 execute(decode_objclass_syntax());
610 }
611
612 }
This page took 0.044475 seconds and 6 git commands to generate.