Last sync 2016.04.01
[deliverable/titan.core.git] / regression_test / XML / TTCNandXML / AnyStuff.ttcnpp
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 AnyStuff {
14
15import from Flattener { function all }
16
17modulepar boolean AnyStuff_verbose := false;
18#define verbose AnyStuff_verbose
19#include "../macros.ttcnin"
20
21type component Anything {}
22
23type record AnyElem {
24 universal charstring Html,
25 integer num
26}
27with {
28 variant (Html) "anyElement"
29}
30
31type record UnivAnyElem {
32 universal charstring Html,
33 integer num
34}
35with {
36 variant (Html) "anyElement"
37}
38
39type record AnyElemList {
40 record of universal charstring elem_list
41 , integer f1 optional
42 , charstring f2 optional
43}
44with {
45 variant (elem_list) "anyElement" // perhaps this should now be variant (elem_list[-])
46}
47
48DECLARE_XER_ENCODERS(AnyElem, ae);
49DECLARE_EXER_ENCODERS(AnyElem, ae);
50
51DECLARE_XER_ENCODERS(UnivAnyElem, uae);
52DECLARE_EXER_ENCODERS(UnivAnyElem, uae);
53
54DECLARE_XER_ENCODERS(AnyElemList, anyt);
55DECLARE_EXER_ENCODERS(AnyElemList, anyt);
56
57const AnyElem ae1 := {
58 "<html><head><title>Hello</title></head><body>nobody</body></html>",
59 42
60}
61
62const UnivAnyElem uae1 := {
63 "<html><head><title>Hello</title></head><body>nobody</body></html>",
64 42
65}
66
67const AnyElemList aybabtu := {
68 { "<all/>", "<your/>", "<base/>", "<are/>", "<belong to='us'/>" }
69 , omit, omit
70}
71
72const AnyElemList aybabtu_expect := {
73 { "<all/>", "<your/>", "<base/>", "<are/>", "<belong to=\"us\"/>" }
74 , omit, omit
75}
76
77const universal charstring ae1str :=
78"<AnyElem>\n" &
79"\t<html><head><title>Hello</title></head><body>nobody</body></html>\n" &
80"\t<num>42</num>\n" &
81"</AnyElem>\n\n";
82
83const universal charstring ae1strb := // for Basic XER
84"<AnyElem>\n" &
85"\t<Html>&lt;html&gt;&lt;head&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;/head&gt;&lt;body&gt;nobody&lt;/body&gt;&lt;/html&gt;</Html>\n" &
86"\t<num>42</num>\n" &
87"</AnyElem>\n\n";
88
89const universal charstring uae1str :=
90"<UnivAnyElem>\n" &
91"\t<html><head><title>Hello</title></head><body>nobody</body></html>\n" &
92"\t<num>42</num>\n" &
93"</UnivAnyElem>\n\n";
94
95const universal charstring uae1strb := // for Basic XER
96"<UnivAnyElem>\n" &
97"\t<Html>&lt;html&gt;&lt;head&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;/head&gt;&lt;body&gt;nobody&lt;/body&gt;&lt;/html&gt;</Html>\n" &
98"\t<num>42</num>\n" &
99"</UnivAnyElem>\n\n";
100
101const universal charstring aybabtustr :=
102"<AnyElemList>\n" &
103"\t<all/>\n" &
104"\t<your/>\n" &
105"\t<base/>\n" &
106"\t<are/>\n" &
107"\t<belong to='us'/>\n" &
108"</AnyElemList>\n\n";
109
110const universal charstring aybabtustr_b :=
111"<AnyElemList>\n" &
112"\t<elem_list>\n" &
113"\t\t<UNIVERSAL_CHARSTRING>&lt;all/&gt;</UNIVERSAL_CHARSTRING>\n" &
114"\t\t<UNIVERSAL_CHARSTRING>&lt;your/&gt;</UNIVERSAL_CHARSTRING>\n" &
115"\t\t<UNIVERSAL_CHARSTRING>&lt;base/&gt;</UNIVERSAL_CHARSTRING>\n" &
116"\t\t<UNIVERSAL_CHARSTRING>&lt;are/&gt;</UNIVERSAL_CHARSTRING>\n" &
117"\t\t<UNIVERSAL_CHARSTRING>&lt;belong to=&apos;us&apos;/&gt;</UNIVERSAL_CHARSTRING>\n" &
118"\t</elem_list>\n" &
119"</AnyElemList>\n\n";
120
121
122testcase enc_anyelement() runs on Anything
123{
124 CHECK_METHOD(bxer_enc_ae, ae1, ae1strb);
125 CHECK_METHOD(exer_enc_ae, ae1, ae1str);
126
127 CHECK_METHOD(bxer_enc_uae, uae1, uae1strb);
128 CHECK_METHOD(exer_enc_uae, uae1, uae1str);
129
130 CHECK_METHOD(bxer_enc_anyt, aybabtu, aybabtustr_b);
131 CHECK_METHOD(exer_enc_anyt, aybabtu, aybabtustr);
132}
133
134testcase dec_anyelement() runs on Anything
135{
136 CHECK_DECODE(bxer_dec_ae, ae1strb, AnyElem, ae1);
137 CHECK_DECODE(exer_dec_ae, ae1str , AnyElem, ae1);
138 CHECK_DECODE(exer_dec_ae, flatten(ae1str), AnyElem, ae1);
139
140 CHECK_DECODE(bxer_dec_uae, uae1strb, UnivAnyElem, uae1);
141 CHECK_DECODE(exer_dec_uae, uae1str , UnivAnyElem, uae1);
142 CHECK_DECODE(exer_dec_uae, flatten(uae1str), UnivAnyElem, uae1);
143
144 var AnyElemList expected := aybabtu;
145 CHECK_DECODE(bxer_dec_anyt, aybabtustr_b, AnyElemList, expected);
146 //No, it should NOT do this: expected.elem_list := {}
147 //This is not an EMBED-VALUES!
148 expected := aybabtu_expect;
149 CHECK_DECODE(exer_dec_anyt, aybabtustr, AnyElemList, expected);
150 CHECK_DECODE(exer_dec_anyt, flatten(aybabtustr), AnyElemList, expected);
151}
152
153control
154{
155 execute(enc_anyelement());
156 execute(dec_anyelement());
157}
158
159}
160with { encode "XML" }
This page took 0.031443 seconds and 5 git commands to generate.